すべてのプロダクト
Search
ドキュメントセンター

DataWorks:Oracle データソース

最終更新日:Jul 05, 2025

DataWorks は、Oracle データソースからデータを読み取り、Oracle データソースにデータを書き込むための Oracle Reader と Oracle Writer を提供しています。コードレス ユーザーインターフェース(UI)またはコードエディターを使用して、Oracle データソースのデータ同期タスクを構成できます。このトピックでは、Oracle データソースとのデータ同期の機能について説明します。

サポートされている Oracle バージョン

バッチデータの読み取りと書き込み

バージョン

バッチデータ読み取り用の Oracle Reader

バッチデータ書き込み用の Oracle Writer

Oracle 11.2 または 11gR2

サポートされています

サポートされています

Oracle 12.1 または 12cR1

サポートされています

サポートされています

Oracle 12.2 または 12cR2

サポートされています(以降のバージョンの Oracle の機能ではサポートされていません)

サポートされています(以降のバージョンの Oracle の機能ではサポートされていません)

Oracle 18.3

サポートされています(以降のバージョンの Oracle の機能ではサポートされていません)

サポートされています(以降のバージョンの Oracle の機能ではサポートされていません)

Oracle 19.x

サポートされています(以降のバージョンの Oracle の機能ではサポートされていません)

サポートされています(以降のバージョンの Oracle の機能ではサポートされていません)

Oracle 21.1

サポートされています(以降のバージョンの Oracle の機能ではサポートされていません)

サポートされています(以降のバージョンの Oracle の機能ではサポートされていません)

重要

Oracle Writer は ojdbc6-12.1.1.jar ドライバーを使用します。

リアルタイムデータの読み取り

  • サポートされている Oracle データベースバージョン:

    12c non cdb18c non cdb19c non cdb19c cdb、および 11g R2 以降のバージョン

  • サポートされていない Oracle データベースバージョン:

    12c cdb および 18c cdb

説明

Oracle 12c 以降の Oracle データベースは、コンテナデータベース(CDB)として機能し、複数のプラガブルデータベース(PDB)をホストできます。

制限

  • データ同期では、UTF-8、AL32UTF8、AL16UTF16、ZHS16GBK のエンコーディング形式がサポートされています。

  • 1 日に最大 500 GB の増分データを Oracle インスタンスからリアルタイムで同期できます。

  • Data Integration における Oracle データソースからのデータのリアルタイム同期は、ログファイルを分析するために使用される Oracle LogMiner ユーティリティに基づいて実装されています。プライマリ Oracle データベースでのみ、プライマリまたはセカンダリデータベースのサプリメンタルロギング機能を有効にできます。

  • バッチ同期の際にビューのデータを読み取ることができます。

データ型

データ型

バッチデータ読み取り用の Oracle Reader

バッチデータ書き込み用の Oracle Writer

リアルタイムデータ読み取り

NUMBER

サポートされています

サポートされています

サポートされています

BINARY FLOAT

サポートされています

サポートされています

サポートされています

BINARY DOUBLE

サポートされています

サポートされています

サポートされています

CHAR

サポートされています

サポートされています

サポートされています

NCHAR

サポートされています

サポートされています

サポートされています

VARCHAR2

サポートされています

サポートされています

サポートされています

NVARCHAR2

サポートされています

サポートされています

サポートされています

DATE

サポートされています

サポートされています

サポートされています

TIMESTAMP

サポートされています

サポートされています

サポートされています

TIMESTAMP WITH TIME ZONE

サポートされています

サポートされています

サポートされていません

TIMESTAMP WITH LOCAL TIME ZONE

サポートされています

サポートされています

サポートされていません

CLOB

サポートされています

サポートされています

サポートされています

BLOB

サポートされています

サポートされています

サポートされています

RAW

サポートされています

サポートされています

サポートされています

ROWID

サポートされていません

サポートされていません

サポートされています

