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

DataWorks:Oracle

最終更新日:Mar 03, 2026

Oracle データソースを使用すると、コードレス UI またはコードエディタでデータ同期タスクを設定することで、Oracle データベースから読み取りおよび書き込みが可能です。本トピックでは、DataWorks の Oracle データ同期機能について説明します。

サポートされるバージョン

バッチデータの読み取りおよび書き込み

バージョン

Oracle Reader

Oracle Writer

Oracle 11.2 または 11gR2

サポート対象

サポート対象

Oracle 12.1 または 12cR1

サポート対象

サポート対象

Oracle 12.2 または 12cR2

サポート対象(本バージョンの新機能はサポート対象外)

サポート対象(本バージョンの新機能はサポート対象外)

Oracle 18.3

サポート対象(本バージョンの新機能はサポート対象外)

サポート対象(本バージョンの新機能はサポート対象外)

Oracle 19.x

サポート対象(本バージョンの新機能はサポート対象外)

サポート対象(本バージョンの新機能はサポート対象外)

Oracle 21.1

サポート対象(本バージョンの新機能はサポート対象外)

サポート対象(本バージョンの新機能はサポート対象外)

重要

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

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

  • サポート対象:

    Oracle Database のバージョン 11g R2 以降12c non-CDB18c non-CDB19c non-CDB、および 19c CDB

  • 非サポート:

    Oracle Database のバージョン 12c CDB および 18c CDB

  • リアルタイム完全データベース同期タスクのソースとして Oracle を使用する場合、アーカイブログ機能を有効化する必要があります。詳細については、「Oracle 環境の準備」をご参照ください。

説明

コンテナデータベース(CDB)は、Oracle Database 12c 以降のバージョンで導入された新しいアーキテクチャであり、1 つ以上のプラガブルデータベース(PDB)をホストできます。

制限事項

  • Oracle インスタンスの `NLS_CHARACTERSET および `NLS_NCHAR_CHARACTERSET パラメーターは、以下の値のいずれかに設定する必要があります:`AL32UTF8、`AL16UTF16、`ZHS16GBK、または `UTF8

  • 単一の Oracle インスタンスに対して、リアルタイム同期は 1 日あたり最大 500 GB の増分データをサポートします。

  • Oracle スタンバイデータベースからのリアルタイム読み取りの場合、DataWorks は物理スタンバイデータベースのみをサポートします。このシナリオでは、DataWorks がアーカイブログをプルするため、プライマリデータベースからの同期と比較して遅延が大きくなります。アーカイブログの生成速度が遅延を決定します。

  • リアルタイム同期はビューをサポートしていませんが、バッチ同期はビューの読み取りをサポートしています

  • DataWorks は、リアルタイム読み取りに Oracle LogMiner を使用します。Oracle プライマリデータベースで補足ログおよびアーカイブログを有効化する必要があります。

  • インデックス主導テーブル(IOT)はサポートされていません。

  • すべての列が LOB 型(BLOBCLOB、または NCLOB)であるテーブルはサポートされていません。

  • テーブル名および列名には漢字を含めることはできません。

  • テーブル名は 30 バイトを超えてはなりません。

サポートされるデータの型

バッチ読み取り

バッチ書き込み

リアルタイム読み取り

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、RAWID、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、BOOL

バイナリ

BLOB、BFILE、RAW、LONG RAW

Oracle 環境の準備

DataWorks を使用して Oracle データベースからデータを同期する前に、Oracle 環境を準備してください。この準備により、データ同期タスクがスムーズに実行されます。本トピックでは、ソース Oracle データベースに必要な構成について説明します。

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

サポートされる Oracle Database のバージョンは、同期タスクによって異なります。開始する前に、ご利用の Oracle データベースのバージョンがサポート対象であることを確認してください。

  1. Oracle データベースのバージョンを確認するには、以下のいずれかの文を実行します。

    • 文 1:

      select * from v$version;
    • 文 2:

      select version from v$instance;
  2. Oracle データベースのバージョンが 12c または 18c の場合、以下の文を実行して、データベースが cdb 型であるかどうかをさらに確認する必要があります。DataWorks Data Integration のリアルタイム同期タスクでは、現在、バージョン 12c および 18ccdb 型 Oracle データベースはサポートされていません。

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

アカウントの作成および権限の付与

