Sdílet prostřednictvím


Kopírování dat z a do Oracle pomocí Azure Data Factory nebo Azure Synapse Analytics

PLATÍ PRO: Azure Data Factory Azure Synapse Analytics

Tip

Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.

Tento článek popisuje, jak pomocí aktivity kopírování ve službě Azure Data Factory kopírovat data z databáze Oracle a do databáze Oracle. Vychází z přehledu aktivity kopírování.

Podporované funkce

Tento konektor Oracle je podporovaný pro následující funkce:

Podporované funkce IR
aktivita Copy (zdroj/jímka) (1) (2)
Aktivita Lookup (1) (2)
Aktivita skriptu (1) (2)

(1) Prostředí Azure Integration Runtime (2) Místní prostředí Integration Runtime

Seznam úložišť dat podporovaných jako zdroje nebo jímky aktivitou kopírování najdete v tabulce Podporované úložiště dat.

Konkrétně tento konektor Oracle podporuje:

  • Následující verze databáze Oracle:
    • Oracle 19c R1 (19.1) a vyšší
    • Oracle 18c R1 (18.1) a vyšší
    • Oracle 12c R1 (12.1) a vyšší
    • Oracle 11g R1 (11.1) a vyšší
    • Oracle 10g R1 (10.1) a vyšší
    • Oracle 9i R2 (9.2) a vyšší
    • Oracle 8i R3 (8.1.7) a vyšší
    • Oracle Database Cloud Exadata Service
  • Paralelní kopírování ze zdroje Oracle Podrobnosti najdete v části Paralelní kopie z Oracle .

Poznámka:

Proxy server Oracle se nepodporuje.

Požadavky

Pokud se vaše úložiště dat nachází uvnitř místní sítě, virtuální sítě Azure nebo amazonového privátního cloudu, musíte nakonfigurovat místní prostředí Integration Runtime pro připojení k němu.

Pokud je vaše úložiště dat spravovanou cloudovou datovou službou, můžete použít Azure Integration Runtime. Pokud je přístup omezený na IP adresy schválené v pravidlech brány firewall, můžete do seznamu povolených přidat IP adresy prostředí Azure Integration Runtime.

K přístupu k místní síti bez nutnosti instalace a konfigurace místního prostředí Integration Runtime můžete také použít funkci Runtime integrace spravované virtuální sítě ve službě Azure Data Factory.

Další informace o mechanismech zabezpečení sítě a možnostech podporovaných službou Data Factory najdete v tématu Strategie přístupu k datům.

Prostředí Integration Runtime poskytuje integrovaný ovladač Oracle. Proto při kopírování dat z a do Oracle nemusíte ručně instalovat ovladač.

Začínáme

K provedení aktivita Copy s kanálem můžete použít jeden z následujících nástrojů nebo sad SDK:

Vytvoření propojené služby pro Oracle pomocí uživatelského rozhraní

Pomocí následujícího postupu vytvořte propojenou službu oracle v uživatelském rozhraní webu Azure Portal.

  1. Přejděte na kartu Správa v pracovním prostoru Azure Data Factory nebo Synapse a vyberte Propojené služby a pak klikněte na Nový:

  2. Vyhledejte Oracle a vyberte konektor Oracle.

    Snímek obrazovky s konektorem Oracle

  3. Nakonfigurujte podrobnosti o službě, otestujte připojení a vytvořte novou propojenou službu.

    Snímek obrazovky s konfigurací propojené služby pro Oracle

Podrobnosti konfigurace konektoru

Následující části obsahují podrobnosti o vlastnostech, které slouží k definování entit specifických pro konektor Oracle.

Vlastnosti propojené služby

Propojená služba Oracle podporuje následující vlastnosti:

Vlastnost Popis Povinní účastníci
type Vlastnost typu musí být nastavena na Oracle. Ano
připojovací řetězec Určuje informace potřebné pro připojení k instanci Oracle Database.
Můžete také zadat heslo do služby Azure Key Vault a vytáhnout password konfiguraci z připojovací řetězec. Další podrobnosti najdete v následujících ukázkách a ukládání přihlašovacích údajů ve službě Azure Key Vault .

Podporovaný typ připojení: K identifikaci databáze můžete použít Oracle SID nebo Oracle Service Name :
- Pokud používáte SID: Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;
– Pokud používáte název služby: Host=<host>;Port=<port>;ServiceName=<servicename>;User Id=<username>;Password=<password>;
U pokročilých možností nativního připojení Oracle můžete přidat položku do TNSNAMES. Soubor ORA na počítači, na kterém je nainstalovaný místní prostředí Integration Runtime, a v propojené službě Oracle zvolte použití typu připojení Oracle Service Name a nakonfigurujte odpovídající název služby.
Ano
connectVia Prostředí Integration Runtime , které se má použít pro připojení k úložišti dat. Další informace najdete v části Požadavky . Pokud není zadaný, použije se výchozí prostředí Azure Integration Runtime. No

