Tous les produits
Search
Centre de documentation

DataWorks:Source de données Oracle

Dernière mise à jour :Aug 10, 2026

DataWorks met à disposition Oracle Reader et Oracle Writer pour lire et écrire dans les sources de données Oracle. Vous pouvez utiliser l'interface utilisateur sans code ou l'éditeur de code pour configurer les tâches de synchronisation des données vers les sources Oracle. Cette rubrique décrit les fonctionnalités de synchronisation des données prises en charge pour les sources de données Oracle.

Instructions

Versions prises en charge

Lecture et écriture de données par lot

Version

Lecture de données par lot (Oracle Reader)

Écriture de données par lot (Oracle Writer)

Oracle 11.2 ou 11gR2

Prise en charge

Prise en charge

Oracle 12.1 ou 12cR1

Prise en charge

Prise en charge

Oracle 12.2 ou 12cR2

Prise en charge (sans les nouvelles fonctionnalités)

Prise en charge (sans les nouvelles fonctionnalités)

Oracle 18.3

Prise en charge (sans les nouvelles fonctionnalités)

Prise en charge (sans les nouvelles fonctionnalités)

Oracle 19.x

Prise en charge (sans les nouvelles fonctionnalités)

Prise en charge (sans les nouvelles fonctionnalités)

Oracle 21.1

Prise en charge (sans les nouvelles fonctionnalités)

Prise en charge (sans les nouvelles fonctionnalités)

Important

Oracle Writer utilise le pilote ojdbc6-12.1.1.jar.

Lecture de données en temps réel

  • Prise en charge :

    Bases de données 11g R2 and above, 12c non cdb, 18c non cdb, 19c non cdb ou 19c cdb.

  • Absence de prise en charge :

    Bases de données 12c cbd et 18c cbd.

  • Lorsque Oracle sert de source pour une tâche de synchronisation en temps réel de l'intégralité de la base de données, vous devez activer la fonctionnalité de journal d'archivage. Pour plus d'informations, consultez la rubrique Préparation de l'environnement Oracle.

Remarque

La base de données conteneur (CDB) est une fonctionnalité introduite dans Oracle 12c et les versions ultérieures. Elle est conçue pour héberger plusieurs bases de données enfichables (PDB).

Limites

  • Les jeux de caractères NLS_CHARACTERSET et NLS_NCHAR_CHARACTERSET de l'instance Oracle doivent correspondre à l'un des suivants : AL32UTF8, AL16UTF16, ZHS16GBK ou UTF8.

  • Une seule instance Oracle prend en charge la synchronisation en temps réel d'un volume maximal de 500 Go de données incrémentielles par jour.

  • Lorsque DataWorks lit les données d'une base de données standby Oracle en temps réel, seules les bases de données standby physiques sont prises en charge. Seuls les journaux d'archivage sont extraits, ce qui entraîne une latence plus élevée que celle de la base de données principale. Cette latence dépend de la vitesse de génération des journaux d'archivage.

  • La synchronisation en temps réel ne prend pas en charge les vues. La synchronisation par lots prend en charge la lecture depuis les vues.

  • DataWorks lit les données Oracle en temps réel via Oracle LogMiner. Vous devez activer la journalisation supplémentaire et la journalisation d'archivage sur la base de données principale Oracle pour la base de données principale ou standby.

  • Les tables organisées par index ne sont pas prises en charge.

  • Les tables dont toutes les colonnes sont de type LOB (BLOB, CLOB ou NCLOB) ne sont pas prises en charge.

  • Les caractères chinois dans les noms de table et de colonne Oracle ne sont pas pris en charge.

  • Un nom de table Oracle unique dépassant 30 octets n'est pas pris en charge.

Types de colonnes pris en charge

Type de colonne

Lecture des données par lot (Oracle Reader)

Écriture des données par lot (Oracle Writer)

Lecture des données en temps réel

NUMBER

Pris en charge

Pris en charge

Pris en charge

