Configurer la base de données Oracle dans une activité de copie

Cet article explique comment utiliser l’activité de copie dans un pipeline pour copier des données depuis et vers une base de données Oracle.

Plus précisément, ce connecteur de base de données Oracle prend en charge les éléments suivants :

  • Les versions suivantes d’une base de données Oracle :

    • Base de données Oracle 19c et versions ultérieures
    • Base de données Oracle 18c et versions ultérieures
    • Base de données Oracle 12c et versions ultérieures
    • Base de données Oracle 11g et versions ultérieures
  • Copie parallèle à partir d’une source de base de données Oracle. Pour plus d’informations, consultez la section Copie parallèle à partir de la base de données Oracle .

Note

Le serveur proxy Oracle n’est pas pris en charge.

Configuration prise en charge

Pour la configuration de chaque onglet sous l’activité de copie, accédez respectivement aux sections suivantes.

Général

Reportez-vous aux instructions relatives aux paramètres Général pour configurer l’onglet Paramètres Général .

Source

Les propriétés suivantes sont prises en charge pour la base de données Oracle sous l’onglet Source d’une activité de copie.

Capture d'écran montrant l’onglet source et la liste des propriétés.

Les propriétés suivantes sont requises :

  • Connexion : sélectionnez une connexion de base de données Oracle dans la liste des connexions. Si aucune connexion n’existe, créez une connexion de base de données Oracle en sélectionnant Plus au bas de la liste des connexions.
  • Utiliser la requête : sélectionnez Table ou Requête.
    • Si vous sélectionnez Table :

      • Table : spécifiez le nom de la table dans la base de données Oracle pour lire les données. Sélectionnez la table dans la liste déroulante ou sélectionnez Saisir manuellement pour spécifier le nom du schéma et de la table.

        Capture d’écran montrant : Utiliser la requête - Table.

    • Si vous sélectionnez Requête :

      • Requête : spécifie 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, consultez la section Copie en parallèle à partir de la base de données Oracle.

        Capture d’écran montrant : Utiliser la requête – Requête.

Sous Avancé, vous pouvez spécifier les champs suivants :

  • Option de partition : spécifiez les options de partitionnement des données utilisées pour charger des données à partir de la base de données Oracle. Lorsqu’une option de partition est activée (autrement dit, pas Aucun), le degré de parallélisme pour charger simultanément les données à partir d’une base de données Oracle est contrôlé par le Degré de parallélisme de copie sous l’onglet des paramètres de l’activité de copie.

    Si vous sélectionnez Aucun, vous choisissez de ne pas utiliser la partition.

    Si vous sélectionnez Partitions physiques de la table :

    • Noms de partition : Spécifiez la liste des partitions physiques qui doivent être copiées.

      Si vous utilisez une requête pour récupérer des données sources, utilisez ?DfTabularPartitionName dans la clause WHERE. Pour consulter un exemple, consultez la section Copie en parallèle à partir de la base de données Oracle.

      Capture d’écran montrant la configuration lorsque vous sélectionnez Partitions physiques de la table.

    Si vous sélectionnez Plage dynamique :

    • Nom de la colonne de partition : indiquez le nom de la colonne source au format entier qui sera utilisée par le partitionnement par plages de valeurs pour la copie 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.

      Si vous utilisez une requête pour récupérer des données sources, utilisez ?DfRangePartitionColumnName dans la clause WHERE. Pour consulter un exemple, consultez la section Copie en parallèle à partir de la base de données Oracle.

    • Limite supérieure de la partition : spécifiez la valeur maximale de la colonne de partition pour la copie des données.

      Si vous utilisez une requête pour récupérer des données sources, utilisez ?DfRangePartitionUpbound dans la clause WHERE. Pour consulter un exemple, consultez la Copie en parallèle dans la section Copie en parallèle à partir de la base de données Oracle.

    • Limite inférieure de la partition : spécifiez la valeur minimale de la colonne de partition pour la copie des données.

      Si vous utilisez une requête pour récupérer des données sources, utilisez ?DfRangePartitionLowbound dans la clause WHERE. Pour consulter un exemple, consultez la Copie en parallèle dans la section Copie en parallèle à partir de la base de données Oracle.

      Capture d’écran montrant la configuration lorsque vous sélectionnez Plage dynamique.

  • Délai d’expiration de la requête (minutes) : spécifiez le délai d’expiration pour l’exécution de la commande de requête, la valeur par défaut étant de 120 minutes. Si un paramètre est défini pour cette propriété, les valeurs autorisées sont un intervalle de temps, par exemple « 02:00:00 » (120 minutes).

  • Paramètres NUMBER : spécifiez la précision et l’échelle pour NUMBER. Cela 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.

    • Précision : 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.

    • Échelle : 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.

  • Colonnes supplémentaires: Ajoutez des colonnes de données supplémentaires pour stocker le chemin relatif ou la valeur statique des fichiers sources. L’expression est prise en charge pour ce dernier.