Tip

Pokud se zobrazí chyba ORA-01025: UPI parameter out of range a vaše verze Oracle je 8i, přidejte WireProtocolMode=1 ji do svého připojovací řetězec. Pak to zkuste znovu.

Pokud máte více instancí Oracle pro scénář převzetí služeb při selhání, můžete vytvořit propojenou službu Oracle a vyplnit primárního hostitele, portu, uživatelského jména, hesla atd. a přidat novou vlastnost "Další vlastnosti připojení" s názvem vlastnosti jako a hodnotou jako AlternateServers (HostName=<secondary host>:PortNumber=<secondary port>:ServiceName=<secondary service name>) - nenechte ujít hranaté závorky a věnovat pozornost dvojtečce (:) jako oddělovače. Například následující hodnota alternativních serverů definuje dva alternativní databázové servery pro převzetí služeb při selhání připojení: (HostName=AccountingOracleServer:PortNumber=1521:SID=Accounting,HostName=255.201.11.24:PortNumber=1522:ServiceName=ABackup.NA.MyCompany).

Další vlastnosti připojení, které můžete nastavit v připojovací řetězec podle vašeho případu:

Vlastnost Popis Povolené hodnoty
ArraySize Počet bajtů, které může konektor načíst v rámci jedné síťové odezvy. Např. ArraySize=‭10485760‬

Větší hodnoty zvyšují propustnost snížením počtu pokusů o načtení dat v síti. Menší hodnoty zvyšují dobu odezvy, protože při čekání serveru na přenos dat dochází k menšímu zpoždění.
Celé číslo od 1 do 4294967296 (4 GB). Výchozí hodnota je 60000. Hodnota 1 nedefinuje počet bajtů, ale označuje přidělení prostoru pro přesně jeden řádek dat.

Pokud chcete povolit šifrování připojení Oracle, máte dvě možnosti:

  • Pokud chcete používat šifrování triple-DES (3DES) a AES (Advanced Encryption Standard) na straně serveru Oracle, přejděte na Oracle Advanced Security (OAS) a nakonfigurujte nastavení šifrování. Podrobnosti najdete v této dokumentaci oracle. Konektor Oracle Application Development Framework (ADF) automaticky vyjedná metodu šifrování, která se použije v OAS při navazování připojení k Oracle.

  • Pokud chcete použít protokol TLS, nastavte truststore ověřování serveru SSL pomocí jedné z následujících tří metod:

    • Metoda 1 (doporučeno)::

      1. Nainstalujte certifikát TLS/SSL tak, že ho naimportujete do místního úložiště certifikátů. Integrovaný ovladač Oracle dokáže načíst potřebný certifikát z úložiště certifikátů.

      2. Ve službě nakonfigurujte oracle připojovací řetězec pomocí EncryptionMethod=1nástroje .

    • Metoda 2:

      1. Získejte informace o certifikátu TLS/SSL. Získejte informace o certifikátu s kódováním kódování DER (DER) nebo rozšířené pošty o ochraně osobních údajů (PEM) vašeho certifikátu TLS/SSL.

        openssl x509 -inform (DER|PEM) -in [Full Path to the DER/PEM Certificate including the name of the DER/PEM Certificate] -text
        
      2. Ve službě nakonfigurujte připojovací řetězec Oracle s EncryptionMethod=1 odpovídající TrustStore hodnotou. Například Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;EncryptionMethod=1;TrustStore= data:// -----BEGIN CERTIFICATE-----<certificate content>-----END CERTIFICATE-----

        Poznámka:

        • Hodnota TrustStore pole by měla mít předponu data://.
        • Při zadávání obsahu pro více certifikátů zadejte obsah každého certifikátu mezi -----BEGIN CERTIFICATE----- a -----END CERTIFICATE-----. Počet pomlček (-----) by měl být stejný před a za oběma BEGIN CERTIFICATE a za oběma a END CERTIFICATE. Příklad:
          -----BEGIN CERTIFICATE-----<certificate content 1>-----END CERTIFICATE-----
          -----BEGIN CERTIFICATE-----<certificate content 2>-----END CERTIFICATE-----
          -----BEGIN CERTIFICATE-----<certificate content 3>-----END CERTIFICATE-----
        • Pole TrustStore podporuje obsah o délce až 8192 znaků.
    • Metoda 3:

      1. truststore Vytvořte soubor se silnými šiframi, jako je AES256.

        openssl pkcs12 -in [Full Path to the DER/PEM Certificate including the name of the DER/PEM Certificate] -out [Path and name of TrustStore] -passout pass:[Keystore PWD] -keypbe AES-256-CBC -certpbe AES-256-CBC -nokeys -export
        
      2. truststore Soubor umístěte na počítač s místním prostředím Integration Runtime. Například umístěte soubor na C:\MyTrustStoreFile.

      3. Ve službě nakonfigurujte připojovací řetězec Oracle s EncryptionMethod=1 odpovídající TrustStore/TrustStorePassword hodnotou. Například, Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;EncryptionMethod=1;TrustStore=C:\\MyTrustStoreFile;TrustStorePassword=<trust_store_password>.