UROWID

サポートされていません

サポートされていません

サポートされています

FLOAT

サポートされています

サポートされています

サポートされています

INTERVAL DAY TO SECOND

サポートされていません

サポートされていません

サポートされています

INTERVAL YEAR TO MONTH

サポートされていません

サポートされていません

サポートされています

BFILE

サポートされていません

サポートされていません

サポートされていません

LONG

サポートされていません

サポートされていません

サポートされていません

LONG RAW

サポートされていません

サポートされていません

サポートされていません

NCLOB

サポートされています

サポートされています

サポートされていません

STRUCT

サポートされています

サポートされています

サポートされていません

ユーザー定義型

サポートされていません

サポートされていません

サポートされていません

AnyType

サポートされていません

サポートされていません

サポートされていません

AnyData

サポートされていません

サポートされていません

サポートされていません

AnyDataSet

サポートされていません

サポートされていません

サポートされていません

XmlType

サポートされていません

サポートされていません

サポートされていません

空間型

サポートされていません

サポートされていません

サポートされていません

メディア型

サポートされていません

サポートされていません

サポートされていません

次の表に、Oracle Reader がデータ型を変換する際に基づくデータ型のマッピングを示します。

カテゴリ

Oracle データ型

整数

NUMBER、ROWID、INTEGER、INT、および SMALLINT

浮動小数点

NUMERIC、DECIMAL、FLOAT、DOUBLE PRECISION、および REAL

文字列

LONG、CHAR、NCHAR、VARCHAR、VARCHAR2、NVARCHAR2、CLOB、NCLOB、CHARACTER、CHARACTER VARYING、CHAR VARYING、NATIONAL CHARACTER、NATIONAL CHAR、NATIONAL CHARACTER VARYING、NATIONAL CHAR VARYING、および NCHAR VARYING

日付と時刻

TIMESTAMP および DATE

ブール値

BIT および BOOLEAN

バイナリ

BLOB、BFILE、RAW、および LONG RAW

データ同期前に Oracle 環境を準備する

DataWorks を使用して Oracle データソースとの間でデータを同期する前に、Oracle 環境を準備する必要があります。これにより、データ同期タスクを構成し、Oracle データソースとの間でデータを想定どおりに同期できるようになります。次の情報では、Oracle データソースとのデータ同期のために Oracle 環境を準備する方法について説明します。

Oracle データベースのバージョンを確認する

サポートされている Oracle データベースのバージョンは、同期のシナリオによって異なります。データベースとの間でデータを同期する前に、Oracle データベースのバージョンがサポートされているかどうかを確認してください。

  1. 次のいずれかの文を実行して、Oracle データベースのバージョンを確認できます。

    • 文 1:

      select * from v$version;
    • 文 2:

      select version from v$instance;
  2. Oracle データベースのバージョンが 12c または 18c の場合は、次の文を実行して、データベースが CDB として機能できるかどうかを確認する必要があります。Oracle データベースが CDB として機能できる場合、この Oracle データベースは DataWorks のリアルタイム同期タスクではサポートされていません。

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

必要な権限を持つアカウントを準備する