Destination

Les propriétés suivantes sont prises en charge pour la base de données Oracle sous l’onglet Destination d’une activité de copie.

Capture d’écran montrant l’onglet de destination.

Les propriétés suivantes sont requises :

  • Connexion : sélectionnez une connexion de base de données Oracle dans la liste des connexions. Si la connexion n’existe pas, créez une connexion de base de données Oracle en sélectionnant Plus au bas de la liste de connexions.

  • Tableau : sélectionnez la table dans votre base de données dans la liste déroulante, ou sélectionnez Entrée manuellement pour entrer le schéma et le nom de la table. Si la table de destination n’existe pas, elle est créée automatiquement en fonction des données sources. Pour plus d’informations sur les règles de mappage pour les tables créées automatiquement, accédez au mappage de type de données par défaut pour la table créée automatiquement Par Oracle.

  • Comportement d’écriture : décrit comment écrire des données dans une base de données Oracle. Les valeurs autorisées sont Insert (par défaut) et Upsert.

    • Insertion : choisissez cette option si vos données sources ont des insertions.
    • Upsert : Insérez de nouvelles valeurs dans une table existante et mettez à jour les valeurs existantes.
      • Colonnes clés : choisissez la colonne utilisée pour déterminer si une ligne de la source correspond à une ligne de la destination. Vous pouvez spécifier une ou plusieurs colonnes à traiter comme des colonnes clés. Si la colonne clé n’est pas spécifiée, la clé primaire de la table de destination est utilisée comme colonne clé.

Sous Avancé, vous pouvez spécifier les champs suivants :

  • Script de précopie : spécifiez une requête SQL pour l’activité de copie à exécuter avant d’écrire des données dans la base de données Oracle à chaque exécution. Vous pouvez utiliser cette propriété pour nettoyer des données préchargées.
  • Délai d’expiration d’écriture par lot : Le temps d’attente pour que l’opération d’insertion par lot soit terminée avant expiration. La valeur autorisée est timespan. Exemple : 00:30:00 (30 minutes).
  • Taille de la trame d'écriture : Spécifiez le nombre de lignes à insérer dans la table de la base de données Oracle par lot. La valeur autorisée est integer (nombre de lignes). La valeur par défaut est 10 000.
  • Nombre maximal de connexions simultanées : 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.

Cartographie

Pour la configuration de l’onglet Mappage, accédez à Configurer vos mappages sous l’onglet Mappage.

Modifier les types de données de destination

Pour la configuration de l’onglet Mappage , si vous appliquez Oracle comme destination et que la table de destination est créée automatiquement, à l’exception de la configuration dans Mappage, vous pouvez modifier le type de vos colonnes de destination. Après avoir sélectionné Importer des schémas, vous pouvez spécifier le type de colonne dans votre destination. Pour plus d’informations sur les règles de mappage, accédez au mappage de type de données pour la base de données Oracle.

Par exemple, vous pouvez définir le type de la colonne VAL2 sur TIMESTAMP et ajuster son échelle si nécessaire lors du mappage à la destination.

Capture d’écran du type de colonne de destination de mappage.

Paramètres

Pour la configuration de l’onglet Paramètres, consultez Configurer vos autres paramètres sous l’onglet Paramètres.

Mappage de type de données pour la base de données Oracle

Lorsque vous copiez des données à partir d'une base de données Oracle, les mappages suivants sont utilisés depuis la base de données Oracle vers les types de données intermédiaires employés par le service en interne.

Type de données de base de données Oracle Type de données intermédiaire
BFILE Tableau d’octets
BINARY_FLOAT Célibataire
BINARY_DOUBLE Double
BLOB Tableau d’octets
CHAR Chaîne
CLOB Chaîne
DATE DateHeure
FLOTTANT (P < 16) Double
FLOAT (P > = 16) Décimal
INTERVAL ANNEE À MOIS Int64
INTERVALLE DE JOUR À SECONDE TimeSpan
LONG Chaîne
LONG RAW (non traduit) Tableau d’octets
NCHAR Chaîne
NCLOB Chaîne
NUMBER(p,s) Int16, Int32, Int64, Single, Double, Decimal
NUMBER sans précision ni échelle Décimal (256,130)
NVARCHAR2 Chaîne
RAW Tableau d’octets
TIMESTAMP DateHeure
Horodatage avec fuseau horaire local DateHeure
TIMESTAMP AVEC FUSEAU HORAIRE DateTimeOffset
VARCHAR2 Chaîne
XMLTYPE Chaîne