Příklad:

{
    "name": "OracleLinkedService",
    "properties": {
        "type": "Oracle",
        "typeProperties": {
            "connectionString": "Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Příklad: Uložení hesla ve službě Azure Key Vault

{
    "name": "OracleLinkedService",
    "properties": {
        "type": "Oracle",
        "typeProperties": {
            "connectionString": "Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;",
            "password": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Vlastnosti datové sady

Tato část obsahuje seznam vlastností podporovaných datovou sadou Oracle. Úplný seznam oddílů a vlastností dostupných pro definování datových sad najdete v tématu Datové sady.

Pokud chcete kopírovat data z a do Oracle, nastavte vlastnost typu datové sady na OracleTable. Podporují se následující vlastnosti.

Vlastnost Popis Povinní účastníci
type Vlastnost typu datové sady musí být nastavena na OracleTablehodnotu . Ano
schema Název schématu Ne pro zdroj, Ano pro jímku
table Název tabulky nebo zobrazení Ne pro zdroj, Ano pro jímku
tableName Název tabulky nebo zobrazení se schématem Tato vlastnost je podporována pro zpětnou kompatibilitu. Pro nové úlohy použijte schema a table. Ne pro zdroj, Ano pro jímku

Příklad:

{
    "name": "OracleDataset",
    "properties":
    {
        "type": "OracleTable",
        "schema": [],
        "typeProperties": {
            "schema": "<schema_name>",
            "table": "<table_name>"
        },
        "linkedServiceName": {
            "referenceName": "<Oracle linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Vlastnosti aktivity kopírování

Tato část obsahuje seznam vlastností podporovaných zdrojem a jímkou Oracle. Úplný seznam oddílů a vlastností dostupných pro definování aktivit najdete v tématu Kanály.

Oracle jako zdroj

Tip

Pokud chcete efektivně načítat data z Oracle pomocí dělení dat, přečtěte si další informace z paralelní kopie od Oracle.

Chcete-li kopírovat data z Oracle, nastavte typ zdroje v aktivitě kopírování na OracleSource. Ve zdrojové části aktivity kopírování jsou podporovány následující vlastnosti.

Vlastnost Popis Povinní účastníci
type Vlastnost typu zdroje aktivity kopírování musí být nastavena na OracleSourcehodnotu . Ano
oracleReaderQuery Ke čtení dat použijte vlastní dotaz SQL. Příklad: "SELECT * FROM MyTable".
Když povolíte dělené zatížení, musíte připojit všechny odpovídající předdefinované parametry oddílu v dotazu. Příklady najdete v části Paralelní kopírování z Oracle .
No
convertDecimalToInteger Typ Oracle NUMBER s nulovou nebo nezadanou škálou se převede na odpovídající celé číslo. Povolené hodnoty jsou true a false (výchozí). No
partitionOptions Určuje možnosti dělení dat používané k načtení dat z Oracle.
Povolené hodnoty jsou: None (výchozí), PhysicalPartitionsOfTable a DynamicRange.
Pokud je povolená možnost oddílu (tj. ne None), stupeň paralelismu pro souběžné načítání dat z databáze Oracle se řídí parallelCopies nastavením aktivity kopírování.
No
partitionSettings Zadejte skupinu nastavení pro dělení dat.
Použít, pokud možnost oddílu není None.
No
partitionNames Seznam fyzických oddílů, které je potřeba zkopírovat.
Použít, pokud je PhysicalPartitionsOfTablemožnost oddílu . Pokud k načtení zdrojových dat použijete dotaz, připojte se ?AdfTabularPartitionName do klauzule WHERE. Příklad najdete v části Paralelní kopie z Oracle .
No
partitionColumnName Zadejte název zdrojového sloupce v celočíselném typu , který bude použit dělením rozsahu pro paralelní kopírování. Pokud není zadaný, primární klíč tabulky se automaticky rozpozná a použije se jako sloupec oddílu.
Použít, pokud je DynamicRangemožnost oddílu . Pokud k načtení zdrojových dat použijete dotaz, připojte se ?AdfRangePartitionColumnName do klauzule WHERE. Příklad najdete v části Paralelní kopie z Oracle .
No
partitionUpperBound Maximální hodnota sloupce oddílu pro zkopírování dat.
Použít, pokud je DynamicRangemožnost oddílu . Pokud k načtení zdrojových dat použijete dotaz, připojte se ?AdfRangePartitionUpbound do klauzule WHERE. Příklad najdete v části Paralelní kopie z Oracle .
No
partitionLowerBound Minimální hodnota sloupce oddílu pro zkopírování dat.
Použít, pokud je DynamicRangemožnost oddílu . Pokud k načtení zdrojových dat použijete dotaz, připojte se ?AdfRangePartitionLowbound do klauzule WHERE. Příklad najdete v části Paralelní kopie z Oracle .
No

Příklad: Kopírování dat pomocí základního dotazu bez oddílu

"activities":[
    {
        "name": "CopyFromOracle",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Oracle input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "OracleSource",
                "convertDecimalToInteger": false,
                "oracleReaderQuery": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Oracle jako jímka

Chcete-li kopírovat data do Oracle, nastavte typ jímky v aktivitě kopírování na OracleSink. Následující vlastnosti jsou podporovány v části jímky aktivity kopírování.

Vlastnost Popis Povinní účastníci
type Vlastnost typu jímky aktivity kopírování musí být nastavena na OracleSinkhodnotu . Ano
writeBatchSize Vloží data do tabulky SQL, když velikost vyrovnávací paměti dosáhne writeBatchSize.
Povolené hodnoty jsou celé číslo (počet řádků).
Ne (výchozí hodnota je 10 000)
writeBatchTimeout Doba čekání, než se operace dávkového vložení dokončí, než vyprší časový limit.
Povolené hodnoty jsou časový rozsah. Příklad je 00:30:00 (30 minut).
No
preCopyScript Zadejte dotaz SQL pro aktivitu kopírování, který se má spustit před zápisem dat do Oracle v každém spuštění. Tuto vlastnost můžete použít k vyčištění předem načtených dat. No
 maxConcurrentConnections Horní limit souběžných připojení vytvořených k úložišti dat během spuštění aktivity. Zadejte hodnotu pouze v případech, kdy chcete omezit souběžná připojení.  Ne

Příklad:

"activities":[
    {
        "name": "CopyToOracle",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Oracle output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "OracleSink"
            }
        }
    }
]

Paralelní kopírování z Oracle

Konektor Oracle poskytuje integrované dělení dat pro paralelní kopírování dat z Oracle. Možnosti dělení dat najdete na kartě Zdroj aktivity kopírování.

Snímek obrazovky s možnostmi oddílu

Když povolíte dělenou kopii, služba spustí paralelní dotazy na zdroj Oracle, aby načetla data podle oddílů. Paralelní stupeň se řídí parallelCopies nastavením aktivity kopírování. Pokud například nastavíte parallelCopies hodnotu čtyři, služba souběžně vygeneruje a spouští čtyři dotazy na základě zadané možnosti a nastavení oddílu a každý dotaz načte část dat z databáze Oracle.

Doporučujeme povolit paralelní kopírování s dělením dat, zejména pokud načítáte velké množství dat z databáze Oracle. Následující konfigurace jsou navržené pro různé scénáře. Při kopírování dat do souborového úložiště dat se doporučuje zapisovat do složky jako více souborů (zadat pouze název složky), v takovém případě je výkon lepší než zápis do jednoho souboru.

Scénář Navrhovaná nastavení
Úplné načtení z velké tabulky s fyzickými oddíly Možnost oddílu: Fyzické oddíly tabulky.

Během provádění služba automaticky rozpozná fyzické oddíly a kopíruje data podle oddílů.
Úplné načtení z velké tabulky bez fyzických oddílů, zatímco s celočíselnou sloupcem pro dělení dat. Možnosti oddílu: Oddíl dynamického rozsahu
Sloupec oddílu: Zadejte sloupec použitý k rozdělení dat. Pokud není zadaný, použije se sloupec primárního klíče.
Načtěte velké množství dat pomocí vlastního dotazu s fyzickými oddíly. Možnost oddílu: Fyzické oddíly tabulky.
Dotaz: SELECT * FROM <TABLENAME> PARTITION("?AdfTabularPartitionName") WHERE <your_additional_where_clause>.
Název oddílu: Zadejte názvy oddílů, ze které chcete kopírovat data. Pokud není zadaný, služba automaticky rozpozná fyzické oddíly v tabulce, kterou jste zadali v datové sadě Oracle.

Během provádění služba nahradí ?AdfTabularPartitionName skutečným názvem oddílu a odešle do Oracle.
Načtěte velké množství dat pomocí vlastního dotazu bez fyzických oddílů, zatímco u celočíselného sloupce pro dělení dat. Možnosti oddílu: Oddíl dynamického rozsahu
Dotaz: SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>.
Sloupec oddílu: Zadejte sloupec použitý k rozdělení dat. Rozdělení na sloupec můžete provést pomocí celočíselného datového typu.
Horní mez oddílu a dolní mez oddílu: Určete, jestli chcete filtrovat podle sloupce oddílu a načítat data pouze mezi dolním a horním rozsahem.

Během provádění služba nahradí ?AdfRangePartitionColumnNamea ?AdfRangePartitionUpboundza skutečný název sloupce a ?AdfRangePartitionLowbound rozsahy hodnot pro každý oddíl a odešle do Oracle.
Pokud je například sloupec oddílu "ID" nastavený s dolní mezí jako 1 a horní mez jako 80, s paralelní sadou kopírování nastavenou jako 4, služba načte data o 4 oddíly. Jejich ID jsou mezi [1,20], [21, 40], [41, 60] a [61, 80], v uvedeném pořadí.

Tip

Při kopírování dat z tabulky, která není rozdělená do oddílů, můžete použít možnost dynamického rozsahu oddílu k rozdělení podle celočíselného sloupce. Pokud zdrojová data takový typ sloupce nemají, můžete využít funkci ORA_HASH ve zdrojovém dotazu k vygenerování sloupce a jeho použití jako sloupce oddílu.

Příklad: Dotaz s fyzickým oddílem

"source": {
    "type": "OracleSource",
    "query": "SELECT * FROM <TABLENAME> PARTITION(\"?AdfTabularPartitionName\") WHERE <your_additional_where_clause>",
    "partitionOption": "PhysicalPartitionsOfTable",
    "partitionSettings": {
        "partitionNames": [
            "<partitionA_name>",
            "<partitionB_name>"
        ]
    }
}

Příklad: Dotaz s oddílem dynamického rozsahu

"source": {
    "type": "OracleSource",
    "query": "SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>",
    "partitionOption": "DynamicRange",
    "partitionSettings": {
        "partitionColumnName": "<partition_column_name>",
        "partitionUpperBound": "<upper_value_of_partition_column>",
        "partitionLowerBound": "<lower_value_of_partition_column>"
    }
}

Mapování datových typů pro Oracle

Při kopírování dat z a do Oracle se v rámci služby používají následující dočasná mapování datových typů. Informace o tom, jak aktivita kopírování mapuje zdrojové schéma a datový typ na jímku, najdete v tématu Mapování schématu a datového typu.

Datový typ Oracle Dočasný datový typ
BFILE Bajt[]
BLOB Bajt[]
(podporováno pouze v Oracle 10g a vyšší)
UKLÍZEČKA String
CLOB Řetězcové
DATE DateTime
FLOAT Decimal, String (pokud přesnost > 28)
CELÉ ČÍSLO Decimal, String (pokud přesnost > 28)
DLOUHÝ String
LONG RAW Bajt[]
NCHAR String
NCLOB String
ČÍSLO (p,s) Decimal, String (pokud p > 28)
ČÍSLO bez přesnosti a měřítka Hodnota s dvojitou přesností
NVARCHAR2 String
SYROVÝ Bajt[]
ROWID String
ČASOVÉ RAZÍTKO DateTime
ČASOVÉ RAZÍTKO S MÍSTNÍM ČASOVÝM PÁSMEM String
ČASOVÉ RAZÍTKO S ČASOVÝM PÁSMEM String
CELÉ ČÍSLO BEZ ZNAMÉNKA Počet
VARCHAR2 String
XML String

Poznámka:

Datové typy INTERVAL YEAR TO MONTH a INTERVAL DAY TO SECOND nejsou podporované.

Vlastnosti aktivity vyhledávání

Podrobnosti o vlastnostech najdete v aktivitě Vyhledávání.

Seznam úložišť dat podporovaných jako zdroje a jímky aktivitou kopírování najdete v tématu Podporované úložiště dat.