BINARY FLOAT

Pris en charge

Pris en charge

Pris en charge

BINARY DOUBLE

Pris en charge

Pris en charge

Pris en charge

CHAR

Pris en charge

Pris en charge

Pris en charge

NCHAR

Pris en charge

Pris en charge

Pris en charge

VARCHAR2

Pris en charge

Pris en charge

Pris en charge

NVARCHAR2

Pris en charge

Pris en charge

Pris en charge

DATE

Pris en charge

Pris en charge

Pris en charge

TIMESTAMP

Pris en charge

Pris en charge

Pris en charge

TIMESTAMP WITH TIME ZONE

Pris en charge

Pris en charge

Non pris en charge

TIMESTAMP WITH LOCAL TIME ZONE

Pris en charge

Pris en charge

Non pris en charge

CLOB

Pris en charge

Pris en charge

Pris en charge

BLOB

Pris en charge

Pris en charge

Pris en charge

RAW

Pris en charge

Pris en charge

Pris en charge

ROWID

Non pris en charge

Non pris en charge

Pris en charge

UROWID

Non pris en charge

Non pris en charge

Pris en charge

FLOAT

Pris en charge

Pris en charge

Pris en charge

INTERVAL DAY TO SECOND

Non pris en charge

Non pris en charge

Pris en charge

INTERVAL YEAR TO MONTH

Non pris en charge

Non pris en charge

Pris en charge

BFILE

Non pris en charge

Non pris en charge

Non pris en charge

LONG

Non pris en charge

Non pris en charge

Non pris en charge

LONG RAW

Non pris en charge

Non pris en charge

Non pris en charge

NCLOB

Pris en charge

Pris en charge

Non pris en charge

STRUCT

Pris en charge

Pris en charge

Non pris en charge

User-Defined Types

Non pris en charge

Non pris en charge

Non pris en charge

AnyType

Non pris en charge

Non pris en charge

Non pris en charge

AnyData

Non pris en charge

Non pris en charge

Non pris en charge

AnyDataSet

Non pris en charge

Non pris en charge

Non pris en charge

XmlType

Non pris en charge

Non pris en charge

Non pris en charge

Spatial Types

Non pris en charge

Non pris en charge

Non pris en charge

Media Types

Non pris en charge

Non pris en charge

Non pris en charge

Le tableau suivant répertorie les conversions de type de données prises en charge par Oracle Reader.

Catégorie de type

Type de données Oracle

Entier

NUMBER, RAWID, INTEGER, INT et SMALLINT

Virgule flottante

NUMERIC, DECIMAL, FLOAT, DOUBLE PRECISION et REAL

Chaîne

LONG, CHAR, NCHAR, VARCHAR, VARCHAR2, NVARCHAR2, CLOB, NCLOB, CHARACTER, CHARACTER VARYING, CHAR VARYING, NATIONAL CHARACTER, NATIONAL CHAR, NATIONAL CHARACTER VARYING, NATIONAL CHAR VARYING et NCHAR VARYING

Date et heure

TIMESTAMP et DATE

Booléen

BIT et BOOL

Binaire

BLOB, BFILE, RAW et LONG RAW

Préparation avant synchronisation : préparation de l'environnement Oracle

Avant de synchroniser des données dans DataWorks, vous devez préparer l'environnement Oracle comme décrit dans cette rubrique. Cela garantit que les tâches de synchronisation de données Oracle peuvent être configurées et exécutées correctement dans DataWorks. Les sections suivantes détaillent les étapes de préparation.

Vérifiez la version de la base de données Oracle

Les versions prises en charge de la base de données Oracle varient selon le scénario de synchronisation. Avant de procéder à la synchronisation des données, vérifiez que votre version de base de données Oracle est compatible.

  1. Exécutez l'une des requêtes suivantes pour vérifier la version de la base de données Oracle.

    • Requête 1 :

      select * from v$version;
    • Requête 2 :

      select version from v$instance;
  2. Si la version de la base de données Oracle est 12c ou 18c, vous devez exécuter la requête suivante pour déterminer si la base de données est une base cdb. Les tâches de synchronisation en temps réel de Data Integration ne prennent pas en charge les bases de données Oracle 12c et 18c de type cdb.

    select name,cdb,open_mode,con_id from v$database;

