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

DataWorks:Oracle データソース

最終更新日:Jan 05, 2026

Oracle データソースを使用すると、Oracle のデータの読み取りと書き込みができます。データ同期タスクは、コードレス UI またはコードエディタを使用して構成できます。このトピックでは、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 ドライバーを使用します。

リアルタイム読み取り

  • サポート対象:

    バージョンが 11g R212c non cdb18c non cdb19c non cdb、または 19c cdb 以降のデータベース。

  • サポート対象外:

    12c cdb および 18c cdb データベース。

説明

コンテナデータベース (CDB) は、Oracle Database 12c 以降のバージョンで導入された機能です。CDB には、複数のプラガブル・データベース (PDB) を含めることができます。

制限事項

  • Oracle インスタンスの文字セット `NLS_CHARACTERSET` および `NLS_NCHAR_CHARACTERSET` は、AL32UTF8、AL16UTF16、ZHS16GBK、または UTF8 のいずれかである必要があります。

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

  • DataWorks がセカンダリ Oracle データベースからリアルタイムでデータを読み取る場合、物理セカンダリデータベースのみがサポートされます。DataWorks はアーカイブされたログのみをプルするため、プライマリデータベースからの同期よりもレイテンシが高くなります。レイテンシは、アーカイブされたログの生成速度に依存します。

  • リアルタイム同期はビューをサポートしていません。オフライン同期はビューからのデータ読み取りをサポートしています。

  • DataWorks での Oracle からのリアルタイムデータ読み取りは、Oracle LogMiner ログ分析ツールに基づいています。この機能を使用するには、プライマリ Oracle データベースで、プライマリまたはセカンダリデータベースの補足ログとアーカイブされたログを有効にする必要があります。

  • 索引構成表は同期できません。

  • すべての列が BLOB、CLOB、NCLOB などのラージオブジェクト (LOB) 型であるテーブルはサポートされていません。

  • Oracle のテーブル名と列名では、中国語の文字はサポートされていません。

  • Oracle のテーブル名は 30 バイトを超えることはできません。

サポートされるフィールドタイプ

フィールドタイプ