データ同期用のデータベースユーザーアカウントを作成します。このアカウントには特定の権限が必要です。

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

  2. 権限を付与します。

    以下のコマンドを実行して、アカウントに関連する権限を追加できます。コマンドを実行する際には、'sync_account' を上記で作成したアカウントに置き換えてください。

    grant create session to 'your_sync_user';  -- ログイン権限を付与します。
    grant connect to 'your_sync_user';  -- データベースへの接続権限を付与します。
    grant select on nls_database_parameters to 'your_sync_user';  -- nls_database_parameters システム構成を照会する権限を付与します。
    grant select on all_users to 'your_sync_user';  -- データベース内のすべてのユーザーを照会する権限を付与します。
    grant select on all_objects to 'your_sync_user';  -- データベース内のすべてのオブジェクトを照会する権限を付与します。
    grant select on DBA_MVIEWS to 'your_sync_user';  -- データベース内のすべてのマテリアライズドビューを表示する権限を付与します。
    grant select on DBA_MVIEW_LOGS to 'your_sync_user';  -- マテリアライズドビューのログを表示する権限を付与します。
    grant select on DBA_CONSTRAINTS to 'your_sync_user';  -- すべてのテーブルの制約情報を表示する権限を付与します。
    grant select on DBA_CONS_COLUMNS to 'your_sync_user';  -- 制約内の列に関する情報を表示する権限を付与します。
    grant select on all_tab_cols to 'your_sync_user';  -- すべてのテーブル、ビュー、およびクラスターの列情報を表示する権限を付与します。
    grant select on sys.obj$ to 'your_sync_user';  -- データベースオブジェクトを表示する権限を付与します。sys.obj$ テーブルは、Oracle データディクショナリ内のオブジェクトの基本テーブルです。
    grant select on SYS.COL$ to 'your_sync_user';  -- 列定義情報を表示する権限を付与します。SYS.COL$ には列定義が格納されています。
    grant select on sys.USER$ to 'your_sync_user';  -- システムユーザーテーブルを表示する権限を付与します。sys.USER$ にはデータベースユーザーに関する情報が格納されています。
    grant select on sys.cdef$ to 'your_sync_user';  -- システム cdef$ テーブルを表示する権限を付与します。
    grant select on sys.con$ to 'your_sync_user';  -- 制約情報を表示する権限を付与します。sys.con$ には制約情報が格納されています。
    grant select on all_indexes to 'your_sync_user';  -- データベース内のすべてのインデックスを表示する権限を付与します。
    grant select on v_$database to 'your_sync_user';  -- v_$database ビューへのアクセス権限を付与します。
    grant select on V_$ARCHIVE_DEST to 'your_sync_user';  -- V_$ARCHIVE_DEST ビューへのアクセス権限を付与します。
    grant select on v_$log to 'your_sync_user';  -- v_$log ビューへのアクセス権限を付与します。このビューは、制御ファイルからログファイル情報を表示します。
    grant select on v_$logfile to 'your_sync_user';  -- v_$logfile ビューへのアクセス権限を付与します。このビューには、リドログファイルに関する情報が含まれています。
    grant select on v_$archived_log to 'your_sync_user';  -- v$archived_log ビューへのアクセス権限を付与します。このビューには、アーカイブログに関する情報が含まれています。
    grant select on V_$LOGMNR_CONTENTS to 'your_sync_user';  -- V_$LOGMNR_CONTENTS ビューへのアクセス権限を付与します。
    grant select on DUAL to 'your_sync_user';   -- DUAL テーブルへのアクセス権限を付与します。DUAL テーブルは、SELECT 構文規則を満たすために使用される仮想テーブルです。
    grant select on v_$parameter to 'your_sync_user';  -- v_$parameter ビューへのアクセス権限を付与します。このビューにはパラメーター設定が格納されています。
    grant select any transaction to 'your_sync_user';  -- 任意のトランザクションを照会する権限を付与します。
    grant execute on SYS.DBMS_LOGMNR to 'your_sync_user';  -- トランザクション分析およびデータ回復のために DBMS_LOGMNR ユーティリティを使用する権限を付与します。
    grant alter session to 'your_sync_user';  -- データベースセッションを変更する権限を付与します。
    grant select on dba_objects to 'your_sync_user';  -- すべてのデータベースオブジェクトを表示する権限を付与します。
    grant select on v_$standby_log to 'your_sync_user';  -- v_$standby_log ビューへのアクセス権限を付与します。このビューには、スタンバイデータベースのログファイルが含まれています。
    grant select on v_$ARCHIVE_GAP to 'your_sync_user';  -- 欠落しているアーカイブログを照会する権限を付与します。
    grant select on sys.ICOL$ to 'your_sync_user';  -- システム ICOL$ テーブル内の内部列情報を表示する権限を付与します。
    grant select on V$THREAD to 'your_sync_user';  -- インスタンススレッド情報を表示する権限を付与します。V$THREAD ビューは、増分解析時のインスタンスステータスおよびログソースを判断するために使用されます。

    バッチ完全同期の場合は、以下のコマンドを実行して、すべてのテーブルに対する照会権限も付与してください。

    grant select any table to 'your_sync_user'; 

    Oracle 12c 以降のバージョンでは、以下のコマンドを実行して、Log Mining 権限を付与してください。このコマンドは、それ以前のバージョンでは不要です(Log Mining 機能が組み込まれているため)。

    grant LOGMINING TO 'your_sync_user';