Créer un compte et configurer les autorisations

Vous devez prévoir un compte de connexion à la base de données pour les opérations ultérieures. Ce compte doit disposer des autorisations d'opération Oracle requises.

  1. Créez un compte. Pour plus d'informations, consultez CREATE USER.

  2. Configurez les permissions.

    Exécutez les commandes suivantes pour accorder des autorisations au compte. Dans les instructions ci-dessous, remplacez 'sync_account' par le compte que vous avez créé.

    grant create session to 'sync_account';  //Grant the sync account permission to log in to the database.
    grant connect to 'sync_account';  //Grant the sync account permission to connect to the database.
    grant select on nls_database_parameters to 'sync_account';  //Grant the sync account permission to query the nls_database_parameters system configuration of the database.
    grant select on all_users to 'sync_account';  //Grant the sync account permission to query all users in the database.
    grant select on all_objects to 'sync_account';  //Grant the sync account permission to query all objects in the database.
    grant select on DBA_MVIEWS to 'sync_account';  //Grant the sync account permission to view materialized views of the database.
    grant select on DBA_MVIEW_LOGS to 'sync_account';  //Grant the sync account permission to view materialized view logs of the database.
    grant select on DBA_CONSTRAINTS to 'sync_account';  //Grant the sync account permission to view constraint information of all tables in the database.
    grant select on DBA_CONS_COLUMNS to 'sync_account';  //Grant the sync account permission to view information about all columns in specified constraints of all tables in the database.
    grant select on all_tab_cols to 'sync_account';  //Grant the sync account permission to view column information of tables, views, and clusters in the database.
    grant select on sys.obj$ to 'sync_account';  //Grant the sync account permission to view objects in the database. The sys.obj$ table is the base object table in the Oracle data dictionary, storing all Oracle objects.
    grant select on SYS.COL$ to 'sync_account';  //Grant the sync account permission to view column definition information of database tables. SYS.COL$ stores column definition information of tables.
    grant select on sys.USER$ to 'sync_account';  //Grant the sync account permission to view database system tables. sys.USER$ is the default service for user sessions.
    grant select on sys.cdef$ to 'sync_account';  //Grant the sync account permission to view database system tables.
    grant select on sys.con$ to 'sync_account';  //Grant the sync account permission to view constraint information of the database. sys.con$ stores Oracle constraint information.
    grant select on all_indexes to 'sync_account';  //Grant the sync account permission to view all indexes of the database.
    grant select on v_$database to 'sync_account';  //Grant the sync account permission to view the v_$database view of the database.
    grant select on V_$ARCHIVE_DEST to 'sync_account';  //Grant the sync account permission to view the V_$ARCHIVE_DEST view of the database.
    grant select on v_$log to 'sync_account';  //Grant the sync account permission to view the v_$log view of the database. v_$log displays log file information from the control file.
    grant select on v_$logfile to 'sync_account';  //Grant the sync account permission to view the v_$logfile view of the database. v_$logfile contains information about redo log files.
    grant select on v_$archived_log to 'sync_account';  //Grant the sync account permission to view the v$archived_log view of the database. v$archived_log contains information about archived logs.
    grant select on V_$LOGMNR_CONTENTS to 'sync_account';  //Grant the sync account permission to view the V_$LOGMNR_CONTENTS view of the database.
    grant select on DUAL to 'sync_account';   //Grant the sync account permission to view the DUAL table of the database. DUAL is a virtual table used to conform to the SELECT syntax rules. Oracle's DUAL table contains only one record.
    grant select on v_$parameter to 'sync_account';  //Grant the sync account permission to view the v_$parameter view of the database. v$parameter is an Oracle dynamic dictionary table that stores database parameter settings.
    grant select any transaction to 'sync_account';  //Grant the sync account permission to view any transaction in the database.
    grant execute on SYS.DBMS_LOGMNR to 'sync_account';  //Grant the sync account permission to use the LogMiner tool of the database. The LogMiner tool helps you analyze transactions and recover lost data.
    grant alter session to 'sync_account';  //Grant the sync account permission to alter database sessions.
    grant select on dba_objects to 'sync_account';  //Grant the sync account permission to view all objects in the database.
    grant select on v_$standby_log to 'sync_account';  //Grant the sync account permission to view the v_$standby_log view of the database. v_$standby_log contains archived logs of the standby database.
    grant select on v_$ARCHIVE_GAP to 'sync_account';  //Grant the sync account permission to query missing archived logs.
    grant select on sys.ICOL$ to 'sync_account';  //Grant the sync account permission to view objects in the database. The sys.obj$ table is the base object table in the Oracle data dictionary, storing all Oracle objects.
    grant select on V_$THREAD to 'sync_account';  //Grant the sync account permission to view instance thread information. The V_$THREAD view is a thread status table in Oracle dynamic performance views, storing thread status information of each instance in a RAC cluster, used to determine instance status and log sources during incremental parsing.

    Si vous souhaitez utiliser la synchronisation complète par lots, exécutez la commande suivante pour accorder au compte de synchronisation l'autorisation de consultation sur toutes les tables.

    grant select any table to 'sync_account'; 

    Pour Oracle 12c et les versions ultérieures, exécutez la commande suivante pour accorder au compte de synchronisation l'autorisation d'effectuer l'extraction des journaux (log mining). Pour les versions antérieures à Oracle 12c, la fonctionnalité d'extraction des journaux est intégrée et cette commande n'est pas requise.

    grant LOGMINING TO 'sync_account';

