Copiare dati da Amazon RDS per Oracle usando Azure Data Factory o Azure Synapse Analytics

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .

Questo articolo illustra come usare l'attività di copia in Azure Data Factory per copiare dati da un database Amazon RDS per Oracle. Si basa sulla panoramica dell'attività di copia.

Funzionalità supportate

Questo connettore Amazon RDS per Oracle è supportato per le funzionalità seguenti:

Funzionalità supportate IR
attività Copy (source/-) ① ②
Attività Lookup ① ②

(1) Runtime di integrazione di Azure (2) Runtime di integrazione self-hosted

Per un elenco degli archivi dati supportati come origini o sink dall'attività di copia, vedere la tabella relativa agli archivi dati supportati.

In particolare, questo connettore Amazon RDS per Oracle supporta:

  • Le versioni seguenti di un database Amazon RDS per Oracle:
    • Amazon RDS per Oracle 19c R1 (19.1) e versioni successive
    • Amazon RDS per Oracle 18c R1 (18.1) e versioni successive
    • Amazon RDS per Oracle 12c R1 (12.1) e versioni successive
    • Amazon RDS per Oracle 11g R1 (11.1) e versioni successive
  • Copia parallela da un'origine Amazon RDS per Oracle. Per informazioni dettagliate, vedere la sezione Copia parallela da Amazon RDS per Oracle .

Nota

Amazon RDS per il server proxy Oracle non è supportato.

Prerequisiti

Se l'archivio dati si trova all'interno di una rete locale, una rete virtuale di Azure o un cloud privato virtuale di Amazon, è necessario configurare un runtime di integrazione self-hosted per connettersi.

Se l'archivio dati è un servizio dati cloud gestito, è possibile usare Azure Integration Runtime. Se l'accesso è limitato agli indirizzi IP approvati nelle regole del firewall, è possibile aggiungere indirizzi IP del runtime di integrazione di Azure all'elenco elementi consentiti.

È anche possibile usare la funzionalità di runtime di integrazione della rete virtuale gestita in Azure Data Factory per accedere alla rete locale senza installare e configurare un runtime di integrazione self-hosted.

Per altre informazioni sui meccanismi di sicurezza di rete e sulle opzioni supportate da Data Factory, vedere strategie di accesso ai dati.

Il runtime di integrazione fornisce un driver Amazon RDS predefinito per Oracle. Pertanto, non è necessario installare manualmente un driver quando si copiano dati da Amazon RDS per Oracle.

Introduzione

Per eseguire l'attività di copia con una pipeline, è possibile usare uno degli strumenti o SDK seguenti:

Creare un servizio collegato ad Amazon RDS per Oracle usando l'interfaccia utente

Usare la procedura seguente per creare un servizio collegato ad Amazon RDS per Oracle nell'interfaccia utente di portale di Azure.

  1. Passare alla scheda Gestisci nell'area di lavoro di Azure Data Factory o Synapse e selezionare Servizi collegati, quindi fare clic su Nuovo:

  2. Cercare Amazon RDS per Oracle e selezionare il connettore Amazon RDS per Oracle.

    Screenshot of the Amazon RDS for Oracle connector.

  3. Configurare i dettagli del servizio, testare la connessione e creare il nuovo servizio collegato.

    Screenshot of linked service configuration for Amazon RDS for Oracle.

Dettagli di configurazione di Connessione or

Le sezioni seguenti forniscono informazioni dettagliate sulle proprietà usate per definire entità specifiche del connettore Amazon RDS per Oracle.

Proprietà del servizio collegato

Il servizio collegato Amazon RDS per Oracle supporta le proprietà seguenti:

Proprietà Descrizione Richiesto
Tipo La proprietà type deve essere impostata su AmazonRdsForOracle.
connectionString Specifica le informazioni necessarie per connettersi all'istanza di Amazon RDS per Oracle Database.
È anche possibile inserire una password in Azure Key Vault ed estrarre la password configurazione dal stringa di connessione. Per altri dettagli, vedere gli esempi seguenti e Archiviare le credenziali in Azure Key Vault .

Tipo di connessione supportato: è possibile usare Amazon RDS per Oracle SID o Amazon RDS per Oracle Service Name per identificare il database:
- Se si usa il SID: Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;
- Se si usa il nome del servizio: Host=<host>;Port=<port>;ServiceName=<servicename>;User Id=<username>;Password=<password>;
Per le opzioni avanzate di connessione nativa amazon RDS per Oracle, è possibile scegliere di aggiungere una voce in TNSNAMES. File ORA nel server Amazon RDS per Oracle e in Amazon RDS per il servizio collegato Oracle scegliere di usare il tipo di connessione Amazon RDS per Il nome del servizio Oracle e configurare il nome del servizio corrispondente.
connectVia Runtime di integrazione da usare per la connessione all'archivio dati. Per altre informazioni, vedere la sezione Prerequisiti. Se questa proprietà non è specificata, viene usato il tipo Azure Integration Runtime predefinito. No