Oracle データベースにログインするために使用するアカウントを準備する必要があります。アカウントは、Oracle データベースに対する必要な権限を持っている必要があります。

  1. アカウントを作成します。詳細については、「Oracle データベースにアクセスするためのアカウントを作成する」をご参照ください。

  2. アカウントに必要な権限を付与します。

    次の文を実行して、アカウントに必要な権限を付与できます。特定の文を実行するときは、データ同期用アカウント を作成したアカウントに置き換えてください。

    grant create session to 'データ同期用アカウント';  // 同期アカウントにデータベースへのアクセスを承認します。
    grant connect to 'データ同期用アカウント';  // 同期アカウントにデータベースへの接続を承認します。
    grant select on nls_database_parameters to 'データ同期用アカウント';  // 同期アカウントに nls_database_parameters の設定を照会する権限を付与します。
    grant select on all_users to 'データ同期用アカウント';  // 同期アカウントにデータベース内のすべてのユーザーを照会する権限を付与します。
    grant select on all_objects to 'データ同期用アカウント';  // 同期アカウントにデータベース内のすべてのオブジェクトを照会する権限を付与します。
    grant select on DBA_MVIEWS to 'データ同期用アカウント';  // 同期アカウントにデータベースのマテリアライズドビューを確認する権限を付与します。
    grant select on DBA_MVIEW_LOGS to 'データ同期用アカウント';  // 同期アカウントにデータベースのマテリアライズドビューログを表示する権限を付与します。
    grant select on DBA_CONSTRAINTS to 'データ同期用アカウント';  // 同期アカウントにデータベース内のすべてのテーブルの制約を表示する権限を付与します。
    grant select on DBA_CONS_COLUMNS to 'データ同期用アカウント';  // 同期アカウントにデータベース内のすべてのテーブルの指定された制約を満たす列に関する情報を表示する権限を付与します。
    grant select on all_tab_cols to 'データ同期用アカウント';  // 同期アカウントにデータベースのテーブル、ビュー、およびクラスタの列に関する情報を表示する権限を付与します。
    grant select on sys.obj$ to 'データ同期用アカウント';  // 同期アカウントにデータベース内のオブジェクトを表示する権限を付与します。sys.obj$ は、データディクショナリテーブルに含まれるオブジェクトテーブルを示します。オブジェクトテーブルにはすべてのオブジェクトが含まれています。
    grant select on SYS.COL$ to 'データ同期用アカウント';  // 同期アカウントにデータベースのテーブルの列の定義を表示する権限を付与します。SYS.COL$ は、テーブルの列の定義を格納します。
    grant select on sys.USER$ to 'データ同期用アカウント';  // 同期アカウントにデータベースのシステムテーブルを表示する権限を付与します。sys.USER$ は、デフォルトのユーザーセッションサービスを示します。
    grant select on sys.cdef$ to 'データ同期用アカウント';  // 同期アカウントにデータベースのシステムテーブルを表示する権限を付与します。
    grant select on sys.con$ to 'データ同期用アカウント';  // 同期アカウントにデータベースの制約を表示する権限を付与します。sys.con$ は制約を記録します。
    grant select on all_indexes to 'データ同期用アカウント';  // 同期アカウントにデータベースのすべてのインデックスを表示する権限を付与します。
    grant select on v_$database to 'データ同期用アカウント';  // 同期アカウントにデータベースの v_$database ビューを確認する権限を付与します。
    grant select on V_$ARCHIVE_DEST to 'データ同期用アカウント';  // 同期アカウントにデータベースの V_$ARCHIVE_DEST ビューを確認する権限を付与します。
    grant select on v_$log to 'データ同期用アカウント';  // 同期アカウントにデータベースの v_$log ビューを確認する権限を付与します。v_$log は、制御ファイルに関するログインformation を表示します。
    grant select on v_$logfile to 'データ同期用アカウント';  // 同期アカウントにデータベースの v_$logfile ビューを確認する権限を付与します。v_$logfile には、REDO ログファイルに関する情報が含まれています。
    grant select on v_$archived_log to 'データ同期用アカウント';  // 同期アカウントにデータベースの v$archived_log ビューを確認する権限を付与します。v$archived_log には、アーカイブログに関する情報が含まれています。
    grant select on V_$LOGMNR_CONTENTS to 'データ同期用アカウント';  // 同期アカウントにデータベースの V_$LOGMNR_CONTENTS ビューを確認する権限を付与します。
    grant select on DUAL to 'データ同期用アカウント';   // 同期アカウントにデータベースの DUAL テーブルを表示する権限を付与します。DUAL は、SELECT 構文規則を含む仮想テーブルです。Oracle では、DUAL テーブルには 1 つのレコードのみが保持されます。
    grant select on v_$parameter to 'データ同期用アカウント';  // 同期アカウントにデータベースの v_$parameter ビューを確認する権限を付与します。v$parameter は、データベースのパラメーターの値を格納する動的ディクショナリテーブルです。
    grant select any transaction to 'データ同期用アカウント';  // 同期アカウントにデータベースのトランザクションを表示する権限を付与します。
    grant execute on SYS.DBMS_LOGMNR to 'データ同期用アカウント';  // 同期アカウントに LOGMNR ツールを使用する権限を付与します。LOGMNR ツールは、トランザクションを分析し、失われたデータを回復するのに役立ちます。
    grant alter session to 'データ同期用アカウント';  // 同期アカウントにデータベースの接続設定を変更する権限を付与します。
    grant select on dba_objects to 'データ同期用アカウント';  // 同期アカウントにデータベース内のすべてのオブジェクトを表示する権限を付与します。
    grant select on v_$standby_log to 'データ同期用アカウント';  // 同期アカウントにデータベースの v_$standby_log ビューを確認する権限を付与します。v_$standby_log には、セカンダリデータベースのアーカイブログが含まれています。
    grant select on v_$ARCHIVE_GAP to 'データ同期用アカウント';  // 同期アカウントに不足しているアーカイブログを照会する権限を付与します。
    grant select on sys.ICOL$ to 'データ同期用アカウント'; // 同期アカウントにデータベース内のオブジェクトを表示する権限を付与します。 sys.obj$ はデータディクショナリテーブルに含まれるオブジェクトテーブルを示します。オブジェクトテーブルにはすべてのオブジェクトが含まれています。
    grant select on V$THREAD to 'データ同期用アカウント'; // 同期アカウントにインスタンススレッド情報を表示する権限を付与します。V$THREAD ビューは、Oracle の動的パフォーマンスビュー内のスレッドステータステーブルです。Real Application Clusters(RAC)環境の各インスタンスのスレッドステータスを格納し、増分解析中にインスタンスの状態とログのソースを判断するために使用されます。

    完全データのバッチ同期を実装するには、次の文を実行して、すべてのテーブルに対するクエリ権限を同期アカウントに付与する必要もあります。

    grant select any table to 'データ同期用アカウント';

    12c 以降の Oracle データベースの場合、次の文を実行して、ログマイニング権限を同期アカウントに付与する必要があります。ログマイニング機能は、12c より前のバージョンの Oracle データベースの組み込み機能です。このようなデータベースでは、次の文を実行する必要はありません。

    grant LOGMINING TO 'データ同期用アカウント';

