Condividi tramite


Copiare dati da e in 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 all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!

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

Importante

Il connettore Oracle versione 2.0 offre un supporto Oracle nativo migliorato. Se si sta utilizzando il connettore Oracle versione 1.0 nella soluzione, aggiornare il connettore Oracle prima del 31 luglio 2025. Per informazioni dettagliate sulla differenza tra la versione 2.0 e la versione 1.0, vedere questa sezione .

Funzionalità supportate

Questo connettore Oracle è supportato per le funzionalità seguenti:

Funzionalità supportate IR
Attività di copia (origine/sink) 7.3
Attività Lookup 7.3
Attività script 7.3

① Azure Integration Runtime ② 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, il connettore Oracle supporta:

  • Le versioni seguenti di un database Oracle per la versione 2.0:
    • Oracle Database 19c o versione successiva
  • Le versioni seguenti di un database Oracle per la versione 1.0:
    • Oracle 19c R1 (19.1) e versioni successive
    • Oracle 18c R1 (18.1) e versioni successive
    • Oracle 12c R1 (12.1) e versioni successive
    • Oracle 11g R1 (11.1) e versioni successive
    • Oracle 10g R1 (10.1) e versioni successive
    • Oracle 9i R2 (9.2) e versioni successive
    • Oracle 8i R3 (8.1.7) e versioni successive
    • Oracle Database Cloud Exadata Service
  • Copia parallela da un'origine Oracle. Per informazioni dettagliate, vedere la sezione Copia parallela da Oracle.

Nota

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 del cloud gestito, è possibile usare Azure Integration Runtime. Se l'accesso è limitato solo agli indirizzi IP approvati nelle regole del firewall, è possibile aggiungere IP di Azure Integration Runtime nell'elenco Consentiti.

È anche possibile usare la funzionalità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 Oracle incorporato. Non è pertanto necessario installare manualmente un driver quando si copiano dati da e in Oracle.

Operazioni preliminari

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

Creare un servizio collegato a Oracle usando l'interfaccia utente

Usare la procedura seguente per creare un servizio collegato a Oracle nell'interfaccia utente del 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 Oracle e selezionare il connettore Oracle.

    Screenshot del connettore Oracle.

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

    Screenshot della configurazione del servizio collegato per Oracle.

Dettagli di configurazione del connettore

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

Proprietà del servizio collegato

Il connettore Oracle versione 2.0 supporta TLS 1.3. Fare riferimento a questa sezione per aggiornare la versione del connettore Oracle dalla versione 1.0. Per informazioni dettagliate sulla proprietà, vedere le sezioni corrispondenti.

Versione 2.0

Il servizio collegato Oracle supporta le proprietà seguenti quando si applica la versione 2.0:

Proprietà Descrizione Richiesto
tipo La proprietà type deve essere impostata su Oracle.
Versione Versione specificata. Il valore è 2.0.
server La posizione del database Oracle a cui vuoi connetterti. È possibile fare riferimento alla configurazione delle proprietà del server per specificarla.
tipo di autenticazione Tipo di autenticazione per la connessione al database Oracle. Ora è supportata solo l'autenticazione di base .
nome utente Nome utente del database Oracle.
parola d’ordine Password della database Oracle. Contrassegnare questo campo come SecureString per archiviarlo in modo sicuro. In alternativa, fare riferimento a un segreto archiviato in Azure Key Vault.
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

Altre proprietà di connessione che è possibile impostare nel servizio collegato in base al caso:

Proprietà Descrizione Richiesto Valore predefinito
client di crittografia Specifica il comportamento del client di crittografia. I valori supportati sono accepted, rejected, requestedo required. Tipo: string NO required
encryptionTypesClient Specifica gli algoritmi di crittografia che il client può usare. I valori supportati sono AES128, AES192, AES256, 3DES112, . 3DES168 Tipo: string NO (AES256)
cryptoChecksumClient Specifica il comportamento di integrità dei dati desiderato quando il client si connette a un server. I valori supportati sono accepted, rejected, requestedo required. Tipo: string NO required
cryptoChecksumTypesClient Specifica gli algoritmi di crypto-checksum che il client può usare. I valori supportati sono SHA1, SHA256, SHA384, SHA512. Tipo: string NO (SHA512)
initialLobFetchSize Specifica la quantità che l'origine recupera inizialmente per le colonne LOB. Tipo: int NO 0
fetchSize Specifica il numero di byte che il driver alloca per recuperare i dati in un round-trip del database. Tipo: int NO 10 MB
statementCacheSize Specifica il numero di cursori o istruzioni da memorizzare nella cache per ogni connessione al database. Tipo: int NO 0
stringa di inizializzazione Specifica un comando che viene eseguito immediatamente dopo la connessione al database per gestire le impostazioni della sessione. Tipo: string NO nullo
enableBulkLoad Specifica se utilizzare la copia bulk o l'inserimento batch durante il caricamento dei dati nel database. Tipo: booleano NO vero
supportV1DataTypes Specifica se utilizzare i mapping dei tipi di dati versione 1.0. Non impostare questa opzione su true a meno che non si voglia mantenere la compatibilità retroattiva con i mapping dei tipi di dati della versione 1.0. Tipo: booleano No, questa proprietà è solo per l'uso della compatibilità con le versioni precedenti falso
fetchTswtzAsTimestamp Specifica se il driver restituisce il valore della colonna con il tipo di dati TIMESTAMP WITH TIME ZONE come DateTime o string. Questa impostazione viene ignorata se supportV1DataTypes non è true. Tipo: booleano No, questa proprietà è solo per l'uso della compatibilità con le versioni precedenti vero

Esempio:

{
    "name": "OracleLinkedService",
    "properties": {
        "type": "Oracle",
        "version": "2.0",
        "typeProperties": {
            "server": "<server name>", 
            "username": "<user name>", 
            "password": "<password>", 
            "authenticationType": "<authentication type>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Esempio: archiviare la password in Azure Key Vault

{
    "name": "OracleLinkedService",
    "properties": {
        "type": "Oracle",
        "version": "2.0",
        "typeProperties": {
            "server": "<server name>", 
            "username": "<user name>", 
            "authenticationType": "<authentication type>",
            "password": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

server configurazione delle proprietà

Per server la proprietà , è possibile specificarla in uno dei tre formati seguenti:

Formato Esempio
Descrittore di connessione (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=sales.us.acme.com)))
Denominazione di Easy Connect (Plus) salesserver1:1521/sales.us.example.com
Nome Oracle Net Services (alias TNS) (solo per il runtime di integrazione self-hosted) vendite

L'elenco seguente mostra i parametri supportati usati in server. Se si usano parametri non inclusi nell'elenco seguente, la connessione non riesce.

  • Quando si usa il runtime di integrazione di Azure:

    OSPITE
    PORTA
    PROTOCOLLO
    SERVICE_NAME
    SID
    INSTANCE_NAME
    SERVER
    timeout di connessione
    RETRY_COUNT
    RETRY_DELAY
    SSL_VERSION
    SSL_SERVER_DN_MATCH
    SSL_SERVER_CERT_DN

  • Quando si utilizza il runtime di integrazione self-hosted.

    OSPITE
    PORTA
    PROTOCOLLO
    ABILITARE
    TEMPO_DI_SCADENZA
    FAILOVER
    Bilanciamento del carico
    RECV_BUF_SIZE
    SDU
    Dimensione Buffer Invio
    PERCORSO_SORGENTE
    TIPO_DI_SERVIZIO
    COLOCATION_TAG
    CONNECTION_ID_PREFIX
    modalità di ripristino
    GLOBAL_NAME
    HS
    INSTANCE_NAME
    LIMITE_DEL_PISCINA
    POOL_CONNECTION_CLASS
    POOL_NAME
    PUREZZA_DEL_PISCINA
    RDB_DATABASE
    CHIAVE_DI_FRAMMENTAZIONE
    SHARDING_KEY_ID
    SUPER_SHARDING_KEY
    SERVER
    SERVICE_NAME
    SID
    TUNNEL_SERVICE_NAME
    SSL_CLIENT_AUTHENTICATION
    SSL_CERTIFICATE_ALIAS
    SSL_CERTIFICATE_THUMBPRINT
    SSL_VERSION
    SSL_SERVER_DN_MATCH
    SSL_SERVER_CERT_DN
    Posizione del Portafoglio
    timeout di connessione
    RETRY_COUNT
    RETRY_DELAY
    TRANSPORT_CONNECT_TIMEOUT
    RECV_TIMEOUT
    COMPRESSIONE
    LIVELLI_DI_COMPRESSIONE

Versione 1.0

Il servizio collegato Oracle supporta le proprietà seguenti quando si applica la versione 1.0:

Proprietà Descrizione Richiesto
tipo La proprietà type deve essere impostata su Oracle.
stringa di connessione Specifica le informazioni necessarie per la connessione all'istanza del database Oracle.
È anche possibile inserire una password in Azure Key Vault ed eseguire il pull della configurazione password dalla stringa di connessione. Per altri dettagli, vedere gli esempi seguenti e Archiviare le credenziali in Azure Key Vault.

Tipo di connessione supportato: è possibile usare l'ID di sicurezza Oracle o il nome del servizio Oracle 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 Oracle, è possibile scegliere di aggiungere una voce nel file TNSNAMES. ORA nel computer in cui è installato il runtime di integrazione self-hosted e nel servizio collegato Oracle scegliere di usare il tipo di connessione Oracle Service Name 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

Suggerimento

Se viene visualizzato un errore, "ORA-01025: il parametro UPI non compreso nell'intervallo" e la versione di Oracle è 8i, aggiungere WireProtocolMode=1 alla stringa di connessione. Quindi riprovare.

Se si dispone di più istanze Oracle per lo scenario di failover, è possibile creare 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 nome di proprietà AlternateServers e valore (HostName=<secondary host>:PortNumber=<secondary port>:ServiceName=<secondary service name>) - non dimenticare 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=AccountingOracleServer:PortNumber=1521:SID=Accounting,HostName=255.201.11.24:PortNumber=1522:ServiceName=ABackup.NA.MyCompany).

Altre proprietà di connessione che è possibile impostare nella 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.
Numero 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 esattamente una riga di dati.

Per abilitare la crittografia sulla connessione Oracle, sono disponibili due opzioni:

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

  • Per usare TLS, configurare truststore per l'autenticazione del server SSL applicando uno dei tre metodi seguenti:

    • Metodo 1 (scelta consigliata):

      1. Installare il certificato TLS/SSL importandolo nell'archivio certificati locale. Il driver Oracle predefinito è in grado di caricare il certificato necessario dall'archivio certificati.

      2. Nel servizio configurare la stringa di connessione Oracle con EncryptionMethod=1.

    • Metodo 2:

      1. Ottenere le informazioni sul certificato TLS/SSL. Ottenere le informazioni sui certificati con codifica DER (Distinguished Encoding Rules) o con codifica PEM (Privacy Enhanced Mail) del certificato 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. Nel servizio configurare la stringa di connessione Oracle con EncryptionMethod=1 e con il valore TrustStore corrispondente. Ad esempio, Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;EncryptionMethod=1;TrustStore= data:// -----BEGIN CERTIFICATE-----<certificate content>-----END CERTIFICATE-----

        Nota

        • Il valore del campo TrustStore deve essere preceduto da data://.
        • Quando si specifica il contenuto per più certificati, specificare il contenuto di ogni certificato tra -----BEGIN CERTIFICATE----- e -----END CERTIFICATE-----. Il numero di trattini (-----) deve essere lo stesso prima e dopo sia BEGIN CERTIFICATE che END CERTIFICATE. Ad esempio:
          -----BEGIN CERTIFICATE-----<certificate content 1>-----END CERTIFICATE-----
          -----BEGIN CERTIFICATE-----<certificate content 2>-----END CERTIFICATE-----
          -----BEGIN CERTIFICATE-----<certificate content 3>-----END CERTIFICATE-----
        • Il campo TrustStore supporta il contenuto fino a 8192 caratteri.
    • Metodo 3:

      1. Creare il file truststore con crittografie complesse come 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. Posizionare il file truststore nel computer del runtime di integrazione self-hosted. Ad esempio, posizionare il file in C:\MyTrustStoreFile.

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

Esempio:

{
    "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"
        }
    }
}

Esempio: archiviare la password in 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"
        }
    }
}