オフライン読み取り (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

サポート

サポート

サポート対象外

User-Defined Types

サポート対象外

サポート対象外

サポート対象外

AnyType

サポート対象外

サポート対象外

サポート対象外

AnyData

サポート対象外

サポート対象外

サポート対象外

AnyDataSet

サポート対象外

サポート対象外

サポート対象外

XmlType

サポート対象外

サポート対象外

サポート対象外

Spatial Types

サポート対象外

サポート対象外

サポート対象外

Media Types

サポート対象外

サポート対象外

サポート対象外

次の表に、Oracle のデータ型と、Oracle Reader におけるそれらの分類を示します。

型の分類

Oracle データ型

整数

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

浮動小数点

NUMERIC、DECIMAL、FLOAT、DOUBLE PRECISIOON、および 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 環境を準備する必要があります。この準備により、DataWorks で Oracle データ同期タスクを適切に構成および実行できるようになります。以下のセクションでは、Oracle 環境の準備方法について説明します。

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

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

  1. 次のいずれかのステートメントを実行して、Oracle データベースのバージョンを表示できます。

    • ステートメント 1:

      select * from v$version;
    • ステートメント 2:

      select version from v$instance;
  2. データベースのバージョンが 12c または 18c の場合、次のステートメントを実行して、それが cdb データベースであるかどうかを確認します。Data Integration のリアルタイム同期タスクは、12c および 18ccdb Oracle データベースをサポートしていません。

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

アカウントの作成と権限の設定

後続の操作のために、データベースログインアカウントを計画する必要があります。このアカウントには、必要な Oracle 権限が必要です。

  1. アカウントを作成します。詳細については、「Oracle アカウントの作成」をご参照ください。

  2. 権限を設定します。

    次のコマンドを使用して、アカウントに権限を付与できます。ステートメントを実行する際は、'sync_account' を作成したアカウントに置き換えてください。

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

    オフラインで完全データ同期を実行するには、次のコマンドも実行して、同期アカウントにすべてのテーブルに対するクエリ権限を付与する必要があります。

    grant select any table to 'sync_account'; 

    Oracle 12c 以降のバージョンの場合は、次のコマンドを実行して、同期アカウントにログマイニング権限を付与します。Oracle 12c より前のバージョンでは、ログマイニング機能が組み込まれているため、このコマンドは不要です。

    grant LOGMINING TO 'sync_account';

アーカイブされたログと補足ログの有効化、および REDO ログファイルの切り替え

  1. アーカイブされたログを有効にします。SQL ステートメントは次のとおりです。

    shutdown immediate;
    startup mount;
    alter database archivelog;
    alter database open;
  2. 補足ログを有効にします。

    適切な補足ログを有効にするには、次の SQL ステートメントを使用します。

    // リアルタイム同期で完全なデータ変更をキャプチャするには、補足ログを有効にする必要があります。データベースレベルで有効にできます。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. REDO ログファイルを切り替えます。

    補足ログを有効にした後、次のコマンドを複数回 (5 回を推奨) 実行して、REDO ログファイルを切り替えます。

    alter system switch logfile;
    説明

    コマンドを複数回実行することで、現在のログファイルがいっぱいになったときに、システムが次のログファイルに確実に切り替わるようになります。このプロセスにより、操作レコードの損失を防ぎ、後続のデータ復元に役立ちます。

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

データベースで次のコマンドを実行して、文字コードを確認します。

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

  • NLS_CHARACTERSETNLS_NCHAR_CHARACTERSET は、それぞれデータベース文字セットと国別文字セットです。これらは、Oracle の 2 つの主要な文字データ型のストレージクラスを示します。

説明

Data Integration は、データ同期のために 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、PolarDB、MySQL のリアルタイム同期タスクで繰り返しエラーが報告される

  • アクティブ/スタンバイ同期のデータ復元

    Oracle のアクティブ/スタンバイのディザスタリカバリ・アーキテクチャを使用している場合、アクティブ/スタンバイ同期の問題が発生する可能性があります。プライマリデータベースに障害が発生し、システムがセカンダリデータベースに切り替わると、セカンダリデータベースはバイナリログ (binlog) を使用してプライマリデータベースからデータを継続的に回復します。プライマリデータベースとセカンダリデータベース間のデータ同期には時間差があるため、ネットワーク遅延などの条件により、セカンダリデータベースによって回復されたデータとプライマリデータベースのデータとの間に大きな不一致が生じる可能性があります。その結果、セカンダリデータベースから同期されたデータは、その時点でのデータの完全なスナップショットではありません。

  • 整合性制約

    Oracle は、強力な整合性を持つデータクエリインターフェイスを提供するリレーショナルデータベース管理システム (RDBMS) です。たとえば、同期タスクの実行中に、別のデータライターがデータベースにデータを書き込んだ場合、Oracle Reader はデータベースのスナップショット機能のため、新しいデータを取得しません。

    上記の整合性は、Oracle Reader がデータ同期にシングルスレッドモデルを使用する場合に実現されます。Oracle Reader が構成に基づいて同時実行タスクを使用してデータをプルする場合、強力なデータ整合性は保証されません。

    Oracle Reader が splitPk に基づいてデータを分割すると、複数の同時実行タスクを開始してデータを同期します。これらのタスクは同じ読み取りトランザクションに属しておらず、それらの間には時間間隔があります。したがって、同期されたデータは完全で一貫性のあるデータスナップショットではありません。

    マルチスレッド環境における一貫性のあるスナップショットのための技術的なソリューションは現在利用できません。この問題は、エンジニアリングの観点からのみ対処できます。エンジニアリングソリューションにはトレードオフが伴います。以下に考えられるソリューションを示します。ニーズに応じていずれかを選択できます。

    • シングルスレッド同期を使用します。これは、データがチャンクに分割されないことを意味します。欠点は速度が遅いことですが、一貫性は保証されます。

    • 他のデータライターを無効にして、データが静的であることを保証します。たとえば、テーブルをロックしたり、セカンダリデータベースへの同期を無効にしたりできます。欠点は、これがオンラインサービスに影響を与える可能性があることです。

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

    Oracle Reader は、Java Database Connectivity (JDBC) を使用してデータをプルします。JDBC はさまざまなエンコーディングと互換性があり、下位レイヤーでエンコーディング変換を実行します。したがって、Oracle Reader にエンコーディングを指定する必要はありません。エンコーディングを自動的に取得してトランスコードできます。

  • 増分データ同期の方法

    Oracle Reader は SELECT…WHERE… ステートメントを使用してデータをプルします。したがって、これらのステートメントを使用して、次の方法で増分データ同期を実行できます。

    • オンラインアプリケーションがデータベースにデータを書き込むとき、追加、更新、論理削除などの変更に対して `modify` フィールドにタイムスタンプを設定します。これらのアプリケーションの場合、Oracle Reader は最後の同期のタイムスタンプを持つ `WHERE` 句を追加するだけで済みます。

    • 新しいストリームのようなデータの場合、Oracle Reader は前のステージからの最大自動増分 ID を持つ `WHERE` 句を追加できます。

    ビジネスロジックが新しいデータと変更されたデータを区別するフィールドを使用しない場合、Oracle Reader は増分データ同期を実行できません。完全データのみを同期できます。

  • SQL セキュリティ

    Oracle Reader は querySql 機能を提供しており、これによりデータプル用の SELECT ステートメントをカスタマイズできます。Oracle Reader は querySql に対してセキュリティチェックを実行しません。

付録:スクリプトのデモとパラメーターの説明

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

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

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 である必要があります。

説明

たとえば、selectedDatabaseAUTOTEST で、テーブル名が table01 の場合、tableAUTOTEST.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

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

説明

推奨される値の範囲は 1 から 100 です。値が大きすぎると、Out-of-Memory (OOM) エラーが発生する可能性があります。

いいえ

5

splitMode

分割モード。有効な値:

  • averageInterval:平均サンプリング。splitPK の最大値と最小値を見つけ、チャンクの数に基づいてデータを均等に分割します。

  • randomSampling:ランダムサンプリング。多数のデータポイントを分割点としてランダムに選択します。

説明

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

  • `splitPk` が数値型の場合は、splitModeaverageInterval に設定します。

  • `splitPk` が文字列型の場合は、splitModerandomSampling に設定します。

いいえ

randomSampling

splitPk

Oracle Reader がデータを抽出する際に splitPk を指定すると、splitPk で指定されたフィールドをデータシャーディングに使用することを示します。その結果、データ同期は同時実行タスクを開始し、データ同期の効率を向上させます。

  • テーブルのプライマリキーを splitPk として使用することを推奨します。プライマリキーは通常、均等に分散されているため、結果として得られるシャードでのデータホットスポットを防ぐのに役立ちます。

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

    • `splitPk` が数値型の場合は、splitModeaverageInterval に設定します。

    • `splitPk` が文字列型の場合は、splitModerandomSampling に設定します。

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

説明

splitPK フィールドはビューの ROWID にはできません。

いいえ

なし

where

フィルター条件。Oracle Reader は、指定された columntable、および where 句に基づいて SQL ステートメントを構築し、その SQL ステートメントに基づいてデータをプルします。たとえば、テスト中に row_number() を where 条件として指定できます。

  • where 句は、増分ビジネスデータ同期に使用できます。

  • where 句を構成しないか、空のままにすると、テーブル全体が同期されます。

いいえ

なし

querySql (高度なモード、コードレス UI ではサポートされていません)

一部のビジネスシナリオでは、where 句だけではフィルター条件を記述するのに不十分な場合があります。このパラメーターを使用して、フィルター SQL をカスタマイズできます。このパラメーターを構成すると、データ同期システムは tablecolumn などの構成を無視し、この SQL を使用してデータをフィルター処理します。たとえば、同期前に複数のテーブルを結合するには、select a,b from table_a join table_b on table_a.id = table_b.id を使用します。querySql を構成すると、Oracle Reader は tablecolumn、および where の構成を無視します。

いいえ

なし

fetchSize

このパラメーターは、データベースサーバーから各バッチでフェッチするレコード数を定義します。この値は、データ同期システムとサーバー間のネットワーク対話の数を決定し、データプルパフォーマンスを大幅に向上させることができます。

説明

fetchSize の値が大きすぎる (>2,048) と、データ同期プロセスで 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,// バッチ内のレコード数。
                "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 ステートメント。コードレス UI は 1 つの SQL ステートメントのみをサポートします。コードエディタは、古いデータをクリアするなど、複数の SQL ステートメントをサポートします。

いいえ

なし

postSql

データ同期タスクが完了した後に実行する SQL ステートメント。コードレス UI は 1 つの SQL ステートメントのみをサポートします。コードエディタは、タイムスタンプを追加するなど、複数の SQL ステートメントをサポートします。

いいえ

なし

batchSize

バッチ内のレコード数。値を大きくすると、データ同期システムと Oracle 間のネットワーク対話の数を大幅に削減し、全体的なスループットを向上させることができます。この値が高すぎると、データ同期プロセスで OOM エラーが発生する可能性があります。

いいえ

1,024