ログの有効化およびリドログファイルの切り替え

  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; -- データベース内のすべての一意なインデックス列に対して補足ログを有効化します。
    
    -- または、テーブルレベルで有効化できます:
    alter schema.table add supplemental log data(primary key) columns; -- 特定のテーブルのプライマリキー列に対して補足ログを有効化します。
    alter schema.table add supplemental log data(unique) columns; -- 特定のテーブルの一意なインデックス列に対して補足ログを有効化します。
  3. リドログファイルを切り替えます。

    補足ログを有効化した後、以下のコマンドを 5 回実行して、リドログファイルを切り替えます。

    alter system switch logfile;
    説明

    このコマンドを複数回実行すると、現在のログファイルがいっぱいになり、次のログファイルへと自動的に切り替わります。これにより、トランザクション記録の損失を防ぎ、データ回復を簡素化できます。

データベースの文字コードの確認

データベースの文字コードを確認するには、以下のコマンドをデータベース内で実行します。

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

  • NLS_CHARACTERSET はデータベース文字セット、NLS_NCHAR_CHARACTERSET は国別文字セットです。これらは、Oracle 内の 2 つの主要な文字データカテゴリのストレージタイプを指定します。

説明

データ同期では、現在 UTF8、AL32UTF8、AL16UTF16、ZHS16GBK のエンコーディングのみをサポートしています。データベースでサポートされていない文字コードを使用している場合、データ同期を実行する前に、それを変更する必要があります。

テーブルのデータの型の確認

テーブル内の列のデータの型を照会するには、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 に追加する必要があります。データソースを追加する際に、DataWorks コンソールで パラメーターの説明を表示して、各パラメーターの意味を確認できます

Oracle データ同期タスク

同期タスクの設定入口および手順については、以下の設定ガイドをご参照ください。

単一テーブルのバッチ同期タスク

単一テーブルのリアルタイム同期タスク

DataStudio でのリアルタイム同期タスクの設定をご参照ください。

完全データベース同期:バッチ、リアルタイム、およびシャーディング

リアルタイム完全データベース同期タスクの設定をご参照ください。