Proprietà del set di dati

Questa sezione presenta un elenco delle proprietà supportate dal set di dati 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 e in Oracle, impostare la proprietà type del set di dati su OracleTable. Sono supportate le proprietà seguenti.

Proprietà Descrizione Richiesto
tipo La proprietà type del set di dati deve essere impostata su OracleTable.
schema Nome dello schema. No per l'origine, Sì per il sink
tabella Nome della tabella/vista. No per l'origine, Sì per il sink
nomeTabella 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 per l'origine, Sì per il sink

Esempio:

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

Proprietà dell'attività di copia

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

Oracle come origine

Suggerimento

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

Per copiare dati da Oracle, impostare il tipo di origine nell'attività di copia su OracleSource. 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 OracleSource.
oracleReaderQuery Usare la query SQL personalizzata per leggere i dati. Un esempio è "SELECT * FROM MyTable".
Quando si abilita il carico partizionato, è necessario associare tutti i parametri di partizione predefiniti corrispondenti nella query. Per gli esempi, vedere la sezione Copia parallela da Oracle.
NO
convertiDecimaleInIntero Il tipo Oracle NUMBER con scala zero o non specificata verrà convertito in un numero intero corrispondente. I valori consentiti sono true e false (impostazione predefinita).
Se si usa Oracle versione 2.0, questa proprietà potrà essere impostata solo quando supportV1DataTypes è true.
NO
opzioniDiPartizione Specifica le opzioni di partizionamento dei dati usate per caricare i dati da Oracle.
Valori consentiti: None (predefinito), PhysicalPartitionsOfTable e DynamicRange.
Quando un'opzione di partizione è abilitata (ovvero non None), il grado di parallelismo per caricare simultaneamente i dati da un database Oracle è controllato dall'impostazione parallelCopies nell'attività di copia.
NO
impostazioni di partizione Specifica il gruppo di impostazioni per il partizionamento dei dati.
Applicare quando l'opzione di partizione non è None.
NO
nomi delle partizioni 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 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 Oracle.
NO
partitionUpperBound Valore massimo della colonna di partizione da cui 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 Oracle.
NO
partitionLowerBound Valore minimo della colonna di partizione da cui copiare i dati.
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 Oracle.
NO

Esempio: copiare i dati usando una query di base senza partizione

"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 come sink

Per copiare dati in Oracle, impostare il tipo di sink nell'attività di copia su OracleSink. Nella sezione sink dell'attività di copia sono supportate le proprietà seguenti.

Proprietà Descrizione Richiesto
tipo La proprietà type del sink dell'attività di copia deve essere impostata su OracleSink.
writeBatchSize Inserisce i dati nella tabella SQL quando le dimensioni del buffer raggiunge writeBatchSize.
I valori consentiti sono integer (numero di righe).
No (il valore predefinito è 10.000)
writeBatchTimeout Tempo di attesa per l'operazione di inserimento batch da completare prima del timeout.
I valori consentiti sono un intervallo di tempo. Ad esempio "00:30:00" (30 minuti).
NO
preCopyScript Specificare una query SQL per l'attività di copia da eseguire prima di scrivere i dati in Oracle in ogni esecuzione. È possibile usare questa proprietà per pulire i dati precaricati. NO
 connessioni simultanee massime (maxConcurrentConnections) Limite massimo di connessioni simultanee stabilite all'archivio dati durante l'esecuzione dell'attività. Specificare un valore solo quando si desidera limitare le connessioni simultanee.  No

Esempio:

"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"
            }
        }
    }
]

Copia parallela da Oracle