アーカイブロギングとサプリメンタルロギングを有効にし、別の REDO ログファイルに切り替える

  1. 次の SQL 文を実行して、アーカイブロギングを有効にします。

    shutdown immediate;
    startup mount;
    alter database archivelog;
    alter database open;
  2. サプリメンタルロギングを有効にします。

    SQL 文:

    alter database add supplemental log data(primary key) columns; // プライマリキー列のサプリメンタルロギングを有効にします。
    alter database add supplemental log data(unique) columns; // 一意なインデックス列のサプリメンタルロギングを有効にします。

  3. 別の REDO ログファイルに切り替えます。

    サプリメンタルロギングを有効にした後、次の文を複数回実行して、別の REDO ログファイルに切り替える必要があります。次の文を 5 回実行することをお勧めします。

    alter system switch logfile;
    説明

    これにより、現在のログファイルがいっぱいになった後、データが次のログファイルに書き込まれるようになります。実行された操作のレコードは失われません。これは、データの回復を容易にします。

Oracle データベースの文字エンコーディング形式を確認する

次の文を実行して、データベースの文字エンコーディング形式を確認します。

select * from v$nls_parameters where PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
  • v$nls_parameters は、データベースのパラメーターの値を格納します。

  • NLS_CHARACTERSET はデータベース文字セットを示します。NLS_NCHAR_CHARACTERSET は各国語文字セットを示します。これら 2 つのセットは、それぞれの文字タイプのデータを格納するために使用されます。