NUMBER(p,s) est mappé au type de données intermédiaire approprié en fonction de la précision (p) et de l’échelle (s) :

Type de données de service intermédiaire Pathologie
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))
Décimal précision >= 16
Double Si aucune des conditions ci-dessus n’est remplie.

Lorsque vous copiez des données vers une base de données Oracle, les mappages suivants sont utilisés à partir de types de données intermédiaires utilisés par le service en interne vers des types de données de base de données Oracle.

Type de données intermédiaire Type de données de base de données Oracle
Célibataire BINARY_FLOAT
Double BINARY_DOUBLE
Tableau d’octets BLOB
Chaîne CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB
TimeSpan INTERVALLE DE JOUR À SECONDE
Octet, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Decimal NUMBER(p,s), NUMBER
DateHeure TIMESTAMP, TIMESTAMP AVEC LE FUSEAU HORAIRE LOCAL, DATE
DateTimeOffset TIMESTAMP AVEC FUSEAU HORAIRE
Booléen NUMBER(p,s), BOOLEAN

Pour en savoir plus sur comment l'activité de copie effectue le mappage du schéma source et du type de données vers la destination, consultez Mappages de schéma et de type de données.

Mappage de type de données par défaut pour la table créée automatiquement par Oracle

Le tableau suivant décrit les mappages par défaut des types de données intermédiaires utilisés en interne par le service vers les types de données de base de données Oracle lorsque la table de destination est créée automatiquement.

Type de données intermédiaire Type de données de base de données Oracle
Chaîne VARCHAR2(4000)
Byte NUMBER(3,0)
SByte NUMBER(3,0)
Décimal NUMBER(38,9)
Int16 NUMBER(5,0)
UInt16 NUMBER(5,0)
Int32 NUMBER(10,0)
UInt32 NUMBER(10,0)
Int64 NOMBRE(19,0)
UInt64 NOMBRE(20,0)
Célibataire BINARY_FLOAT
Double BINARY_DOUBLE
Booléen NUMBER(1,0)
DateHeure TIMESTAMP(7)
DateTimeOffset Timestamp(7) avec fuseau horaire
TimeSpan INTERVALLE JOUR(8) À SECOND(7)
Tableau d’octets BLOB
GUID CHAR(36)

Lorsque la source et la destination sont Oracle, la table de destination est créée automatiquement à l’aide des types de données Oracle de la colonne source si ces types de données sont inclus dans la liste suivante. Tous les autres types de données sources sont d’abord convertis en type de données intermédiaire interne par le service, puis mappés au type de données de destination.

  • BINARY_FLOAT
  • BINARY_DOUBLE
  • BLOB
  • BOOLEAN
  • CHAR
  • CLOB
  • JSON
  • NCHAR
  • NVARCHAR2
  • VARCHAR2
  • DATE
  • INTERVAL ANNEE À MOIS
  • INTERVALLE DE JOUR À SECONDE
  • NOMBRE
  • TIMESTAMP
  • Horodatage avec fuseau horaire local
  • TIMESTAMP AVEC FUSEAU HORAIRE

Copie en parallèle à partir de la base de données Oracle

Le connecteur de base de données 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 de base de données Oracle pour charger des données par partitions. Le degré de parallélisme est contrôlé par le paramètre Degré de parallélisme de copie sous l’onglet des paramètres de l’activité de copie. Par exemple, si vous définissez Degré de parallélisme de copie sur quatre, le service génère et exécute simultanément quatre requêtes en fonction de l’option et des paramètres de votre partition spécifiée, et chaque requête récupère une partie des données de votre serveur 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 de type entier 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("?DfTabularPartitionName") 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 les données de base de données Oracle.
Pendant l’exécution, le service remplace ?DfTabularPartitionName par le nom de la partition réel et l’envoie à la base de données 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 ?DfRangePartitionColumnName <= ?DfRangePartitionUpbound AND ?DfRangePartitionColumnName >= ?DfRangePartitionLowbound 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 ?DfRangePartitionColumnName, ?DfRangePartitionUpbound et ?DfRangePartitionLowbound par le nom réel de la colonne et les plages de valeurs de chaque partition et les envoie à la base de données 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 identifiants 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.

Résumé du tableau

Le tableau suivant contient plus d’informations sur l’activité de copie dans la base de données Oracle.

Informations sur la source