Il connettore Oracle fornisce il partizionamento dei dati predefinito per copiare dati da Oracle in parallelo. È possibile trovare le opzioni di partizionamento dei dati nella tabella Origine dell'attività di copia.

Screenshot delle opzioni di partizione

Quando si abilita la copia partizionata, il servizio esegue query parallele sull'origine 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 ed esegue simultaneamente quattro query in base all'opzione e alle impostazioni di partizione specificate e ogni query recupera una porzione di dati dal database Oracle.

È consigliabile abilitare la copia parallela con il partizionamento dei dati, soprattutto quando si caricano grandi quantità di dati dal database Oracle. Di seguito sono riportate le configurazioni consigliate per i diversi scenari. Quando si copiano dati in un archivio dati basato su file, è consigliabile scrivere in una cartella come file multipli (specificare solo il nome della cartella); in tal caso, le prestazioni risultano migliori rispetto alla scrittura in un singolo file.

Sceneggiatura Impostazioni consigliate
Caricamento completo da una tabella 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, con una colonna di numeri interi per il partizionamento dei dati. Opzioni di partizione: partizione a intervalli dinamici.
Colonna di partizione: specificare la colonna usata per il partizionamento dei dati. Se non è specificato, viene usata la colonna della 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 Oracle.

Durante l'esecuzione, il servizio sostituisce ?AdfTabularPartitionName con il nome effettivo della partizione e lo invia a Oracle.
Caricare una grande quantità di dati usando una query personalizzata, senza partizioni fisiche, con una colonna integer per il partizionamento dei dati. Opzioni di partizione: partizione a intervalli dinamici.
Query: SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>.
Colonna di partizione: specificare la colonna usata per il partizionamento dei 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, ?AdfRangePartitionUpbound e ?AdfRangePartitionLowbound con il nome della colonna e gli intervalli di valori effettivi per ogni partizione e li invia a Oracle.
Ad esempio, se la colonna di partizione "ID" è impostata con il limite inferiore su 1 e il limite superiore su 80, con la copia parallela impostata su 4, il servizio recupera i dati di 4 partizioni. Gli ID sono rispettivamente compresi tra [1, 20], [21, 40], [41, 60] e [61, 80].

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 la funzione ORA_HASH nella query di origine per generare una colonna e usarla come colonna di partizione.

Esempio: eseguire una query con partizione fisica

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

Mapping dei tipi di dati per Oracle

Quando si copiano dati da e in Oracle, vengono usati i mapping dei tipi di dati provvisori seguenti all'interno del servizio. Per informazioni su come l'attività di copia esegue il mapping dello schema di origine e del tipo di dati al sink, vedere Mapping dello schema e del tipo di dati.

Tipo di dati Oracle Tipo di dati del servizio provvisorio (per la versione 2.0) Tipo di dati del servizio provvisorio (per la versione 1.0)
BFILE Byte[] Byte[]
BINARY_FLOAT Singolo Singolo
BINARY_DOUBLE Doppio Doppio
BLOB Byte[] Byte[]
CHAR Stringa Stringa
CLOB Stringa Stringa
DATTERO Data/Ora Data/Ora
FLOAT (P < 16) Doppio Doppio
FLOAT (P >= 16) Decimale Doppio
INTERVALLO DA ANNO A MESE Int64 Stringa
INTERVALLO DA GIORNO A SECONDO Intervallo di tempo Stringa
LUNGO Stringa Stringa
LONG RAW Byte[] Byte[]
NCHAR Stringa Stringa
NCLOB Stringa Stringa
NUMBER (p,s) Int16, Int32, Int64, Double, Single, Decimal Decimal, String (se p > 28)
NUMBER senza precisione e scala Decimale Doppio
NVARCHAR2 Stringa Stringa
CRUDO Byte[] Byte[]
TIMESTAMP Data/Ora Data/Ora
TIMESTAMP CON FUSO ORARIO LOCALE Data/Ora Data/Ora
TIMESTAMP CON FUSO ORARIO DateTimeOffset (struttura per gestire data e ora con fuso orario) Data/Ora
VARCHAR2 Stringa Stringa
XMLTYPE Stringa Stringa