よくある質問

  • リアルタイム同期タスクにおける再発エラー

  • プライマリ/セカンダリ同期におけるデータ回復

    Oracle データベースをプライマリ・セカンダリディザスタリカバリ構成で使用する場合、プライマリ/セカンダリ同期の問題が発生することがあります。プライマリデータベースが障害を起こし、システムがセカンダリデータベースに切り替わった場合、セカンダリデータベースはバイナリログ(binlogs)を使用して継続的にプライマリからデータを復元します。データ同期固有の時間遅延に加え、ネットワーク遅延などの要因が重なると、プライマリデータベースとセカンダリデータベース間のデータに大きな差異が生じる可能性があります。このような場合、同期されたデータは、その時点におけるプライマリデータベースの完全なスナップショットとはなりません。

  • 整合性制約

    Oracle は、データ照会に対して強力な整合性を提供するリレーショナルデータベース管理システム(RDBMS)です。たとえば、同期タスクが実行中の場合、Oracle Reader は他のクライアントによって書き込まれた新しいデータをフェッチしません。これは、データベースのネイティブスナップショット機能によるものです。

    この動作により、シングルスレッドモデルにおけるデータ同期の整合性が保証されます。ただし、Oracle Reader が並列でデータを抽出するように構成されている場合、厳密なデータ整合性を保証することはできません。

    Oracle Reader が splitPk パラメーターを使用してデータのシャーディングを行う場合、データ同期を完了するために複数の並列タスクが起動されます。これらのタスクは同一の読み取りトランザクションの一部ではなく、間隔を空けて実行されます。その結果、同期されたデータは完全かつ整合性のあるデータスナップショットを表していません。

    マルチスレッド環境で整合性のあるスナップショットを実現することは、現時点では不可能であり、工学的な回避策が必要です。これらの回避策にはトレードオフが伴います。ご要件に応じて、以下のアプローチをご検討ください。

    • データのシャーディングを行わないシングルスレッド同期を使用します。この方法では整合性が保証されますが、処理速度は遅くなります。

    • データが静的になるよう、他のクライアントによるデータベースへの書き込みを防止します。テーブルロックを適用したり、セカンダリデータベースの同期を無効化したりすることで実現できますが、このアプローチはオンラインサービスに影響を与える可能性があります。

  • データベースのエンコーディング問題

    Oracle Reader は Java Database Connectivity(JDBC)を使用してデータを抽出します。JDBC は、さまざまな文字エンコーディングを自動的に処理および変換します。したがって、Oracle Reader に対してエンコーディングを明示的に指定する必要はなく、自動的に正しいエンコーディングを検出および変換します。

  • 増分データ同期の方法

    Oracle Reader は JDBC SELECT 文を使用してデータを抽出します。SELECT…WHERE… 句をクエリに使用することで、増分データ同期を実行できます。以下の方法をご検討ください。

    • アプリケーションがすべての挿入、更新、論理削除操作に対して、タイムスタンプを含む modify フィールドを設定する場合、Oracle Reader を構成して、前回の同期時刻より後のタイムスタンプを持つレコードをフィルターする WHERE 句を使用できます。

    • オートインクリメント ID を使用する追加専用データストリームの場合、Oracle Reader を構成して、前回の同期で得られた最大 ID より大きい ID を持つレコードをフィルターする WHERE 句を使用できます。

    データモデルに新規または変更されたレコードを区別するためのフィールドが含まれていない場合、Oracle Reader は増分データ同期を実行できません。このシナリオでは、完全データ同期を実行する必要があります。

  • SQL セキュリティ

    Oracle Reader の querySql 機能を使用すると、データ抽出用のカスタム SELECT 文を記述できます。ただし、Oracle Reader は querySql パラメーターに渡された SQL のセキュリティを検証しません。

付録:スクリプトの例およびパラメーター

コードエディタを使用したバッチ同期タスクの設定

コードエディタを使用してバッチ同期タスクを設定する場合、統一スクリプトフォーマット要件に基づいて、スクリプト内の関連パラメーターを設定する必要があります。詳細については、「コードエディタの使用」をご参照ください。以下では、コードエディタを使用してバッチ同期タスクを設定する際に、データソースに関連するパラメーターについて説明します。

Reader スクリプトの例

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

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

分割係数です。データ同期のシャード数を構成できます。同時実行スレッド数を複数構成した場合、データは 同時実行スレッド数 × splitFactor の数だけシャードに分割されます。たとえば、同時実行スレッド数が 5、splitFactor が 5 の場合、データは 25 個のシャード(5 × 5 = 25)に分割され、5 つの同時実行スレッドによって処理されます。

説明

このパラメーターの値は、1~100 の範囲を推奨します。大きな値を設定すると、OOM エラーが発生する可能性があります。

いいえ

5

splitMode

分割モードです。有効な値は以下のとおりです。

  • averageInterval:平均サンプリング。システムは splitPK を基準に最大値および最小値を算出し、シャード数に基づいてデータを均等に分割します。

  • randomSampling:ランダムサンプリング。システムは、特定の数のデータレコードをランダムに選択して分割ポイントとします。

説明

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

  • splitPk が数値に設定されている場合、splitModeaverageInterval に設定する必要があります。

  • splitPk が文字列に設定されている場合、splitModerandomSampling に設定する必要があります。

いいえ

randomSampling

splitPk

Oracle Reader がデータを読み取る際に、splitPk パラメーターを指定すると、データは 指定されたフィールド を基準にシャード化されます。データ同期タスクは、並列サブタスクを起動してデータを同期し、データ同期の効率を向上させます。

  • テーブルのプライマリキーを splitPk の値として使用することを推奨します。プライマリキーは通常、均等に分散されているため、作成されたシャード内でのデータホットスポットを防止できます。

  • splitPk パラメーターは、数値および文字列の値のみをサポートし、splitMode パラメーターと併用する必要があります。

    • splitPk が数値に設定されている場合、splitModeaverageInterval に設定する必要があります。

    • splitPk が文字列に設定されている場合、splitModerandomSampling に設定する必要があります。

  • splitPk パラメーターを指定しない場合、単一テーブルのデータはシャード化されません。Oracle Reader は単一チャネルを使用して完全データを同期します。