説明

データ同期では、UTF-8、AL32UTF8、AL16UTF16、ZHS16GBK のエンコーディング形式がサポートされています。データベースにデータ同期でサポートされていない文字エンコーディング形式が含まれている場合は、データを同期する前に形式を変更してください。

Oracle データベースのテーブルのデータ型を確認する

SELECT 文を実行して、データベース内のテーブルのデータ型を照会できます。'tablename' テーブルのデータ型を照会するために実行されるサンプル文:

select COLUMN_NAME,DATA_TYPE from all_tab_columns where TABLE_NAME='tablename';
  • COLUMN_NAME: 列の名前。

  • DATA_TYPE: 列のデータ型。

  • all_tab_columns: データベースのテーブルのすべての列に関する情報を格納するビュー。

  • TABLE_NAME: 照会するテーブルの名前。上記の文を実行するときは、'tablename' を照会するテーブルの名前に置き換えてください。

select * from 'tablename'; 文を実行して、目的のテーブルに関する情報を照会し、テーブルの列のデータ型を取得することもできます。

データソースを追加する

データソース管理 の手順に従って、必要なデータソースを DataWorks に追加する必要があります。 DataWorks コンソールでパラメーターのヒントを表示して、データソースを追加するときのパラメーターの意味を理解できます

データ同期タスクを開発する

同期タスクのエントリポイントと構成手順については、次の構成ガイドを参照してください。

単一テーブルのデータを同期するためのバッチ同期タスクを構成する

単一テーブルのデータを同期するためのリアルタイム同期タスクを構成する

構成手順の詳細については、「DataStudio でリアルタイム同期タスクを構成する」をご参照ください。

データベース内のすべてのデータのバッチ同期、データベース内の完全データまたは増分データのリアルタイム同期、およびシャーディングデータベース内のシャーディングテーブルからのデータのリアルタイム同期を実装するための同期設定を構成する

構成手順の詳細については、「Data Integration で同期タスクを構成する」をご参照ください。