Nota

Number(p,s) viene mappato al tipo di dati del servizio provvisorio appropriato a seconda della precisione (p) e della scala (s).

Proprietà dell'attività Lookup

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

Aggiornare il connettore Oracle

Ecco i passaggi che consentono di aggiornare il connettore Oracle:

  1. Nella pagina Modifica servizio collegato selezionare 2.0 in Versione e configurare il servizio collegato facendo riferimento alle proprietà del servizio collegato versione 2.0.

    Per le proprietà correlate all'autenticazione, inclusi nome utente e password, specificare i valori originali nei campi corrispondenti nella versione 2.0. Altre proprietà di connessione, ad esempio host, porta e Oracle Service Name/Oracle SID nella versione 1.0 sono ora parametri della server proprietà nella versione 2.0.

    Ad esempio, se si configura il servizio collegato versione 1.0, come illustrato di seguito:

    Screenshot del servizio collegato versione 1.0.

    { 
        "name": "OracleLinkedService", 
        "properties": { 
            "type": "Oracle", 
            "typeProperties": { 
                "connectionString": "host=oraclesample.com;port=1521;servicename=db1" 
            }, 
            "connectVia": { 
                "referenceName": "<name of Integration Runtime>", 
                "type": "IntegrationRuntimeReference" 
            } 
        } 
    }
    

    La configurazione identica del servizio collegato versione 2.0 che usa la denominazione Easy Connect (Plus) è:

    Screenshot del servizio collegato che utilizza la denominazione easy connector (Plus).

    { 
        "name": "OracleLinkedService", 
        "properties": { 
            "type": "Oracle", 
            "version": "2.0", 
            "typeProperties": { 
                "server": "oraclesample.com:1521/db1",  
                "username": "<user name>",  
                "password": "<password>",  
                "authenticationType": "<authentication type>" 
            }, 
            "connectVia": { 
                "referenceName": "<name of Integration Runtime>", 
                "type": "IntegrationRuntimeReference" 
            } 
        } 
    } 
    

    La configurazione del servizio collegato versione 2.0 identica con Descrittore Connettore è:

    Screenshot del servizio collegato con il descrittore del connettore.

    { 
        "name": "OracleLinkedService", 
        "properties": { 
            "type": "Oracle", 
            "version": "2.0", 
            "typeProperties": { 
                "server": "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST= oraclesample.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=db1)))",  
                "username": "<user name>",  
                "password": "<password>",  
                "authenticationType": "<authentication type>" 
            }, 
            "connectVia": { 
                "referenceName": "<name of Integration Runtime>", 
                "type": "IntegrationRuntimeReference" 
            } 
        } 
    } 
    

    Suggerimento

    Azure Key Vault è supportato per la proprietà server. È possibile modificare il codice JSON del servizio collegato per aggiungere il riferimento ad Azure Key Vault, come illustrato di seguito:
    Screenshot dell'uso di Azure Key Vault nel server.

    Tenere presente quanto segue:

    • Se si usa Il nome del servizio Oracle nella versione 1.0, è possibile usare Easy Connect (Plus) Naming or Connector Descriptor come formato del server nella versione 2.0.

    • Se si usa Oracle SID nella versione 1.0, è necessario usare Il descrittore connettore come formato server nella versione 2.0.

    • Per alcune proprietà di connessione aggiuntive nella versione 1.0, vengono fornite proprietà o parametri alternativi nella proprietà nella server versione 2.0. È possibile fare riferimento alla tabella seguente per aggiornare le proprietà della versione 1.0.

      Versione 1.0 Versione 2.0
      metodo di crittografia PROTOCOL (parametro in server)
      tnsnamesfile TNS_ADMIN (variabile di ambiente supportata nel runtime di integrazione self-hosted)
      nomeserver server
      enablebulkload
      Valore: 1, 0
      enableBulkLoad
      Valore: vero, falso
      fetchtswtzastimestamp
      Valore: 1, 0
      fetchTswtzAsTimestamp
      Valore: vero, falso
      alternateservers DESCRIPTION_LIST (parametro in server)
      arraysize fetchSize
      cachedcursorlimit statementCacheSize
      conteggio tentativi di riconnessione RETRY_COUNT (parametro in server)
      stringa di inizializzazione stringa di inizializzazione
      logintimeout CONNECT_TIMEOUT (parametro in server)
      versione del protocollo crittografico SSL_VERSION (parametro in server)
      truststore WALLET_LOCATION (parametro in server)

      Ad esempio, se si usa alternateservers nella versione 1.0, è possibile impostare il DESCRIPTION_LIST parametro nella proprietà server nella versione 2.0:

      Versione 1.0 del servizio di collegamento utilizzando alternateservers:

      {
          "name": "OracleV1",
          "properties": {
              "type": "Oracle",
              "typeProperties": {
                  "connectionString": "host=oraclesample.com;port=1521;servicename=db1;alternateservers=(HostName= oraclesample2.com:PortNumber=1521:SID=db2,HostName=255.201.11.24:PortNumber=1522:ServiceName=db3)"
              }
          }
      }
      

      Versione 2.0 di servizio collegato identico utilizzando il parametro DESCRIPTION_LIST nel descrittore del connettore:

      {
          "name": "OracleV2",
          "properties": {
              "type": "Oracle",
              "version": "2.0",
              "typeProperties": {
                  "server": "(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oraclesample.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=db1)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oraclesample2.com)(PORT=1521))(CONNECT_DATA=(SID=db2)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=255.201.11.24)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=db3))))",
                  "username": "<user name>",  
                  "password": "<password>",  
                  "authenticationType": "<authentication type>" 
              }
          }
      }
      
  2. Il mapping dei tipi di dati per il servizio collegato Oracle versione 2.0 è diverso da quello per la versione 1.0. Per informazioni sul mapping dei tipi di dati più recente, vedere Mapping dei tipi di dati per Oracle.

    Una proprietà supportV1DataTypes di connessione aggiuntiva nella versione 2.0 può ridurre le difficoltà di aggiornamento causate dalle modifiche al tipo di dati. L'impostazione di questa proprietà su true garantisce che il tipo di dati nella versione 2.0 rimanga coerente con la versione 1.0.

