Copier des données à partir d’Amazon RDS for Oracle à l’aide d’Azure Data Factory ou d’Azure Synapse Analytics

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, l’aide à la décision et la création de rapports. 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 à partir d’une base de données Amazon RDS for Oracle. Il s’appuie sur la vue d’ensemble de l’activité de copie.

Fonctionnalités prises en charge

Ce connecteur Amazon RDS for Oracle est pris en charge pour les fonctionnalités suivantes :

Fonctionnalités prises en charge IR
Activité de copie (source/-)
Activité de recherche

① 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 Amazon RDS for Oracle prend en charge :

  • Les versions suivantes d’une base de données Amazon RDS for Oracle :
    • Amazon RDS for Oracle 19c R1 (19.1) et versions ultérieures
    • Amazon RDS for Oracle 18c R1 (18.1) et versions ultérieures
    • Amazon RDS for Oracle 12c R1 (12.1) et versions ultérieures
    • Amazon RDS for Oracle 11g R1 (11.1) et versions ultérieures
  • La copie parallèle à partir d’une source Amazon RDS for Oracle Pour plus d’informations, consultez la section Copie en parallèle à partir d’Amazon RDS for Oracle.

Notes

Le serveur proxy Amazon RDS for 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 Amazon RDS for Oracle. Par conséquent, vous n’avez pas besoin d’installer manuellement un pilote pour copier des données à partir d’Amazon RDS for Oracle.

Bien démarrer

Pour effectuer l’activité Copie avec un pipeline, vous pouvez vous servir de l’un des outils ou kits SDK suivants :

Créer un service lié à Amazon RDS for Oracle à l’aide de l’interface utilisateur

Utilisez les étapes suivantes pour créer un service lié à Amazon RDS for Oracle dans l’interface utilisateur du portail Azure.

  1. 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 :

  2. Recherchez Amazon RDS for Oracle et sélectionnez le connecteur Amazon RDS for Oracle.

    Screenshot of the Amazon RDS for Oracle connector.

  3. Configurez les informations du service, testez la connexion et créez le nouveau service lié.

    Screenshot of linked service configuration for Amazon RDS for Oracle.

Informations de configuration des connecteurs

Les sections suivantes fournissent des informations sur les propriétés utilisées pour définir les entités spécifiques du connecteur Amazon RDS for Oracle.

Propriétés du service lié

Le service lié à Amazon RDS for Oracle prend en charge les propriétés suivantes :

Propriété Description Obligatoire
type La propriété type doit être définie sur AmazonRdsForOracle. Oui
connectionString Spécifie les informations requises pour se connecter à l’instance de base de données Amazon RDS for Oracle.
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 l’identificateur de sécurité Amazon RDS for Oracle ou le nom du service Amazon RDS for 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 Amazon RDS for Oracle, vous pouvez choisir d’ajouter une entrée dans le fichier TNSNAMES.ORA sur le serveur Amazon RDS for Oracle et, dans le service lié à Amazon RDS for Oracle, choisissez d’utiliser le type de connexion avec nom du service Amazon RDS for Oracle et configurez le nom du 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

Si vous avez plusieurs instances Amazon RDS for Oracle pour le scénario de basculement, vous pouvez créer un service lié à Amazon RDS for Oracle, 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=AccountingAmazonRdsForOracleServer: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é Description 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 Amazon RDS for Oracle, deux options s’offrent à vous :

  • Pour utiliser le chiffrement 3DES (Triple-DES) et AES (Advanced Encryption Standard) , du côté du serveur Amazon RDS for Oracle, accédez à Oracle Advanced Security (OAS) et configurez les paramètres de chiffrement. Pour plus d’informations, consultez cette documentation Oracle. Le connecteur Amazon RDS for Oracle Application Development Framework (ADF) négocie automatiquement la méthode de chiffrement pour utiliser celle que vous configurez dans OAS lors de l’établissement d’une connexion à Amazon RDS for Oracle.

  • Pour utiliser TLS :

    1. Obtenez les informations de certificat TLS/SSL. Obtenez les informations de certificat encodé DER (Distinguished Encoding Rules) de votre certificat TLS/SSL et enregistrez la sortie (----- Begin Certificate … End Certificate -----) sous forme de fichier texte.

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

      Exemple : Extrayez les informations de certificat de DERcert.cer, puis enregistrez la sortie dans cert.txt.

      openssl x509 -inform DER -in DERcert.cer -text
      Output:
      -----BEGIN CERTIFICATE-----
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      XXXXXXXXX
      -----END CERTIFICATE-----
      
    2. Générez le keystore ou le truststore. La commande suivante crée le fichier truststore, avec ou sans mot de passe, au format 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
      

      Exemple : Créez un fichier truststore PKCS12 nommé MyTrustStoreFile, avec un mot de passe.

      openssl pkcs12 -in cert.txt -out MyTrustStoreFile -passout pass:ThePWD -nokeys -export  
      
    3. Placez le fichier truststore sur l’ordinateur IR auto-hébergé. Par exemple, placez le fichier sur C:\MyTrustStoreFile.

    4. Dans le service, configurez la chaîne de connexion Amazon RDS for Oracle avec EncryptionMethod=1 et la valeur TrustStore/TrustStorePassword correspondante. Par exemple : Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;EncryptionMethod=1;TrustStore=C:\\MyTrustStoreFile;TrustStorePassword=<trust_store_password>.