追加情報

  • Oracle、PolarDB、または MySQL からデータを同期するためにリアルタイム同期ノードを実行すると、エラーが繰り返し報告されるのはなぜですか?

  • プライマリデータベースとセカンダリデータベース間のデータ同期

    災害復旧のためにセカンダリ Oracle データベースをデプロイできます。セカンダリデータベースは、バイナリログに基づいてプライマリデータベースからデータを継続的に同期します。プライマリデータベースとセカンダリデータベース間のデータの遅延を防ぐことはできません。これは、データの不整合につながる可能性があります。

  • データ整合性制御

    Oracle は、データクエリの強力な整合性をサポートするリレーショナルデータベース管理システム(RDBMS)です。同期タスクが開始される前に、データベーススナップショットが作成されます。Oracle Reader は、データベーススナップショットからデータを読み取ります。したがって、データ同期の間に新しいデータがデータベースに書き込まれた場合、Oracle Reader は新しいデータを取得できません。

    同期タスクで Oracle Reader が並列スレッドを使用してデータを読み取るようにした場合、データの整合性を確保することはできません。

    Oracle Reader は、splitPk パラメーターの値に基づいてソーステーブルをシャーディングし、並列スレッドを使用してデータを読み取ります。これらの並列スレッドは異なるトランザクションに属し、異なる時点でデータを読み取ります。したがって、並列スレッドは異なるスナップショットを観察します。

    同期タスクに並列スレッドを使用する場合、データの不整合を防ぐことはできません。次の回避策を使用できます。

    • 同期タスクで Oracle Reader が単一スレッドを使用してデータを読み取るようにします。これは、Oracle Reader のシャードキーを指定する必要がないことを示します。こうすることで、データの整合性は確保されますが、データの同期効率は低下します。

    • データ同期の間にソーステーブルにデータが書き込まれないようにします。これにより、データ同期の間にソーステーブルのデータが変更されないことが保証されます。たとえば、ソーステーブルをロックしたり、プライマリデータベースとセカンダリデータベース間のデータ同期を無効にすることができます。こうすることで、データは効率的に同期されますが、実行中のサービスが中断される可能性があります。

  • 文字エンコーディング

    Oracle Reader は、Java Database Connectivity(JDBC)を使用してデータを読み取ります。これにより、Oracle Reader は文字のエンコーディング形式を自動的に変換できます。したがって、エンコーディング形式を指定する必要はありません。

  • 増分データ同期

    Oracle Reader は JDBC を使用してデータベースに接続し、WHERE 句付きの SELECT 文 を使用して増分データを読み取ります。

    • バッチデータの場合、増分の追加、更新、および削除操作(論理削除操作を含む)はタイムスタンプによって区別されます。特定のタイムスタンプに基づいて WHERE 句を指定します。タイムスタンプで示される時刻は、前回の同期の最新のタイムスタンプで示される時刻より後である必要があります。

    • ストリーミングデータの場合、特定のレコードの ID に基づいて WHERE 句を指定します。ID は、前回の同期に含まれる最大 ID より大きい必要があります。

    追加または変更されたデータを区別できない場合、Oracle Reader は完全データのみを読み取ることができます。

  • 構文検証

    Oracle Reader では、querySql パラメーターを使用してカスタム SELECT 文を指定できますが、これらの文の構文は検証されません。

付録: コードとパラメーター

コードエディターを使用してバッチ同期タスクを構成する

コードエディターを使用してバッチ同期タスクを構成する場合は、統一スクリプト形式の要件に基づいて、スクリプトに関連パラメーターを構成する必要があります。詳細については、「コードエディターを使用してバッチ同期タスクを構成する」をご参照ください。次の情報では、コードエディターを使用してバッチ同期タスクを構成するときにデータソースに構成する必要のあるパラメーターについて説明します。

Oracle Reader のコード

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "oracle",
            "parameter": {
                "selectedDatabase": "AUTOTEST", //選択されたデータベース
                "indexes": [], //インデックス
                "datasource": "oracle_test", //データソース
                "envType": 0, //環境タイプ
                "useSpecialSecret": true, //特別な秘密を使用する
                "column": [
                    "id" //カラム
                ],
                "where": "", //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" //終了
            }
        ]
    }
}

Oracle Reader のコードのパラメーター

パラメーター

説明

必須

デフォルト値

datasource

データソースの名前。追加されたデータソースの名前と同じである必要があります。コードエディターを使用してデータソースを追加できます。

はい

デフォルト値なし

selectedDatabase

データを読み取るデータベースのスキーマ。

はい

デフォルト値なし

table

データを読み取るテーブルの名前。テーブルの名前は、schema.tableName 形式である必要があります。

説明

たとえば、selectedDatabase パラメーターが AUTOTEST に設定され、テーブル名が table01 の場合、table パラメーターを AUTOTEST.table01 に設定する必要があります。

はい

デフォルト値なし

column