Nom Description Valeur Obligatoire Propriété de script JSON
Connection Votre connexion au magasin de données source. <votre connexion de base de données Oracle> Oui connexion
Utiliser la requête La façon de lire des données à partir la base de données Oracle. Appliquez Table pour lire des données à partir de la table spécifiée ou appliquez Requête pour lire des données à l’aide de requêtes SQL. Table
Requête
Oui /
Pour la Table
nom de schéma Nom du schéma. < nom de votre schéma > Non schéma
nom de la table Nom de la table. < nom de votre table > Non tableau
Pour Requête
Requête 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, consultez la section Copie en parallèle à partir de la base de données Oracle.
< requêtes SQL > Non oracleReaderQuery
Option de partition Options de partitionnement des données utilisées pour charger des données à partir de la base de données Oracle. • Aucun (valeur par défaut)
• Partitions physiques de la table
• Plage dynamique
Non /
Pour Partitions physiques de la table
Noms de partition La liste des partitions physiques qui doivent être copiées. Si vous utilisez une requête pour récupérer des données sources, utilisez ?DfTabularPartitionName dans la clause WHERE. < vos noms de partition > Non nomsDePartition
Pour Plage dynamique
Nom de la colonne de partition 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.
Si vous utilisez une requête pour récupérer des données sources, utilisez ?DfRangePartitionColumnName dans la clause WHERE. Pour consulter un exemple, consultez la section Copie en parallèle à partir de la base de données Oracle.
< vos noms de colonne de partition > Non partitionColumnName
Limite supérieure de partition Spécifiez la valeur maximale de la colonne de partition à partir de laquelle copier des données. Si vous utilisez une requête pour récupérer des données sources, utilisez ?DfRangePartitionUpbound dans la clause WHERE. Pour consulter un exemple, consultez la Copie en parallèle dans la section Copie en parallèle à partir de la base de données Oracle. < votre limite supérieure de partition > Non partitionUpperBound
Limite inférieure de partition Spécifiez la valeur minimale de la colonne de partition à partir de laquelle copier des données. Si vous utilisez une requête pour récupérer des données sources, utilisez ?DfRangePartitionLowbound dans la clause WHERE. Pour consulter un exemple, consultez la Copie en parallèle dans la section Copie en parallèle à partir de la base de données Oracle. < votre limite inférieure de partition > Non partitionLowerBound
Délai d'expiration de requête Le délai d’expiration pour l’exécution de la commande de requête ( par défaut est de 120 minutes). intervalle de temps Non queryTimeout
Précision 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. < votre précision > Non numberPrecision
Scale 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. < votre échelle > Non numberScale
Colonnes supplémentaires Ajouter des colonnes supplémentaires de données pour stocker le chemin d'accès relatif ou une valeur statique des fichiers sources. L’expression est prise en charge pour ce dernier. • Nom
• Valeur
Non additionalColumns :
• nom
• valeur

Informations de destination

Nom Description Valeur Obligatoire Propriété de script JSON
Connection Votre connexion au magasin de données de destination. <votre connexion de base de données Oracle> Oui connexion
Table Votre table de données de destination. <nom de votre table de destination> Oui /
nom de schéma Nom du schéma. < nom de votre schéma > Oui schéma
nom de la table Nom de la table. < nom de votre table > Oui tableau
Comportement d’écriture Décrit comment écrire des données dans une base de données Oracle. • Insertion (par défaut)
• insertion ou mise à jour
Non writeBehavior
Colonnes clés La colonne est utilisée pour déterminer si une ligne de la source correspond à une ligne de la destination. Vous pouvez spécifier une ou plusieurs colonnes à traiter comme des colonnes clés. Si la colonne clé n’est pas spécifiée, la clé primaire de la table de destination est utilisée comme colonne clé. < colonnes clés > Non clés (sous upsertSettings)
Script de pré-copie Une requête SQL pour l’activité de copie à exécuter avant l’écriture de données dans la base de données Oracle à chaque exécution. Vous pouvez utiliser cette propriété pour nettoyer des données préchargées. < votre script de pré-copie> Non preCopyScript
Délai d’expiration du lot d’écriture Temps d’attente avant expiration de l’opération d’insertion de lot. intervalle de temps Non writeBatchTimeout
Taille de lot d’écriture Nombre de lignes à insérer dans la table SQL par lot. entier
(la valeur par défaut est 10 000)
Non writeBatchSize
Connexions simultanées maximales La limite supérieure des connexions simultanées établies au stockage de données pendant l'exécution de l'activité. Spécifiez une valeur uniquement lorsque vous souhaitez limiter les connexions simultanées. <connexions simultanées maximales> Non maxConcurrentConnections