Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
S’APPLIQUE À :
Azure Data Factory
Azure Synapse Analytics
Conseil
Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, la business intelligence et le reporting. Découvrez comment démarrer un nouvel essai gratuitement !
Cet article décrit comment utiliser l’activité de copie dans Azure Data Factory pour copier des données depuis/vers une base de données Oracle. Il s’appuie sur la vue d’ensemble de l’activité de copie.
Important
Le connecteur Oracle version 2.0 offre une prise en charge d’Oracle native améliorée. Si vous utilisez le connecteur Oracle version 1.0 dans votre solution, mettez à niveau le connecteur Oracle comme version 1.0 est à la fin de la phase de support. Votre pipeline échoue après le 31 mars 2026. Pour plus de détails sur les différences entre la version 2.0 et la version 1.0, reportez-vous à cette section.
Fonctionnalités prises en charge
Ce connecteur Oracle est pris en charge pour les capacités suivantes :
| Fonctionnalités prises en charge | IR |
|---|---|
| Activité Copy (source/récepteur) | (1) (2) |
| Activité de recherche | (1) (2) |
| Activité de script | (1) (2) |
① Runtime d’intégration Azure ② Runtime d’intégration auto-hébergé
Pour obtenir la liste des banques de données prises en charge en tant que sources ou récepteurs par l’activité de copie, consultez le tableau banques de données prises en charge.
Plus précisément, ce connecteur Oracle prend en charge :
- Les versions suivantes d’une base de données Oracle pour la version 2.0 :
- Oracle Database 19c et versions ultérieures
- Oracle Database 18c et versions ultérieures
- Oracle Database 12c et versions ultérieures
- Oracle Database 11g et versions ultérieures
- Les versions suivantes d’une base de données Oracle pour la version 1.0 :
- Oracle 19c R1 (19.1) et versions ultérieures
- Oracle 18c R1 (18.1) et versions ultérieures
- Oracle 12c R1 (12.1) et versions ultérieures
- Oracle 11g R1 (11.1) et versions ultérieures
- Oracle 10g R1 (10.1) et versions ultérieures
- Oracle 9i R2 (9.2) et versions ultérieures
- Oracle 8i R3 (8.1.7) et versions ultérieures
- Service Exadata Oracle Database Cloud
- Copie en parallèle à partir d’une source Oracle. Pour en savoir plus, voir Copie en parallèle à partir d’Oracle.
Remarque
Le serveur proxy Oracle n’est pas pris en charge.
Prérequis
Si votre magasin de données se trouve dans un réseau local, un réseau virtuel Azure ou un cloud privé virtuel Amazon, vous devez configurer un runtime d’intégration auto-hébergé pour vous y connecter.
Si votre magasin de données est un service de données cloud managé, vous pouvez utiliser Azure Integration Runtime. Si l’accès est limité aux adresses IP qui sont approuvées dans les règles de pare-feu, vous pouvez ajouter les adresses IP Azure Integration Runtime dans la liste d’autorisation.
Vous pouvez également utiliser la fonctionnalité de runtime d’intégration de réseau virtuel managé dans Azure Data Factory pour accéder au réseau local sans installer et configurer un runtime d’intégration auto-hébergé.
Pour plus d’informations sur les mécanismes de sécurité réseau et les options pris en charge par Data Factory, consultez Stratégies d’accès aux données.
Le runtime d’intégration intègre un pilote Oracle. Par conséquent, vous n’avez pas besoin d’installer manuellement un pilote pour copier des données depuis et vers Oracle.
Bien démarrer
Pour effectuer l’activité de copie avec un pipeline, vous pouvez utiliser l’un des outils ou kits sdk suivants :
- Outil Copier des données
- portail Azure
- Kit de développement logiciel (SDK) .NET
- Kit de développement logiciel (SDK) Python
- Azure PowerShell
- REST API
- Modèle Azure Resource Manager
Créer un service lié à Oracle à l’aide de l’interface utilisateur
Utilisez les étapes suivantes pour créer un service lié à Oracle dans l’interface utilisateur du portail Azure.
Accédez à l’onglet Gérer dans votre espace de travail Azure Data Factory ou Synapse, sélectionnez Services liés, puis cliquez sur Nouveau :
Recherchez Oracle et sélectionnez le connecteur Oracle.
Configurez les informations du service, testez la connexion et créez le nouveau service lié.
Détails de configuration du connecteur
Les sections suivantes fournissent des informations sur les propriétés utilisées pour définir les entités spécifiques du connecteur Oracle.
Propriétés du service lié
Le connecteur Oracle version 2.0 prend en charge TLS 1.3. Reportez-vous à cette section pour mettre à niveau votre version du connecteur Oracle à partir de la version 1.0. Pour plus d’informations sur la propriété, consultez les sections correspondantes.
Version 2.0
Le service lié Oracle prend en charge les propriétés suivantes lors de l’application de la version 2.0 :
| Propriété | Descriptif | Obligatoire |
|---|---|---|
| type | La propriété type doit être définie sur Oracle. | Oui |
| version | Version que vous spécifiez. La valeur est 2.0. |
Oui |
| serveur | Emplacement de la base de données Oracle à laquelle vous souhaitez vous connecter. Vous pouvez faire référence à la configuration des propriétés du serveur pour la spécifier. | Oui |
| type d'authentification | Type d’authentification pour la connexion à Oracle Database. Seule l’authentification de base est prise en charge maintenant. | Oui |
| nom d'utilisateur | Nom d’utilisateur de Oracle Database. | Oui |
| mot de passe | Mot de passe de la base de données Oracle. Marquez ce champ comme SecureString pour le stocker en toute sécurité. Vous pouvez également référencer un secret stocké dans Azure Key Vault. | Oui |
| connectVia | Le runtime d’intégration à utiliser pour se connecter à la banque de données. Pour plus d’informations, consultez la section Conditions préalables. À défaut de spécification, l’Azure Integration Runtime par défaut est utilisé. | Non |
Vous pouvez définir les propriétés de connexion supplémentaires suivantes dans le service lié en fonction de votre cas.
| Propriété | Descriptif | Obligatoire | Valeur par défaut |
|---|---|---|---|
| client de chiffrement | Spécifie le comportement du client de chiffrement. Les valeurs prises en charge sont accepted, , rejectedrequestedou required. Type : chaîne |
Non | required |
| encryptionTypesClient | Spécifie les algorithmes de chiffrement que le client peut utiliser. Les valeurs prises en charge sont AES128, , AES192AES256, 3DES112, 3DES168. Type : chaîne |
Non | (AES256) |
| cryptoChecksumClient | Spécifie le comportement d’intégrité des données souhaité lorsque ce client se connecte à un serveur. Les valeurs prises en charge sont accepted, , rejectedrequestedou required. Type : chaîne |
Non | required |
| cryptoChecksumTypesClient | Spécifie les algorithmes de somme de contrôle cryptographique que le client peut utiliser. Les valeurs prises en charge sont SHA1, , SHA256SHA384, SHA512. Type : chaîne |
Non | (SHA512) |
| initialLobFetchSize | Spécifie la quantité que la source récupère initialement pour les colonnes LOB. Type : int | Non | 0 |
| fetchSize | Spécifie le nombre d’octets que le pilote alloue pour extraire les données dans un aller-retour de base de données. Type : int | Non | 10 Mo |
| statementCacheSize | Spécifie le nombre de curseurs ou d’instructions à mettre en cache pour chaque connexion de base de données. Type : int | Non | 0 |
| initializationString | Spécifie une commande qui est émise immédiatement après la connexion à la base de données pour gérer les paramètres de session. Type : chaîne | Non | zéro |
| enableBulkLoad | Spécifie s’il faut utiliser la copie en bloc ou l’insertion par lot lors du chargement de données dans la base de données. Type : booléen | Non | vrai |
| supportV1DataTypes | Spécifie s’il faut utiliser les mappages de types de données version 1.0. Ne définissez pas cette valeur sur true, sauf si vous souhaitez conserver la compatibilité descendante avec les mappages de types de données de la version 1.0. Type : booléen | Non, cette propriété est destinée à une utilisation de compatibilité descendante uniquement | faux |
| fetchTswtzAsTimestamp | Spécifie si le pilote retourne une valeur de colonne avec le type de données HORODATEUR AVEC FUSEAU HORAIRE en tant que Date/Heure ou chaîne. Ce paramètre est ignoré si supportV1DataTypes n’est pas vrai. Type : booléen | Non, cette propriété est destinée à une utilisation de compatibilité descendante uniquement | vrai |
Exemple :
{
"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"
}
}
}
Exemple : stockage du mot de passe dans 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"
}
}
}
Configuration de propriété server
Pour server la propriété, vous pouvez la spécifier dans l’un des trois formats suivants :
| Format | Exemple : |
|---|---|
| Connecter le descripteur | (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=sales.us.acme.com))) |
| Dénomination Easy Connect (Plus) | salesserver1:1521/sales.us.example.com |
| Nom Oracle Net Services (alias TNS) ( uniquement pour le runtime d’intégration auto-hébergé) | ventes |
La liste suivante montre les paramètres pris en charge utilisés dans server. Si vous utilisez des paramètres qui ne figurent pas dans la liste suivante, votre connexion échoue.
Lors de l’utilisation du runtime d’intégration Azure :
HOST
PORT
PROTOCOLE
SERVICE_NAME
SID
INSTANCE_NAME
SERVER
DÉLAI_DE_CONNEXION
Nombre de tentatives
Délai de nouvelle tentative
SSL_VERSION
SSL_SERVER_DN_MATCH
SSL_SERVER_CERT_DNLors de l’utilisation du runtime d’intégration auto-hébergé :
HOST
PORT
PROTOCOLE
ENABLE
TEMPS_D'EXPIRATION
FAILOVER
Équilibrage de charge
RECV_BUF_SIZE
Service de Documentation Universitaire
SEND_BUF_SIZE
SOURCE_ROUTE
Type de Service
COLOCATION_TAG
CONNECTION_ID_PREFIX
FAILOVER_MODE
GLOBAL_NAME
HS
INSTANCE_NAME
LIMITE_DE_LA_PISCINE
POOL_CONNECTION_CLASS
NOM_DE_PISCINE
Pureté de la Piscine
BASE DE DONNÉES RDB
SHARDING_KEY
SHARDING_KEY_ID
SUPER_SHARDING_KEY
SERVER
SERVICE_NAME
SID
TUNNEL_SERVICE_NAME
Authentification du Client SSL
SSL_CERTIFICATE_ALIAS
SSL_CERTIFICATE_THUMBPRINT (Empreinte numérique du certificat SSL)
SSL_VERSION
SSL_SERVER_DN_MATCH
SSL_SERVER_CERT_DN
EMPLACEMENT_PORTFEUILLE
DÉLAI_DE_CONNEXION
Nombre de tentatives
Délai de nouvelle tentative
TRANSPORT_CONNECT_TIMEOUT
RECV_TIMEOUT
COMPRESSION
NIVEAUX_DE_COMPRESSION
Version 1.0
Le service lié Oracle prend en charge les propriétés suivantes lors de l’application de la version 1.0 :
| Propriété | Descriptif | Obligatoire |
|---|---|---|
| type | La propriété type doit être définie sur Oracle. | Oui |
| connectionString | Spécifie les informations requises pour se connecter à l’instance Oracle Database. Vous pouvez également définir un mot de passe dans Azure Key Vault et extraire la configuration password de la chaîne de connexion. Pour plus d’informations, reportez-vous aux exemples suivants et à Stocker des informations d’identification dans Azure Key Vault. Type de connexion pris en charge : vous pouvez utiliser le SID Oracle ou le nom du service Oracle pour identifier votre base de données : - Si vous utilisez le SID : Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;- Si vous utilisez le nom du service : Host=<host>;Port=<port>;ServiceName=<servicename>;User Id=<username>;Password=<password>;Comme options avancées de connexion native Oracle, vous pouvez choisir d’ajouter une entrée dans le fichier TNSNAMES.ORA sur la machine sur laquelle le runtime d’intégration auto-hébergé est installé, et dans le service lié Oracle, choisissez d’utiliser le type de connexion avec nom de service Oracle et configurez le nom de service correspondant. |
Oui |
| connectVia | Le runtime d’intégration à utiliser pour se connecter à la banque de données. Pour plus d’informations, consultez la section Conditions préalables. À défaut de spécification, l’Azure Integration Runtime par défaut est utilisé. | Non |
Conseil
Si vous obtenez une erreur, « ORA-01025 : paramètre UPI hors plage » et votre version Oracle est 8i, ajoutez WireProtocolMode=1 à votre chaîne de connexion. puis réessayez.
Si vous avez plusieurs instances Oracle pour le scénario de basculement, vous pouvez créer un service lié à Oracle et renseigner l’hôte principal, le port, le nom d’utilisateur, le mot de passe, etc., et ajouter une nouvelle propriété « Propriétés de connexion supplémentaires » avec le nom AlternateServers et la valeur (HostName=<secondary host>:PortNumber=<secondary port>:ServiceName=<secondary service name>). N’oubliez pas les crochets et faites attention aux signes deux-points (:) utilisés comme séparateur. À titre d’exemple, la valeur suivante de serveurs secondaires définit deux serveurs de base de données de remplacement pour le basculement de connexion : (HostName=AccountingOracleServer:PortNumber=1521:SID=Accounting,HostName=255.201.11.24:PortNumber=1522:ServiceName=ABackup.NA.MyCompany).
Autres propriétés de connexion que vous pouvez définir dans la chaîne de connexion selon votre cas :
| Propriété | Descriptif | Valeurs autorisées |
|---|---|---|
| ArraySize | Nombre d’octets que le connecteur peut extraire dans un aller-retour réseau. Par exemple, ArraySize=10485760.Des valeurs plus élevées augmentent le débit en réduisant le nombre de fois que des données sont extraites sur le réseau. Des valeurs réduites augmentent le temps de réponse, car il y a moins de retard à attendre que le serveur transmette les données. |
Entier compris entre 1 et 4294967296 (4 Go). La valeur par défaut est 60000. La valeur 1 ne définit pas le nombre d’octets, mais indique une allocation d’espace pour une seule ligne de données. |
Pour activer le chiffrement sur la connexion Oracle, deux options s’offrent à vous :
Pour utiliser le chiffrement 3DES (Triple-DES) et AES (Advanced Encryption Standard), du côté du serveur Oracle, accédez à Oracle Advanced Security (OAS) et configurez les paramètres de chiffrement. Pour plus d’informations, consultez cette documentation Oracle. Le connecteur Oracle ADF (Application Development Framework) négocie automatiquement la méthode de chiffrement pour utiliser celle que vous configurez dans OAS lors de l’établissement d’une connexion à Oracle.
Pour utiliser TLS, configurez
truststorepour l’authentification du serveur SSL en appliquant l’une des trois méthodes suivantes :Méthode 1 (recommandé):
Installez le certificat TLS/SSL en l’important dans le magasin de certificats local. Le pilote Oracle intégré est en mesure de charger le certificat nécessaire à partir du magasin de certificats.
Dans le service, configurez la chaîne de connexion Oracle avec
EncryptionMethod=1.
Méthode 2 :
Obtenez les informations de certificat TLS/SSL. Obtenez les informations de certificat encodées par des règles d’encodage unique (DER) ou encodées par le protocole PEM (Privacy Enhanced Mail) de votre certificat TLS/SSL.
openssl x509 -inform (DER|PEM) -in [Full Path to the DER/PEM Certificate including the name of the DER/PEM Certificate] -textDans le service, configurez la chaîne de connexion Oracle avec
EncryptionMethod=1et la valeur deTrustStorecorrespondante. Par exemple :Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;EncryptionMethod=1;TrustStore= data:// -----BEGIN CERTIFICATE-----<certificate content>-----END CERTIFICATE-----Remarque
- La valeur du champ
TrustStoredoit être précédée dedata://. - Lorsque vous spécifiez du contenu pour plusieurs certificats, spécifiez le contenu de chaque certificat entre
-----BEGIN CERTIFICATE-----et-----END CERTIFICATE-----. Le nombre de tirets (-----) doit être le même avant et aprèsBEGIN CERTIFICATEetEND CERTIFICATE. Exemple :
-----BEGIN CERTIFICATE-----<certificate content 1>-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----<certificate content 2>-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----<certificate content 3>-----END CERTIFICATE----- - Le champ
TrustStoreprend en charge le contenu jusqu’à 8192 caractères.
- La valeur du champ
Méthode 3 :
Créez le fichier
truststoreavec des chiffrements forts comme 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 -exportPlacez le fichier
truststoresur l’ordinateur runtime d’intégration auto-hébergé. Par exemple, placez le fichier àC:\MyTrustStoreFile.Dans le service, configurez la chaîne de connexion Oracle avec
EncryptionMethod=1et la valeur deTrustStore/TrustStorePasswordcorrespondante. Par exemple :Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;EncryptionMethod=1;TrustStore=C:\\MyTrustStoreFile;TrustStorePassword=<trust_store_password>.
Exemple :
{
"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"
}
}
}
Exemple : stockage du mot de passe dans 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"
}
}
}
Propriétés du jeu de données
Cette section fournit la liste des propriétés prises en charge par le jeu de données Oracle. Pour obtenir la liste complète des sections et propriétés disponibles pour la définition de jeux de données, consultez l’article sur les jeux de données.
Pour copier des données depuis et vers Oracle, affectez la valeur OracleTable à la propriété type du jeu de données. Les propriétés suivantes sont prises en charge.
| Propriété | Descriptif | Obligatoire |
|---|---|---|
| type | La propriété type du jeu de données doit être définie sur OracleTable. |
Oui |
| schéma | Nom du schéma. | Non pour Source, Oui pour Récepteur |
| table | Nom de la table/vue. | Non pour Source, Oui pour Récepteur |
| tableName | Nom de la table/vue avec schéma. Cette propriété est prise en charge pour la compatibilité descendante. Pour les nouvelles charges de travail, utilisez schema et table. |
Non pour Source, Oui pour Récepteur |
Exemple :
{
"name": "OracleDataset",
"properties":
{
"type": "OracleTable",
"schema": [],
"typeProperties": {
"schema": "<schema_name>",
"table": "<table_name>"
},
"linkedServiceName": {
"referenceName": "<Oracle linked service name>",
"type": "LinkedServiceReference"
}
}
}
Propriétés de l’activité de copie
Cette section fournit la liste des propriétés prises en charge par Oracle en tant que source et récepteur. Pour obtenir la liste complète des sections et propriétés disponibles pour la définition des activités, consultez Pipelines.
Oracle en tant que source
Conseil
Pour savoir comment charger efficacement des données à partir d’Oracle à l’aide du partitionnement, voir Copie en parallèle à partir d’Oracle.
Pour copier des données à partir d’Oracle, définissez le type de source dans l’activité de copie sur OracleSource. Les propriétés suivantes sont prises en charge dans la section source de l’activité de copie.
| Propriété | Descriptif | Obligatoire |
|---|---|---|
| type | La propriété type de la source de l’activité de copie doit être définie sur OracleSource. |
Oui |
| oracleReaderQuery | Utiliser la requête SQL personnalisée pour lire les données. par exemple "SELECT * FROM MyTable". Notez que la requête ne doit pas se terminer par un point-virgule (;). Lorsque vous activez la charge partitionnée, vous devez utiliser les paramètres de partition intégrés correspondants dans votre requête. Pour consulter des exemples, voir la section Copie en parallèle à partir d’Oracle. |
Non |
| convertirDécimalEnEntier | Le type Oracle NUMBER avec une échelle zéro ou non spécifiée est converti en entier correspondant. Les valeurs autorisées sont True et False (par défaut). Si vous utilisez Oracle version 2.0, cette propriété est uniquement autorisée à être définie lorsque la prise en chargeV1DataTypes est vraie. |
Non |
| options de partition | Spécifie les options de partitionnement des données utilisées pour charger des données à partir d’Oracle. Les valeurs autorisées sont les suivantes : None (valeur par défaut), PhysicalPartitionsOfTable et DynamicRange. Lorsqu’une option de partition est activée (autrement dit, pas None), le degré de parallélisme pour charger simultanément des données à partir d’une base de données Oracle est contrôlé par le paramètre parallelCopies de l’activité de copie. |
Non |
| paramètres de partition | Spécifiez le groupe de paramètres pour le partitionnement des données. S’applique lorsque l’option de partitionnement n’est pas None. |
Non |
| Noms de partition | La liste des partitions physiques qui doivent être copiées. S’applique lorsque l’option de partitionnement est PhysicalPartitionsOfTable. Si vous utilisez une requête pour récupérer des données sources, utilisez ?AdfTabularPartitionName dans la clause WHERE. Pour consulter un exemple, voir la section Copie en parallèle à partir d’Oracle. |
Non |
| partitionColumnName | Spécifiez le nom de la colonne source dans type entier qu’utilisera le partitionnement par plages de valeurs pour la copie en parallèle. S’il n’est pas spécifié, la clé primaire de la table sera automatiquement détectée et utilisée en tant que colonne de partition. S’applique lorsque l’option de partitionnement est DynamicRange. Si vous utilisez une requête pour récupérer des données sources, utilisez ?AdfRangePartitionColumnName dans la clause WHERE. Pour consulter un exemple, voir la section Copie en parallèle à partir d’Oracle. |
Non |
| partitionUpperBound | Valeur maximale de la colonne de partition à partir de laquelle copier des données. S’applique lorsque l’option de partitionnement est DynamicRange. Si vous utilisez une requête pour récupérer des données sources, utilisez ?AdfRangePartitionUpbound dans la clause WHERE. Pour consulter un exemple, voir la section Copie en parallèle à partir d’Oracle. |
Non |
| partitionLowerBound | Valeur minimale de la colonne de partition à partir de laquelle copier des données. S’applique lorsque l’option de partitionnement est DynamicRange. Si vous utilisez une requête pour récupérer des données sources, utilisez ?AdfRangePartitionLowbound dans la clause WHERE. Pour consulter un exemple, voir la section Copie en parallèle à partir d’Oracle. |
Non |
| numberPrecision | Spécifiez le nombre maximal de chiffres décimaux significatifs. Les valeurs autorisées sont comprises entre 1 et 256. La valeur par défaut est 256 si elle n’est pas spécifiée. Cette propriété est prise en charge dans Oracle version 2.0. Elle s’applique uniquement aux types NUMBER qui n’ont pas de précision et de mise à l’échelle explicitement définies dans la base de données Oracle. Il peut être défini quand supportV1DataTypes n’est pas true. Si vous utilisez le runtime d’intégration auto-hébergé, sa version doit être 5.56 ou ultérieure. |
Non |
| numberScale | Spécifiez le nombre de chiffres après la virgule décimale. Les valeurs autorisées sont comprises entre 0 et 130 et doivent être inférieures ou égales à la précision. La valeur par défaut est 130 si elle n’est pas spécifiée. Cette propriété est prise en charge dans Oracle version 2.0. Elle s’applique uniquement aux types NUMBER qui n’ont pas de précision et de mise à l’échelle explicitement définies dans la base de données Oracle. Il peut être défini quand supportV1DataTypes n’est pas true. Si vous utilisez le runtime d’intégration auto-hébergé, sa version doit être 5.56 ou ultérieure. |
Non |
Exemple : copie de données à l’aide de la requête de base sans partition
"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 en tant que récepteur
Pour copier des données vers Oracle, définissez OracleSink comme type de récepteur dans l’activité de copie. Les propriétés suivantes sont prises en charge dans la section récepteur de l’activité de copie.
| Propriété | Descriptif | Obligatoire |
|---|---|---|
| type | La propriété type du récepteur d’activité de copie doit être définie sur OracleSink. |
Oui |
| writeBatchSize | Insère des données dans la table SQL quand la taille de la mémoire tampon atteint writeBatchSize.Valeurs autorisées : integer (nombre de lignes). |
Non (valeur par défaut : 10 000) |
| writeBatchTimeout | Temps d’attente avant expiration de l’opération d’insertion de lot. Valeurs autorisées : timespan. Exemple : 00:30:00 (30 minutes). |
Non |
| preCopyScript | Spécifiez une requête SQL pour l’activité de copie à exécuter avant l’écriture de données dans Oracle à chaque exécution. Vous pouvez utiliser cette propriété pour nettoyer des données préchargées. | Non |
| maxConcurrentConnections | La limite supérieure de connexions simultanées établies au magasin de données pendant l’exécution de l’activité. Spécifiez une valeur uniquement lorsque vous souhaitez limiter les connexions simultanées. | Non |
Exemple :
"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"
}
}
}
]
Copie en parallèle à partir d’Oracle
Le connecteur Oracle propose un partitionnement de données intégré pour copier des données à partir d’Oracle en parallèle. Vous trouverez des options de partitionnement de données dans l’onglet Source de l’activité de copie.
Lorsque vous activez la copie partitionnée, le service exécute des requêtes en parallèle sur votre source Oracle pour charger des données par partitions. Le degré de parallélisme est contrôlé via le paramètre parallelCopies sur l’activité de copie. Par exemple, si vous définissez parallelCopies sur quatre, le service génère et exécute simultanément quatre requêtes basées sur l’option de partition et les paramètres que vous avez spécifiés, chacune récupérant des données à partir de votre base de données Oracle.
Il vous est recommandé d’activer la copie en parallèle avec partitionnement des données notamment lorsque vous chargez une grande quantité de données à partir de votre base de données Oracle. Voici quelques suggestions de configurations pour différents scénarios. Lors de la copie de données dans un magasin de données basé sur un fichier, il est recommandé d’écrire les données dans un dossier sous la forme de plusieurs fichiers (spécifiez uniquement le nom du dossier). Les performances seront meilleures qu’avec l’écriture de données dans un seul fichier.
| Scénario | Paramètres suggérés |
|---|---|
| Chargement complet à partir d’une table volumineuse, avec des partitions physiques. |
Option de partition : partitions physiques de la table. Pendant l’exécution, le service détecte automatiquement les partitions physiques et copie les données par partition. |
| Chargement complet d’une table volumineuse, sans partitions physiques, avec une colonne entière pour le partitionnement des données. |
Options de partition : partition dynamique par spécification de plages de valeurs. Colonne de partition : Spécifiez la colonne utilisée pour partitionner les données. Si la valeur n’est pas spécifiée, la colonne de la clé primaire est utilisée. |
| Chargement d’une grande quantité de données à l’aide d’une requête personnalisée, avec des partitions physiques. |
Option de partition : partitions physiques de la table. Requête: SELECT * FROM <TABLENAME> PARTITION("?AdfTabularPartitionName") WHERE <your_additional_where_clause>.Nom de la partition : spécifiez le ou les noms de partition à partir duquel copier des données. Si ce n’est pas spécifié, le service détecte automatiquement les partitions physiques de la table que vous avez spécifiée dans le jeu de données Oracle. Pendant l’exécution, le service remplace ?AdfTabularPartitionName par le nom de la partition réel et l’envoie à Oracle. |
| Chargement d’une grande quantité de données à l’aide d’une requête personnalisée, sans partitions physiques, et avec une colonne entière pour le partitionnement des données. |
Options de partition : partition dynamique par spécification de plages de valeurs. Requête: SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>.Colonne de partition : Spécifiez la colonne utilisée pour partitionner les données. Vous pouvez procéder au partitionnement par rapport à la colonne avec le type de données entier. Limite supérieure de la partition et limite inférieure de la partition : indiquez si vous souhaitez filtrer le contenu par rapport à la colonne de partition pour récupérer uniquement les données entre les plages inférieure et supérieure. Lors de l’exécution, le service remplace ?AdfRangePartitionColumnName, ?AdfRangePartitionUpbound et ?AdfRangePartitionLowbound par le nom réel de la colonne et les plages de valeurs de chaque partition et les envoie à Oracle. Par exemple, si votre colonne de partition « ID » est définie sur une limite inférieure de 1 et une limite supérieure de 80, avec une copie en parallèle définie sur 4, le service récupère les données via 4 partitions. Les ID sont inclus entre [1,20], [21, 40], [41, 60] et [61, 80], respectivement. |
Conseil
Lorsque vous copiez des données à partir d’une table non partitionnée, vous pouvez utiliser l’option de partition « Plage dynamique » afin de partitionner par rapport à une colonne d’entiers. Si vos données sources n’incluent pas un tel type de colonne, vous pouvez tirer parti de la fonction ORA_HASH dans une requête source pour générer une colonne et l’utiliser comme colonne de partition.
Exemple : requête avec partition physique
"source": {
"type": "OracleSource",
"query": "SELECT * FROM <TABLENAME> PARTITION(\"?AdfTabularPartitionName\") WHERE <your_additional_where_clause>",
"partitionOption": "PhysicalPartitionsOfTable",
"partitionSettings": {
"partitionNames": [
"<partitionA_name>",
"<partitionB_name>"
]
}
}
Exemple : requête avec partition dynamique par spécification de plages de valeurs
"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>"
}
}
Mappage de type de données pour Oracle
Lorsque vous copiez des données depuis et vers Oracle, les mappages de types de données intermédiaires suivants sont utilisés dans le service. Pour découvrir comment l’activité de copie mappe le schéma et le type de données la source au récepteur, consultez Mappage de schéma dans l’activité de copie.
| Type de données Oracle | Type de données de service intermédiaire (pour la version 2.0) | Type de données de service intermédiaire (pour la version 1.0) |
|---|---|---|
| BFILE | Byte[] | Byte[] |
| BINARY_FLOAT | Célibataire | Célibataire |
| BINARY_DOUBLE | Double | Double |
| BLOB | Byte[] | Byte[] |
| CHAR | Chaîne | Chaîne |
| CLOB | Chaîne | Chaîne |
| DATE | Date et heure | Date et heure |
| FLOTTANT (P < 16) | Double | Double |
| FLOAT (P > = 16) | Decimal | Double |
| INTERVAL ANNEE À MOIS | Int64 | Chaîne |
| INTERVAL DAY TO SECOND | TimeSpan | Chaîne |
| LONG | Chaîne | Chaîne |
| LONG RAW (non traduit) | Byte[] | Byte[] |
| NCHAR | Chaîne | Chaîne |
| NCLOB | Chaîne | Chaîne |
| NUMÉRO (p,s) | Int16, Int32, Int64, Single, Double, Decimal | Decimal, String (si p > 28) |
| NUMBER sans précision ni échelle | Décimal (256,130) | Double |
| NVARCHAR2 | Chaîne | Chaîne |
| RAW | Byte[] | Byte[] |
| timestamp | Date et heure | Date et heure |
| Horodatage avec fuseau horaire local | Date et heure | Date et heure |
| TIMESTAMP AVEC FUSEAU HORAIRE | DateTimeOffset | Date et heure |
| VARCHAR2 | Chaîne | Chaîne |
| XMLTYPE | Chaîne | Chaîne |
NUMBER(p,s) est mappé au type de données de service intermédiaire de la version 2.0 appropriée en fonction de la précision (p) et de l’échelle (s) :
| Type de données de service intermédiaire | Condition |
|---|---|
| Int16 | scale <= 0 AND (précision - échelle) < 5 |
| Int32 | scale <= 0 AND 5 <= (précision - échelle) < 10 |
| Int64 | scale <= 0 AND 10 <= (précision - échelle) < 19 |
| Célibataire | précision < 8 ET ((échelle <= 0 ET (précision - échelle) <= 38) OU (échelle > 0 ET échelle <= 44)) |
| Decimal | précision >= 16 |
| Double | Si aucune des conditions ci-dessus n’est remplie. |
Propriétés de l’activité Lookup
Pour en savoir plus sur les propriétés, consultez Activité Lookup.
Mettre à niveau le connecteur Oracle
Voici les étapes qui vous aident à mettre à niveau le connecteur Oracle :
Dans la page Modifier le service lié , sélectionnez 2.0 sous Version et configurez le service lié en faisant référence aux propriétés du service lié version 2.0.
Pour les propriétés associées à l’authentification, notamment le nom d’utilisateur et le mot de passe, spécifiez les valeurs d’origine dans les champs correspondants dans la version 2.0. D'autres propriétés de connexion telles que l'hôte, le port et le Oracle Service Name/Oracle SID dans la version 1.0 sont désormais des paramètres de la propriété
serverdans la version 2.0.Par exemple, si vous configurez le service lié version 1.0, comme indiqué ci-dessous :
{ "name": "OracleLinkedService", "properties": { "type": "Oracle", "typeProperties": { "connectionString": "host=oraclesample.com;port=1521;servicename=db1" }, "connectVia": { "referenceName": "<name of Integration Runtime>", "type": "IntegrationRuntimeReference" } } }La configuration identique du service lié version 2.0 utilisant Easy Connect (Plus) Naming est la suivante :
{ "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 configuration de service lié identique de la version 2.0 utilisant le descripteur de connecteur est la suivante :
{ "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" } } }Conseil
La propriété
serverest prise en charge par Azure Key Vault. Vous pouvez modifier le json du service lié pour ajouter la référence Azure Key Vault, comme indiqué ci-dessous :
Notez les points suivants :
Si vous utilisez le nom du service Oracle dans la version 1.0, vous pouvez utiliser Easy Connect (Plus) ou descripteur de connecteur comme format de serveur dans la version 2.0.
Si vous utilisez oracle SID dans la version 1.0, vous devez utiliser le descripteur du connecteur comme format de serveur dans la version 2.0.
Pour certaines propriétés de connexion supplémentaires dans la version 1.0, nous fournissons d’autres propriétés ou paramètres dans la propriété
serverde la version 2.0. Vous pouvez faire référence au tableau ci-dessous pour mettre à niveau les propriétés de la version 1.0.Version 1.0 Version 2.0 méthode de chiffrement PROTOCOL (paramètre dans server)tnsnamesfile TNS_ADMIN (variable d’environnement prise en charge sur le runtime d’intégration auto-hébergé) servername serveur enablebulkload
Valeur : 1, 0enableBulkLoad
Valeur : true, falsefetchtswtzastimestamp
Valeur : 1, 0fetchTswtzAsTimestamp
Valeur : true, falseserveurs alternatifs DESCRIPTION_LIST (paramètre dans server)arraysize fetchSize limite du curseur mis en cache statementCacheSize connectionretrycount RETRY_COUNT (paramètre dans server)chaîne d'initialisation initializationString délai d'attente de connexion CONNECT_TIMEOUT (paramètre dans server)version-du-cryptoprotocole SSL_VERSION (paramètre dans server)truststore WALLET_LOCATION (paramètre dans server)Par exemple, si vous utilisez
alternateserversla version 1.0, vous pouvez définir leDESCRIPTION_LISTparamètre dans la propriété du serveur dans la version 2.0 :Version 1.0 du service lié utilisant
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)" } } }Service lié de version 2.0 identique utilisant le paramètre
DESCRIPTION_LISTdans Descripteur du connecteur :{ "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>" } } }
Le mappage de type de données pour le service lié Oracle version 2.0 est différent de celui de la version 1.0. Pour en savoir plus sur le mappage de type de données le plus récent, consultez Mappage de type de données pour Oracle.
Une propriété
supportV1DataTypesde connexion supplémentaire dans la version 2.0 peut réduire les difficultés de mise à niveau causées par les modifications de type de données. Définir cette propriété surtruegarantit que le type de données dans la version 2.0 reste cohérent avec la version 1.0.
Différences entre Oracle version 2.0 et version 1.0
Le connecteur Oracle version 2.0 offre de nouvelles fonctionnalités et est compatible avec la plupart des fonctionnalités de la version 1.0. Le tableau suivant présente les différences de fonctionnalités entre la version 2.0 et la version 1.0.
| Version 2.0 | Version 1.0 |
|---|---|
| Les mappages suivants sont utilisés entre les types de données Oracle et les types de données de service intermédiaires utilisés par le service en interne. NUMBER(p,s) -> Int16, Int32, Int64, Single, Double, Decimal FLOAT(p)-> Double ou Décimal en fonction de sa précision NOMBRE -> Décimal TIMESTAMP WITH TIME ZONE –> DateTimeOffset INTERVAL ANNEE À MOIS -> Int64 INTERVAL DAY TO SECOND –> TimeSpan |
Les mappages suivants sont utilisés entre les types de données Oracle et les types de données de service intermédiaires utilisés par le service en interne. NUMBER(p,s) :> décimal ou chaîne en fonction de sa précision FLOAT(p)–> Double NUMBER –> Double TIMESTAMP WITH TIME ZONE –> DateTime INTERVAL YEAR TO MONTH –> String INTERVAL DAY TO SECOND (m) –> String |
Prise en charge de convertDecimalToInteger dans la source de copie lorsque supportV1DataTypes est réglé sur true. |
Prise en charge de convertDecimalToInteger lors de la copie de la source. |
L’utilisation ? comme espace réservé pour les paramètres de requête d’activité de script n’est pas prise en charge. Vous pouvez utiliser le paramètre nommé (par exemple :paramA) ou le paramètre positionnel (par exemple :1) comme remplacement. |
Prise en charge de l’utilisation de ? comme espace réservé pour les paramètres de requête d’activité de script. |
| Prise en charge de TLS 1.3. | TLS 1.3 n’est pas pris en charge. |
| Tls/SSL bidirectionnel avec le portefeuille Oracle SSO est pris en charge. Pour plus d’informations, consultez cet article | Tls/SSL bidirectionnel avec le portefeuille Oracle n’est pas pris en charge. |