データを読み取る列の名前。JSON 配列で名前を指定します。デフォルト値は ["*"] で、ソーステーブルのすべての列を示します。

  • 読み取る特定の列を選択できます。

  • 列の順序を変更できます。これは、ソーステーブルのスキーマで指定された順序とは異なる順序で列を指定できることを示します。

  • 定数がサポートされています。列名は JSON 形式で配置する必要があります。

    ["id", "1", "'mingya.wmy'", "null", "to_char(a + 1)", "2.3" , "true"]
    • id: 列名。

    • 1: 整数定数。

    • 'mingya.wmy': 文字列定数。一重引用符 (') で囲みます。

    • null: ヌルポインター。

    • to_char(a + 1): 関数式。

    • 2.3: 浮動小数点定数。

    • true: ブール値。

  • column パラメーターを空にすることはできません。

はい

デフォルト値なし

splitFactor

シャーディング係数。同期するデータをシャーディングする部分の数を決定します。バッチ同期タスクに並列処理を構成する場合、部分の数は次の式に基づいて計算されます。並列スレッド数 × シャーディング係数。たとえば、並列スレッド数とシャーディング係数が 5 の場合、同期するデータがシャーディングされる部分の数は 25 です。

説明

1 から 100 までのシャーディング係数を指定することをお勧めします。100 を超えるシャーディング係数を指定すると、メモリ不足 (OOM) エラーが発生する可能性があります。

いいえ

5

splitMode

シャードモード。有効な値:

  • averageInterval: 平均サンプリング。このモードでは、splitPk パラメーターに基づいて、すべてのデータの最大値と最小値が識別されます。次に、シャードの数に基づいてデータが均等に分散されます。

  • randomSampling: ランダムサンプリング。このモードでは、データエントリがランダムにシャーディングポイントとして識別されます。

説明

splitMode パラメーターは、splitPk パラメーターと一緒に使用する必要があります。

  • splitPk パラメーターが数値フィールドに設定されている場合は、splitMode パラメーターを averageInterval に設定します。

  • splitPk パラメーターが文字列フィールドに設定されている場合は、splitMode パラメーターを randomSampling に設定します。

いいえ

randomSampling

splitPk

Oracle Reader がデータを読み取るときにデータシャーディングに使用されるフィールド。このパラメーターを構成すると、ソーステーブルはこのパラメーターの値に基づいてシャーディングされます。次に、Data Integration は並列スレッドを実行してデータを読み取ります。これにより、データ同期の効率が向上します。

  • splitPk パラメーターをテーブルのプライマリキー列の名前に設定することをお勧めします。プライマリキー列に基づいてデータを異なるシャードに均等に分散させることができ、特定のシャードにのみ集中的に分散されるのを防ぎます。

  • splitPk パラメーターは、数値や文字列などのデータ型のデータシャーディングをサポートしています。splitMode パラメーターは、splitPk パラメーターと一緒に使用する必要があります。

    • splitPk パラメーターが数値フィールドに設定されている場合は、splitMode パラメーターを averageInterval に設定します。

    • splitPk パラメーターが文字列フィールドに設定されている場合は、splitMode パラメーターを randomSampling に設定します。

  • splitPk パラメーターを構成しない場合、Oracle Reader は単一スレッドを使用してソーステーブルのすべてのデータを読み取ります。

説明

Oracle Reader を使用してビューからデータを読み取る場合、splitPk パラメーターを ROWID データ型のフィールドに設定することはできません。

いいえ

デフォルト値なし

where

WHERE 句。Oracle Reader は、tablecolumn、および where パラメーターの設定に基づいて SQL 文を生成し、その文を使用してデータを読み取ります。たとえば、テストでこのパラメーターを row_number() に設定できます。

  • WHERE 句を使用して増分データを読み取ることができます。

  • where パラメーターが指定されていないか空の場合、Data Integration はすべてのデータを読み取ります。

いいえ

デフォルト値なし

querySql (コードエディターでのみ使用可能)

絞り込んだデータフィルタリングに使用する SQL 文。このパラメーターを構成すると、Data Integration はこのパラメーターの値に基づいてデータをフィルタリングします。たとえば、データ同期のために複数のテーブルを結合する場合、このパラメーターを select a,b from table_a join table_b on table_a.id = table_b.id に設定できます。このパラメーターを構成すると、Oracle Reader は tablecolumn、および where パラメーターの設定を無視します。

いいえ

デフォルト値なし

fetchSize

一度に読み取るデータレコードの数。このパラメーターは、Data Integration とデータベース間のインタラクションの数を決定し、読み取り効率に影響します。

説明

このパラメーターを 2048 を超える値に設定すると、データ同期の間に OOM エラーが発生する可能性があります。

いいえ

1,024

Oracle Writer のコード

{
    "type":"job", //ジョブタイプ
    "version":"2.0",// バージョン番号。
    "steps":[
        { 
            "stepType":"stream", //ステップタイプ
            "parameter":{}, //パラメーター
            "name":"Reader", //リーダー
            "category":"reader" //カテゴリ
        },
        {
            "stepType":"oracle",// プラグイン名。
            "parameter":{
                "postSql":[],// 同期タスクの実行後に実行する SQL 文。
                "datasource":"", //データソース
                "session":[],// データベースへのセッションの設定。
                "column":[// 列の名前。
                    "id", //ID
                    "name" //名前
                ],
                "encoding":"UTF-8",// エンコーディング形式。
                "batchSize":1024,// 一度に書き込むデータレコードの数。
                "table":"",// テーブルの名前。
                "preSql":[]// 同期タスクの実行前に実行する SQL 文。
            },
            "name":"Writer", //ライター
            "category":"writer" //カテゴリ
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// 許容されるダーティデータレコードの最大数。
        },
        "speed":{
            "throttle":true,// スロットルを有効にするかどうかを指定します。値 false はスロットルが無効になっていることを示し、値 true はスロットルが有効になっていることを示します。mbps パラメーターは、throttle パラメーターが true に設定されている場合にのみ有効になります。
            "concurrent":1, // 並列スレッドの最大数。
            "mbps":"12"// 最大伝送速度。単位: MB/秒。
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader", //開始
                "to":"Writer" //終了
            }
        ]
    }
}