Activez la journalisation des archives, la journalisation supplémentaire et effectuez le basculement des fichiers Redo log

  1. Activez la journalisation des archives en exécutant les instructions SQL suivantes.

    shutdown immediate;
    startup mount;
    alter database archivelog;
    alter database open;
  2. Activez la journalisation supplémentaire.

    Vous pouvez activer la journalisation supplémentaire appropriée selon vos besoins en exécutant les instructions SQL suivantes.

    //To capture complete data changes, real-time synchronization requires enabling supplemental logging. You can enable it at the database level using the following SQL statements:
    alter database add supplemental log data(primary key) columns; //Enable supplemental logging for primary key columns of the database.
    alter database add supplemental log data(unique) columns; //Enable supplemental logging for unique index columns of the database.
    
    //You can also enable it at the table level:
    alter schema.table add supplemental log data(primary key) columns; //Enable supplemental logging for primary key columns of the specified table.
    alter schema.table add supplemental log data(unique) columns; //Enable supplemental logging for unique index columns of the specified table.
  3. Effectuez le basculement des fichiers Redo log.

    Après avoir activé la journalisation supplémentaire, exécutez la commande suivante plusieurs fois (nous vous recommandons de l'exécuter 5 fois) pour effectuer le basculement des fichiers Redo log.

    alter system switch logfile;
    Remarque

    L'exécution répétée de la commande précédente pour effectuer le basculement des fichiers Redo log garantit que le fichier journal actuel peut basculer vers le fichier suivant une fois qu'il est plein. Cela permet de s'assurer que les enregistrements d'opérations ne sont pas perdus et peuvent être utilisés pour la récupération ultérieure des données.

Vérification de l'encodage des caractères de la base de données

Exécutez la commande suivante dans la base de données pour vérifier l'encodage des caractères.

select * from v$nls_parameters where PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
  • v$nls_parameters stocke les paramètres de configuration de la base de données.

  • NLS_CHARACTERSET et NLS_NCHAR_CHARACTERSET spécifient respectivement le jeu de caractères et le jeu de caractères nationaux de la base de données. Ces paramètres définissent les types de stockage des deux principales catégories de données caractères dans Oracle.

Remarque

Data Integration prend uniquement en charge les formats d'encodage UTF8, AL32UTF8, AL16UTF16 et ZHS16GBK. Si la base de données utilise des encodages de caractères non pris en charge, modifiez-les avant de synchroniser les données.

Vérifier les types de données des tables de base de données

Exécutez une instruction SELECT pour interroger les types de données des tables de base de données. L'exemple suivant montre comment consulter les types de données d'une table nommée 'tablename'.

select COLUMN_NAME,DATA_TYPE from all_tab_columns where TABLE_NAME='tablename'; 
  • COLUMN_NAME : le nom de la colonne de la table.

  • DATA_TYPE : le type de données de la colonne.

  • all_tab_columns : une vue qui stocke les informations sur toutes les colonnes des tables de base de données.

  • TABLE_NAME : le nom de la table à interroger. Remplacez 'tablename' par le nom réel de la table lorsque vous exécutez l'instruction.

Vous pouvez également exécuter select * from 'tablename'; pour interroger toutes les informations d'une table et obtenir les types de données.

Ajouter une source de données

Avant de développer une tâche de synchronisation dans DataWorks, vous devez ajouter la source de données requise à DataWorks en suivant les instructions fournies dans Configuration des sources de données. Consultez les descriptions des paramètres dans la console DataWorks pour comprendre la signification de chaque paramètre lors de l'ajout d'une source de données.

Développement de tâches de synchronisation des données : processus de synchronisation Oracle

Pour plus d’informations sur le point d’entrée et la procédure de configuration d’une tâche de synchronisation, consultez les guides de configuration ci-dessous.

Configuration d’une tâche de synchronisation par lot à table unique

Configuration d’une tâche de synchronisation en temps réel à table unique

Pour la procédure, consultez Configurer une tâche de synchronisation en temps réel.

Configuration de la synchronisation par lot pour l’ensemble de la base de données, de la synchronisation complète et incrémentielle (en temps réel) pour l’ensemble de la base de données, ainsi que de la synchronisation fragmentée (en temps réel) pour l’ensemble de la base de données

Pour la procédure, consultez Configurer une tâche de synchronisation pour l’ensemble de la base de données.

FAQ

  • Échecs récurrents des tâches pour Oracle, PolarDB et MySQL

  • Synchronisation primaire-secondaire et récupération des données

    Ce problème survient lorsqu'Oracle utilise la reprise après sinistre en mode primaire-secondaire. Après qu'une erreur se produit sur la base de données primaire et que le basculement vers la base secondaire est effectué, cette dernière récupère continuellement les données depuis la primaire via les binlogs. En raison du décalage temporel inhérent à la synchronisation entre les nœuds primaire et secondaire, certaines conditions, telles que la latence réseau, peuvent entraîner des écarts significatifs entre les données récupérées par la base secondaire et celles de la base primaire. Dans ce cas, les données synchronisées depuis la base secondaire ne constituent pas un snapshot complet à l'instant T.

  • Contraintes de cohérence

    Oracle est un SGBDR qui offre des interfaces de requête garantissant une forte cohérence des données. Par exemple, lors d'une tâche de synchronisation, si d'autres processus écrivent des données dans la base, Oracle Reader ne lira pas les nouvelles entrées grâce au mécanisme de snapshot de la base de données.

    Le scénario décrit ci-dessus assure la cohérence des données dans le modèle monothread d'Oracle Reader. Lorsque vous configurez Oracle Reader pour extraire les données de manière concurrente, il est impossible de garantir une stricte cohérence des données.

    Après avoir segmenté les données selon le paramètre splitPk, Oracle Reader lance plusieurs tâches concurrentes pour synchroniser les données. Ces tâches simultanées n'appartiennent pas à la même transaction de lecture et présentent des décalages temporels entre elles. Par conséquent, les données obtenues ne forment pas un snapshot de données complet et cohérent.

    Il est techniquement impossible de réaliser des snapshots cohérents en multithread. Cette limitation ne peut être contournée que par des compromis d'ingénierie. Les solutions suivantes sont proposées à titre indicatif.

    • Utilisez une synchronisation monothread sans segmentation des données. Bien que cette approche soit plus lente, elle garantit la cohérence des données.

    • Suspendez les autres processus d'écriture pour figer les données. Vous pouvez par exemple verrouiller la table ou arrêter la synchronisation de la base secondaire. Notez toutefois que cette méthode peut impacter les services en ligne.

  • Encodage de la base de données

    Oracle Reader utilise JDBC pour extraire les données. JDBC prend nativement en charge divers encodages et effectue les conversions nécessaires au niveau inférieur. Ainsi, Oracle Reader n'exige pas que vous spécifiez un encodage : il le détecte et le convertit automatiquement.

  • Méthodes de synchronisation des données incrémentielles

    Oracle Reader extrait les données à l'aide d'instructions SELECT JDBC. Vous pouvez utiliser SELECT…WHERE… pour extraire les données incrémentielles de la manière suivante :

    • Lorsqu'une application en ligne écrit des données dans la base, elle renseigne le champ de modification avec l'horodatage correspondant, couvrant les opérations d'insertion, de mise à jour et de suppression (suppression logique). Pour ce type d'applications, il suffit à Oracle Reader d'ajouter l'horodatage de la dernière étape de synchronisation à la clause WHERE.

    • Pour les nouveaux flux de données, Oracle Reader doit uniquement ajouter l'ID auto-incrémenté maximal de l'étape précédente à la clause WHERE.

    Si aucun champ ne permet de distinguer les données nouvelles ou modifiées, Oracle Reader ne peut pas effectuer de synchronisation incrémentielle et se limite à la synchronisation complète des données.

  • Sécurité SQL

    Oracle Reader propose la fonctionnalité querySql, qui vous permet d'écrire des instructions SELECT personnalisées. Oracle Reader n'effectue aucune validation de sécurité sur le paramètre querySql.

Annexe : Exemple de script et description des paramètres

Configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code

Pour configurer une tâche de synchronisation par lots via l'éditeur de code, vous devez définir les paramètres associés dans le script, conformément aux exigences du format de script unifié. Pour plus d'informations, consultez la section Configuration en mode script. Les informations suivantes détaillent les paramètres à configurer pour les sources de données lors de la mise en place d'une tâche de synchronisation par lots avec l'éditeur de code.

Exemple de script pour le lecteur

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "oracle",
            "parameter": {
                "selectedDatabase": "AUTOTEST",
                "indexes": [],
                "datasource": "oracle_test",
                "envType": 0,
                "useSpecialSecret": true,
                "column": [
                    "id"
                ],
                "where": "",
                "splitPk": "id",
                "encoding": "UTF-8",
                "table": "AUTOTEST.table01"
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "odps",
            "parameter": {
            },
            "name": "Writer",
            "category": "writer"
        },
        {
            "name": "Processor",
            "stepType": null,
            "category": "processor",
            "copies": 1,
            "parameter": {
                "nodes": [],
                "edges": [],
                "groups": [],
                "version": "2.0"
            }
        }
    ],
    "setting": {
        "executeMode": null,
        "errorLimit": {
            "record": ""
        },
        "speed": {
            "concurrent": 2,
            "throttle": false
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Paramètres du script de lecture

Paramètre

Description

Obligatoire

Valeur par défaut

datasource

Nom de la source de données. Vous pouvez ajouter une source de données en mode script. La valeur de ce paramètre doit correspondre au nom de la source de données ajoutée.

Oui

S/O

selectedDatabase

Schéma de la base de données à synchroniser.

Oui

S/O

table

Nom de la table à synchroniser. La valeur doit respecter le format schema.tableName.

Remarque

Par exemple, si selectedDatabase est AUTOTEST et que le nom de la table est table01, définissez table sur AUTOTEST.table01.

Oui

S/O

column

Colonnes à synchroniser depuis la table. Les colonnes sont décrites à l'aide d'un tableau JSON. Par défaut, toutes les colonnes sont sélectionnées, par exemple ["*"].

  • L'élagage des colonnes est pris en charge, ce qui permet d'exporter uniquement certaines colonnes.

  • La réorganisation des colonnes est prise en charge, ce qui permet d'exporter les colonnes dans un ordre différent du schéma de la table.

  • Les constantes sont prises en charge. Vous devez les configurer au format JSON.

    ["id", "1", "'mingya.wmy'", "null", "to_char(a + 1)", "2.3" , "true"]
    • id est un nom de colonne standard.

    • 1 est une constante entière.

    • 'mingya.wmy' est une constante de chaîne (notez qu'une paire de guillemets simples est requise).

    • null est un pointeur nul.

    • to_char(a + 1) est une expression.

    • 2.3 est un nombre à virgule flottante.

    • true est une valeur booléenne.

  • Le paramètre column doit être explicitement spécifié et ne peut pas être vide.

Oui

S/O

splitFactor

Facteur de division. Ce paramètre spécifie le nombre de divisions pour la synchronisation des données. Si plusieurs threads simultanés sont configurés, les données sont divisées en concurrency × splitFactor parties. Par exemple, si la concurrence est de 5 et que splitFactor est de 5, les données sont divisées en 5 × 5 = 25 parties et exécutées sur 5 threads simultanés.

Remarque

Plage de valeurs recommandée : 1 à 100. Une valeur excessivement élevée peut provoquer des erreurs de mémoire insuffisante (OOM).

Non

5

splitMode

Mode de division. Valeurs valides :

  • averageInterval : Échantillonnage moyen. Les valeurs maximale et minimale de splitPK sont recherchées et les données sont divisées uniformément en fonction du nombre de divisions.

  • randomSampling : Échantillonnage aléatoire. Un certain nombre de points de données sont sélectionnés au hasard comme points de division parmi toutes les données.

Remarque

Le paramètre splitMode doit être utilisé conjointement avec le paramètre splitPk.

  • Lorsque splitPk est de type numérique, splitMode doit être défini sur averageInterval.

  • Lorsque splitPk est de type chaîne, splitMode doit être défini sur randomSampling.

Non

randomSampling

splitPk

Lorsque Oracle Reader extrait des données, si vous spécifiez splitPk, cela indique que vous souhaitez utiliser le champ représenté par splitPk pour diviser les données. La synchronisation des données lance ensuite des tâches simultanées pour synchroniser les données, ce qui améliore l'efficacité de la synchronisation.

  • Nous vous recommandons d'utiliser la clé primaire de la table comme splitPk, car les clés primaires sont généralement réparties uniformément et permettent des divisions de données équilibrées sans goulots d'étranglement.

  • splitPk prend en charge uniquement les types numériques et de chaîne. Le paramètre splitMode doit être utilisé conjointement avec le paramètre splitPk.

    • Lorsque splitPk est de type numérique, splitMode doit être défini sur averageInterval.

    • Lorsque splitPk est de type chaîne, splitMode doit être défini sur randomSampling.

  • Si vous ne spécifiez pas splitPk, Oracle Reader ne divise pas la table et utilise un seul canal pour synchroniser l'intégralité des données.

Remarque

Le champ splitPK ne peut pas utiliser ROWID pour les vues.

Non

S/O

where

Condition de filtrage. Oracle Reader concatène une instruction SQL en fonction des conditions column, table et where spécifiées, puis extrait les données en se basant sur cette instruction SQL. Par exemple, vous pouvez spécifier la condition where sous la forme row_number() lors des tests.

  • La condition where peut être utilisée pour la synchronisation incrémentielle.

  • Si la condition where n'est pas spécifiée ou est vide, la synchronisation complète de la table est effectuée.

Non

S/O

querySql (mode avancé, non pris en charge en mode assistant)

Dans certains scénarios métier, la condition where ne suffit pas à décrire les conditions de filtrage. Vous pouvez utiliser ce paramètre pour spécifier une instruction SQL de filtrage personnalisée. Après avoir configuré ce paramètre, le système de synchronisation des données ignore les configurations table et column et utilise directement cette instruction SQL pour filtrer les données. Par exemple, pour synchroniser des données après une jointure multi-tables, vous pouvez utiliser select a,b from table_a join table_b on table_a.id = table_b.id. Lorsque vous configurez querySql, Oracle Reader ignore les configurations table, column et where.

Non

S/O

fetchSize

Nombre de lignes que le plug-in récupère auprès du serveur de base de données par lot. Cette valeur détermine le nombre d'allers-retours réseau entre le système de synchronisation des données et le serveur de base de données, et peut améliorer considérablement les performances d'extraction des données.

Remarque

Une valeur fetchSize trop élevée (>2048) peut provoquer des erreurs OOM pendant le processus de synchronisation des données.

Non

1,024

Démo du script Writer

{ "type":"job", "version":"2.0",// The version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"oracle",// The plug-in name. "parameter":{ "postSql":[],// The SQL statements to run after the data synchronization task is complete. "datasource":"", "session":[],// The database connection session parameters. "column":[// The columns. "id", "name" ], "encoding":"UTF-8",// The encoding format. "batchSize":1024,// The number of records to commit in each batch. "table":"",// The table name. "preSql":[]// The SQL statements to run before the data synchronization task starts. }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// The error count. }, "speed":{ "throttle":true,// When throttle is set to false, the mbps parameter does not take effect and throttling is disabled. When throttle is set to true, throttling is enabled. "concurrent":1, // The concurrency. "mbps":"12"// The throttling rate. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Paramètres du script de l'éditeur

Paramètre

description

Obligatoire

Valeur par défaut

datasource

Nom de la source de données. Vous pouvez ajouter une source de données en mode script. La valeur de ce paramètre doit correspondre exactement au nom de la source de données ajoutée.

Oui

S/O

table

Nom de la table de destination. Si le schéma de la table diffère du nom d'utilisateur configuré précédemment, spécifiez la table au format schema.table.

Oui

S/O

writeMode

Mode d'écriture. Seule l'option INSERT INTO est prise en charge. En cas de conflit sur une clé primaire ou un index unique, les lignes concernées ne sont pas écrites et sont enregistrées comme des données erronées.

Non

insert into

column

Colonnes de la table de destination dans lesquelles les données sont écrites. Séparez les noms de colonne par des virgules (,). Par exemple : "column": ["id","name","age"]. Pour écrire les données dans toutes les colonnes dans l'ordre, utilisez un astérisque (*). Par exemple : "column":["*"].

Oui

S/O

preSql

Instructions SQL à exécuter avant le démarrage de la tâche de synchronisation des données. Le mode Assistant n'autorise qu'une seule instruction SQL, tandis que le mode script en prend plusieurs en charge. Utilisez ce paramètre, par exemple, pour supprimer d'anciennes données.

Non

S/O

postSql

Instructions SQL à exécuter une fois la tâche de synchronisation des données terminée. Le mode Assistant n'autorise qu'une seule instruction SQL, tandis que le mode script en prend plusieurs en charge. Utilisez ce paramètre, par exemple, pour ajouter un horodatage.

Non

S/O

batchSize

Nombre d'enregistrements validés par lot. Cette valeur réduit considérablement le nombre d'allers-retours réseau entre le système de synchronisation des données et Oracle, améliorant ainsi le débit global. Une valeur trop élevée peut provoquer des erreurs OOM (Out Of Memory) lors de la synchronisation.

Non

1,024