Se si dispone di più istanze di Amazon RDS per oracle per lo scenario di failover, è possibile creare Amazon RDS per il servizio collegato Oracle e compilare l'host primario, la porta, il nome utente, la password e così via e aggiungere una nuova "Proprietà di connessione aggiuntive" con il nome della proprietà come AlternateServers e il valore , (HostName=<secondary host>:PortNumber=<secondary port>:ServiceName=<secondary service name>) senza perdere le parentesi quadre e prestare attenzione ai due punti (:) come separatore. Ad esempio, il valore seguente di server alternativi definisce due server di database alternativi per il failover di connessione: (HostName=AccountingAmazonRdsForOracleServer:PortNumber=1521:SID=Accounting,HostName=255.201.11.24:PortNumber=1522:ServiceName=ABackup.NA.MyCompany).

Altre proprietà di connessione che è possibile impostare in stringa di connessione in base al caso:

Proprietà Descrizione Valori consentiti
ArraySize Numero di byte che il connettore può recuperare in un singolo round trip di rete. Ad esempio, ArraySize=‭10485760‬.

I valori più grandi aumentano la velocità effettiva riducendo il numero di volte in cui recuperare i dati in rete. I valori più piccoli aumentano il tempo di risposta, in quanto si verifica un ritardo in attesa che il server trasmetta i dati.
Intero compreso tra 1 e 4294967296 (4 GB). Il valore predefinito è 60000. Il valore 1 non definisce il numero di byte, ma indica l'allocazione dello spazio per una sola riga di dati.

Per abilitare la crittografia nella connessione Amazon RDS per Oracle, sono disponibili due opzioni:

  • Per usare Triple-DES Encryption (3DES) e Advanced Encryption Standard (AES), sul lato server Amazon RDS per Oracle passare a Oracle Advanced Security (OAS) e configurare le impostazioni di crittografia. Per informazioni dettagliate, vedere questa documentazione di Oracle. Il connettore Amazon RDS for Oracle Application Development Framework (ADF) negozia automaticamente il metodo di crittografia per usare quello configurato in OAS quando si stabilisce una connessione ad Amazon RDS per Oracle.

  • Per usare TLS:

    1. Ottenere le informazioni sul certificato TLS/SSL. Ottenere le informazioni sul certificato con codifica DER (Distinguished Encoding Rules) del certificato TLS/SSL e salvare l'output (----- Begin Certificate ... End Certificate -----) come file di testo.

      openssl x509 -inform DER -in [Full Path to the DER Certificate including the name of the DER Certificate] -text
      

      Esempio: estrarre informazioni sul certificato da DERcert.cer e quindi salvare l'output in cert.txt.

      openssl x509 -inform DER -in DERcert.cer -text
      Output:
      -----BEGIN CERTIFICATE-----
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      XXXXXXXXX
      -----END CERTIFICATE-----
      
    2. Compilare o keystoretruststore. Il comando seguente crea il truststore file, con o senza password, in formato PKCS-12.

      openssl pkcs12 -in [Path to the file created in the previous step] -out [Path and name of TrustStore] -passout pass:[Keystore PWD] -nokeys -export
      

      Esempio: creare un file PKCS12 truststore denominato MyTrustStoreFile con una password.

      openssl pkcs12 -in cert.txt -out MyTrustStoreFile -passout pass:ThePWD -nokeys -export  
      
    3. Posizionare il truststore file nel computer del runtime di integrazione self-hosted. Ad esempio, posizionare il file in C:\MyTrustStoreFile.

    4. Nel servizio configurare Amazon RDS per Oracle stringa di connessione con EncryptionMethod=1 e il valore corrispondente/TrustStoreTrustStorePassword. Ad esempio, Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;EncryptionMethod=1;TrustStore=C:\\MyTrustStoreFile;TrustStorePassword=<trust_store_password>.

Esempio:

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

Esempio: archiviare la password in Azure Key Vault

{
    "name": "AmazonRdsForOracleLinkedService",
    "properties": {
        "type": "AmazonRdsForOracle",
        "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"
        }
    }
}