説明

splitPK フィールドは、ビューでは ROWID にすることはできません。

いいえ

なし

where

フィルター条件です。Oracle Reader は、指定された columntable、および where 条件を結合して SQL 文を作成し、その SQL 文に基づいてデータを読み取ります。たとえば、テスト目的で where 条件を row_number() に設定できます。

  • where 条件は、増分データ同期に使用できます。

  • where 条件を構成しないか、空のままにした場合、テーブル内の完全データが同期されます。

いいえ

なし

querySql(スクリプトモードでのみサポート)

一部のビジネスシナリオでは、where パラメーターではフィルター条件を十分に記述できません。このパラメーターを使用して、カスタムフィルター SQL 文を定義できます。このパラメーターを構成すると、データ同期システムは tablecolumn などのパラメーターを無視し、このパラメーターの内容を直接使用してデータをフィルターします。たとえば、複数テーブル結合後のデータを同期する必要がある場合、select a,b from table_a join table_b on table_a.id = table_b.id を使用します。この querySql パラメーターを構成すると、Oracle Reader は tablecolumn、および where パラメーターを無視します。

いいえ

なし

fetchSize

このパラメーターは、データベースサーバーから一度に取得するデータレコード数を指定します。このパラメーターは、データ同期システムとサーバー間のネットワーク通信回数を決定し、データ読み取りパフォーマンスを大幅に向上させることができます。

説明

fetchSize の値が大きすぎると(> 2048)、データ同期プロセスで OOM エラーが発生する可能性があります。

いいえ

1,024

Writer スクリプトの例

{
    "type":"job",
    "version":"2.0",// バージョン番号。 
    "steps":[
        { 
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"oracle",// プラグイン名。 
            "parameter":{
                "postSql":[],// データ同期タスク実行後に実行される SQL 文。 
                "datasource":"",
                "session":[],// データベース接続のセッションパラメーター。 
                "column":[// フィールド。 
                    "id",
                    "name"
                ],
                "encoding":"UTF-8",// エンコード形式。 
                "batchSize":1024,// 1 回のバッチで送信されるレコード数。 
                "table":"",// テーブル名。 
                "preSql":[]// データ同期タスク実行前に実行される SQL 文。 
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// ダーティデータレコード数。 
        },
        "speed":{
            "throttle":true,// throttle の値が false の場合、mbps パラメーターは無効となり、トラフィック制限は行われません。throttle の値が true の場合、トラフィックが制限されます。 
            "concurrent":1, // 同時実行スレッド数。 
            "mbps":"12"// トラフィック制限レート。1 mbps = 1 MB/s。 
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Writer スクリプトのパラメーター

パラメーター

説明

必須

デフォルト

datasource

データソースの名前です。スクリプトモードでデータソースを追加できます。このパラメーターの値は、追加したデータソースの名前と同じである必要があります。

はい

なし

table

宛先テーブルの名前です。テーブルのスキーマが設定したユーザー名と異なる場合、schema.table 形式でテーブルを指定します。

はい

なし

writeMode

インポートモードです。INSERT INTO のみがサポートされています。プライマリキーまたは一意なインデックスの競合が発生した場合、競合する行は書き込まれず、ダーティデータとして処理されます。

いいえ

insert into

column

宛先テーブルに書き込む列です。列はカンマ(,)で区切ります(例:"column": ["id","name","age"])。指定した順序ですべての列に書き込むには、このパラメーターを `*` に設定します(例:"column":["*"])。

はい

なし

preSql

同期タスク実行前に実行する SQL 文です。ウィザードモードでは、1 つの SQL 文のみ実行できます。スクリプトモードでは、複数の SQL 文を実行できます。たとえば、既存のデータをクリアする SQL 文を実行できます。

いいえ

なし

postSql

同期タスク完了後に実行する SQL 文です。ウィザードモードでは、1 つの SQL 文のみ実行できます。スクリプトモードでは、複数の SQL 文を実行できます。たとえば、タイムスタンプを追加できます。

いいえ

なし

batchSize

1 回のバッチで送信されるレコード数です。値が大きいほど、データ同期システムと Oracle 間のネットワーク通信回数が減少し、スループットが向上します。ただし、値が大きすぎると、データ同期プロセスでメモリ不足(OOM)エラーが発生する可能性があります。

いいえ

1,024