Exemple :

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

Exemple : stockage du mot de passe dans 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"
        }
    }
}

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 Amazon RDS for 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 à partir d’Amazon RDS for Oracle, définissez la propriété type du jeu de données sur AmazonRdsForOracleTable. Les propriétés suivantes sont prises en charge.

Propriété Description Obligatoire
type La propriété type du jeu de données doit être définie sur AmazonRdsForOracleTable. Oui
schéma Nom du schéma. Non
table Nom de la table/vue. Non
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

Exemple :

{
    "name": "AmazonRdsForOracleDataset",
    "properties":
    {
        "type": "AmazonRdsForOracleTable",
        "schema": [],
        "typeProperties": {
            "schema": "<schema_name>",
            "table": "<table_name>"
        },
        "linkedServiceName": {
            "referenceName": "<Amazon RDS for 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 la source Amazon RDS for Oracle. Pour obtenir la liste complète des sections et propriétés disponibles pour la définition des activités, consultez Pipelines.

Amazon RDS for Oracle en tant que source

Conseil

Pour charger efficacement les données d’Amazon RDS for Oracle en utilisant le partitionnement des données, apprenez-en plus sur la copie parallèle à partir d’Amazon RDS for Oracle.

Pour copier des données à partir d’Amazon RDS for Oracle, définissez le type de source dans l’activité de copie sur AmazonRdsForOracleSource. Les propriétés suivantes sont prises en charge dans la section source de l’activité de copie.

Propriété Description Obligatoire
type La propriété type de la source de l’activité de copie doit être définie sur AmazonRdsForOracleSource. Oui
oracleReaderQuery Utiliser la requête SQL personnalisée pour lire les données. par exemple "SELECT * FROM MyTable".
Lorsque vous activez la charge partitionnée, vous devez utiliser les paramètres de partition intégrés correspondants dans votre requête. Pour voir des exemples, consultez la section Copie en parallèle à partir d’Amazon RDS for Oracle.
Non
partitionOptions Spécifie les options de partitionnement des données utilisées pour charger des données à partir d’Amazon RDS for 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 Amazon RDS for Oracle est contrôlé par le paramètre parallelCopies de l’activité de copie.
Non
partitionSettings 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
partitionNames 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 voir un exemple, consultez la section Copie en parallèle à partir d’Amazon RDS for 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 voir un exemple, consultez la section Copie en parallèle à partir d’Amazon RDS for 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 voir un exemple, consultez la section Copie en parallèle à partir d’Amazon RDS for 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 voir un exemple, consultez la section Copie en parallèle à partir d’Amazon RDS for Oracle.
Non

Exemple : copie de données à l’aide de la requête de base sans partition

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

Copie en parallèle à partir d’Amazon RDS for Oracle

Le connecteur Amazon RDS for Oracle propose un partitionnement de données intégré pour copier des données à partir d’Amazon RDS for Oracle en parallèle. Vous trouverez des options de partitionnement de données dans l’onglet Source de l’activité de copie.

Screenshot of partition options.

Lorsque vous activez la copie partitionnée, le service exécute des requêtes en parallèle sur votre source Amazon RDS for 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 une partie des données à partir de votre base de données Amazon RDS for 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 Amazon RDS for 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 des fichiers, il est recommandé de les écrire dans un dossier sous la forme de plusieurs fichiers (spécifiez uniquement le nom du dossier). Les performances seront meilleures qu’avec l’écriture 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(s) nom(s) de partition à copier. 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 Amazon RDS for Oracle.

Pendant l’exécution, le service remplace ?AdfTabularPartitionName par le nom réel de la partition et l’envoie à Amazon RDS for 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 partition et limite inférieure de 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 de colonne et les plages de valeurs réels de chaque partition et les envoie à Amazon RDS for 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": "AmazonRdsForOracleSource",
    "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": "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>"
    }
}

Propriétés de l’activité Lookup

Pour en savoir plus sur les propriétés, consultez Activité Lookup.

Consultez les magasins de données pris en charge pour obtenir la liste des sources et magasins de données pris en charge en tant que récepteurs par l’activité de copie.