Proprietà del set di dati

Questa sezione fornisce un elenco delle proprietà supportate dal set di dati Amazon RDS per Oracle. Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione dei set di dati, vedere Set di dati.

Per copiare dati da Amazon RDS per Oracle, impostare la proprietà type del set di dati su AmazonRdsForOracleTable. Sono supportate le proprietà seguenti.

Proprietà Descrizione Richiesto
Tipo La proprietà type del set di dati deve essere impostata su AmazonRdsForOracleTable.
schema Nome dello schema. No
table Nome della tabella/vista. No
tableName Nome della tabella/vista con schema. Questa proprietà è supportata per garantire la compatibilità con le versioni precedenti. Per i nuovi carichi di lavoro, usare schema e table. No

Esempio:

{
    "name": "AmazonRdsForOracleDataset",
    "properties":
    {
        "type": "AmazonRdsForOracleTable",
        "schema": [],
        "typeProperties": {
            "schema": "<schema_name>",
            "table": "<table_name>"
        },
        "linkedServiceName": {
            "referenceName": "<Amazon RDS for Oracle linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Proprietà dell'attività di copia

Questa sezione fornisce un elenco delle proprietà supportate dall'origine Amazon RDS per Oracle. Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione delle attività, vedere l'articolo sulle pipeline.

Amazon RDS per Oracle come origine

Suggerimento

Per caricare i dati da Amazon RDS per Oracle in modo efficiente usando il partizionamento dei dati, vedere Copia parallela da Amazon RDS per Oracle.

Per copiare dati da Amazon RDS per Oracle, impostare il tipo di origine nell'attività di copia su AmazonRdsForOracleSource. Nella sezione source dell'attività di copia sono supportate le proprietà seguenti.

Proprietà Descrizione Richiesto
Tipo La proprietà type dell'origine dell'attività di copia deve essere impostata su AmazonRdsForOracleSource.
oracleReaderQuery Usare la query SQL personalizzata per leggere i dati. Un esempio è "SELECT * FROM MyTable".
Quando si abilita il caricamento partizionato, è necessario associare tutti i parametri di partizione predefiniti corrispondenti nella query. Per esempi, vedere la sezione Copia parallela da Amazon RDS per Oracle .
No
partitionOptions Specifica le opzioni di partizionamento dei dati usate per caricare i dati da Amazon RDS per Oracle.
I valori consentiti sono: Nessuno (impostazione predefinita), PhysicalPartitionsOfTable e DynamicRange.
Quando un'opzione di partizione è abilitata (ovvero , non None), il grado di parallelismo per caricare simultaneamente i dati da un database Amazon RDS per Oracle viene controllato dall'impostazione nell'attività parallelCopies di copia.
No
partitionSettings Specifica il gruppo di impostazioni per il partizionamento dei dati.
Applicare quando l'opzione di partizione non Noneè .
No
partitionNames Elenco di partizioni fisiche da copiare.
Si applica quando l'opzione di partizione è PhysicalPartitionsOfTable. Se si usa una query per recuperare i dati di origine, associare ?AdfTabularPartitionName nella clausola WHERE. Per un esempio, vedere la sezione Copia parallela da Amazon RDS per Oracle .
No
partitionColumnName Specifica il nome della colonna di origine nel tipo Integer che verrà usata dal partizionamento dell'intervallo per la copia parallela. Se non specificato, la chiave primaria della tabella viene rilevata automaticamente e usata come colonna di partizione.
Si applica quando l'opzione di partizione è DynamicRange. Se si usa una query per recuperare i dati di origine, associare ?AdfRangePartitionColumnName nella clausola WHERE. Per un esempio, vedere la sezione Copia parallela da Amazon RDS per Oracle .
No
partitionUpperBound Valore massimo della colonna della partizione per copiare i dati.
Si applica quando l'opzione di partizione è DynamicRange. Se si usa una query per recuperare i dati di origine, associare ?AdfRangePartitionUpbound nella clausola WHERE. Per un esempio, vedere la sezione Copia parallela da Amazon RDS per Oracle .
No
partitionLowerBound Valore minimo della colonna di partizione da copiare.
Si applica quando l'opzione di partizione è DynamicRange. Se si usa una query per recuperare i dati di origine, associare ?AdfRangePartitionLowbound nella clausola WHERE. Per un esempio, vedere la sezione Copia parallela da Amazon RDS per Oracle .
No

Esempio: copiare dati usando una query di base senza partizione

"activities":[
    {
        "name": "CopyFromAmazonRdsForOracle",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Amazon RDS for Oracle input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "AmazonRdsForOracleSource",
                "oracleReaderQuery": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Copia parallela da Amazon RDS per Oracle

Il connettore Amazon RDS per Oracle offre il partizionamento dei dati predefinito per copiare i dati da Amazon RDS per Oracle in parallelo. È possibile trovare le opzioni di partizionamento dei dati nella scheda Origine dell'attività di copia.

Screenshot of partition options.

Quando si abilita la copia partizionata, il servizio esegue query parallele sull'origine Amazon RDS per Oracle per caricare i dati in base alle partizioni. Il grado di parallelismo è controllato dall'impostazione parallelCopies sull'attività di copia. Ad esempio, se si imposta parallelCopies su quattro, il servizio genera e esegue contemporaneamente quattro query in base all'opzione e alle impostazioni di partizione specificate e ogni query recupera una parte di dati dal database Amazon RDS per Oracle.

È consigliabile abilitare la copia parallela con il partizionamento dei dati, soprattutto quando si caricano grandi quantità di dati dal database Amazon RDS per Oracle. Di seguito sono riportate le configurazioni consigliate per i diversi scenari: Quando si copiano dati in un archivio dati basato su file, viene riordinata la scrittura in una cartella come più file con solo il nome della cartella specificato, nel qual caso le prestazioni sono migliori rispetto alla scrittura in un singolo file.

Scenario Impostazioni consigliate
Caricamento completo da tabelle di grandi dimensioni, con partizioni fisiche. Opzione di partizione: partizioni fisiche della tabella.

Durante l'esecuzione, il servizio rileva automaticamente le partizioni fisiche e copia i dati in base alle partizioni.
Caricamento completo da una tabella di grandi dimensioni, senza partizioni fisiche, mentre con una colonna integer per il partizionamento dei dati. Opzioni di partizione: partizione intervallo dinamico.
Colonna di partizione: specificare la colonna usata per partizionare i dati. Se non specificato, viene utilizzata la colonna chiave primaria.
Caricare una grande quantità di dati usando una query personalizzata, con partizioni fisiche. Opzione di partizione: partizioni fisiche della tabella.
Query: SELECT * FROM <TABLENAME> PARTITION("?AdfTabularPartitionName") WHERE <your_additional_where_clause>.
Nome partizione: specificare i nomi della partizione da cui copiare i dati. Se non specificato, il servizio rileva automaticamente le partizioni fisiche nella tabella specificata nel set di dati Amazon RDS per Oracle.

Durante l'esecuzione, il servizio sostituisce ?AdfTabularPartitionName con il nome effettivo della partizione e invia ad Amazon RDS per Oracle.
Caricare una grande quantità di dati usando una query personalizzata, senza partizioni fisiche, mentre con una colonna integer per il partizionamento dei dati. Opzioni di partizione: partizione intervallo dinamico.
Query: SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>.
Colonna di partizione: specificare la colonna usata per partizionare i dati. È possibile partizionare la colonna con il tipo di dati Integer.
Limite superiore della partizione e limite inferiore della partizione: specificare se si desidera filtrare in base alla colonna di partizione per recuperare i dati solo tra l'intervallo inferiore e quello superiore.

Durante l'esecuzione, il servizio sostituisce ?AdfRangePartitionColumnName, ?AdfRangePartitionUpbounde ?AdfRangePartitionLowbound con il nome di colonna e gli intervalli di valori effettivi per ogni partizione e invia ad Amazon RDS per Oracle.
Ad esempio, se la colonna di partizione "ID" è impostata con il limite inferiore su 1 e il limite superiore come 80, con copia parallela impostata su 4, il servizio recupera i dati per 4 partizioni. Gli ID sono compresi tra [1, 20], [21, 40], [41, 60], e [61, 80], rispettivamente.

Suggerimento

Quando si copiano dati da una tabella non partizionata, è possibile usare l'opzione di partizione "Intervallo dinamico" per eseguire il partizionamento su una colonna integer. Se i dati di origine non hanno tale tipo di colonna, è possibile sfruttare ORA_HASH funzione nella query di origine per generare una colonna e usarla come colonna di partizione.

Esempio: query con partizione fisica

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

Esempio: query con partizione a intervalli dinamici

"source": {
    "type": "AmazonRdsForOracleSource",
    "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>"
    }
}

Proprietà dell'attività Lookup

Per altre informazioni sulle proprietà, vedere Attività Lookup.

Per un elenco degli archivi dati supportati come origini e sink dall'attività di copia, vedere Archivi dati supportati.