Oracle Writer のコードのパラメーター

パラメーター

説明

必須

デフォルト値

datasource

データソースの名前。追加されたデータソースの名前と同じである必要があります。コードエディターを使用してデータソースを追加できます。

はい

デフォルト値なし

table

データを書き込むテーブルの名前。テーブルがターゲットデータベースのデフォルトスキーマを使用している場合、このパラメーターをデータを書き込むテーブルの名前に設定する必要があります。テーブルがカスタムスキーマを使用している場合、このパラメーターを スキーマ名.データを書き込むテーブルの名前 形式で構成する必要があります。

はい

デフォルト値なし

writeMode

書き込みモード。有効な値: insert into。プライマリキーの競合または一意なインデックスの競合が発生した場合、競合する行にデータを書き込むことができず、これらの行に書き込まれなかったデータはダーティデータと見なされます。

いいえ

insert into

column

データを書き込む列の名前。"column": ["id","name","age"] のように、コンマ (,) で区切ります。ターゲットテーブルのすべての列にデータを書き込む場合は、"column":["*"] のように、このパラメーターをアスタリスク (*) に設定します。

はい

デフォルト値なし

preSql

同期タスクの実行前に実行する SQL 文。たとえば、このパラメーターを古いデータを削除するために使用される SQL 文に設定できます。コードレス UI では 1 つの SQL 文のみを実行でき、コードエディターでは複数の SQL 文を実行できます。

いいえ

デフォルト値なし

postSql

同期タスクの実行後に実行する SQL 文。たとえば、このパラメーターをタイムスタンプを追加するために使用される SQL 文に設定できます。コードレス UI では 1 つの SQL 文のみを実行でき、コードエディターでは複数の SQL 文を実行できます。

いいえ

デフォルト値なし

batchSize

一度に書き込むデータレコードの数。ビジネス要件に基づいてこのパラメーターを適切な値に設定します。これにより、Data Integration と Oracle 間のインタラクションが大幅に削減され、スループットが向上します。このパラメーターを過度に大きな値に設定すると、データ同期の間に OOM エラーが発生する可能性があります。

いいえ

1,024