Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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.
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.
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.
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
?DfTabularPartitionNamedans la clause WHERE. Pour consulter un exemple, consultez la section Copie en parallèle à partir de la base de données Oracle.
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
?DfRangePartitionColumnNamedans 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
?DfRangePartitionUpbounddans 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
?DfRangePartitionLowbounddans 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.
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.
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.
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 |