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:
- Nástroj pro kopírování dat
- Azure Portal
- Sada .NET SDK
- Sada Python SDK
- Azure PowerShell
- Rozhraní REST API
- Šablona Azure Resource Manageru
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.
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ý:
Vyhledejte Oracle a vyberte konektor Oracle.
Nakonfigurujte podrobnosti o službě, otestujte připojení a vytvořte novou propojenou službu.
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)::
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ů.
Ve službě nakonfigurujte oracle připojovací řetězec pomocí
EncryptionMethod=1
nástroje .
Metoda 2:
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
Ve službě nakonfigurujte připojovací řetězec Oracle s
EncryptionMethod=1
odpovídajícíTrustStore
hodnotou. NapříkladHost=<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ředponudata://
. - 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ěmaBEGIN CERTIFICATE
a za oběma aEND 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ů.
- Hodnota
Metoda 3:
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
truststore
Soubor umístěte na počítač s místním prostředím Integration Runtime. Například umístěte soubor naC:\MyTrustStoreFile
.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 OracleTable hodnotu . |
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 OracleSource hodnotu . |
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 PhysicalPartitionsOfTable mož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 DynamicRange mož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 DynamicRange mož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 DynamicRange mož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 OracleSink hodnotu . |
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í.
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í ?AdfRangePartitionColumnName a ?AdfRangePartitionUpbound za 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í.
Související obsah
Seznam úložišť dat podporovaných jako zdroje a jímky aktivitou kopírování najdete v tématu Podporované úložiště dat.