Differenze tra Oracle versione 2.0 e versione 1.0

Il connettore Oracle versione 2.0 offre nuove funzionalità ed è compatibile con la maggior parte delle funzionalità della versione 1.0. La tabella seguente illustra le differenze di funzionalità tra la versione 2.0 e la versione 1.0.

Versione 2.0 Versione 1.0
Le seguenti mappature sono utilizzate dai tipi di dati Oracle ai tipi di dati provvisori del servizio utilizzati internamente dal servizio.

NUMERO(p,s) -> Int16, Int32, Int64, Double, Single, Decimal
FLOAT(p)-> Double o Decimal in base alla sua precisione
NUMBER -> Decimal
TIMESTAMP CON FUSO ORARIO -> DateTimeOffset
INTERVALLO ANNO A MESE -> Int64
INTERVALLO DA GIORNO A SECONDO -> Intervallo di Tempo
Le seguenti mappature sono utilizzate dai tipi di dati Oracle ai tipi di dati provvisori del servizio utilizzati internamente dal servizio.

NUMBER(p,s) -> Decimal o String in base alla precisione
FLOAT(p)-> Double
NUMBER -> Doppio
TIMESTAMP CON FUSO ORARIO -> DateTime
INTERVALLO ANNO A MESE -> String
INTERVAL DAY TO SECOND -> String
Supporto di convertDecimalToInteger nell'origine di copia quando supportV1DataTypes è impostato su true. Supporto di convertDecimalToInteger nell'origine di copia. 
L'uso ? di come segnaposto per i parametri di query dell'attività script non è supportato. È possibile usare il parametro denominato ( ad esempio :paramA) o il parametro posizionale (ad esempio :1) come sostituzione. Supporto dell'utilizzo di ? come segnaposto per i parametri di query dell'attività di script. 
Supportare TLS 1.3. TLS 1.3 non è supportato.