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

DataWorks:Oracle データソース

最終更新日:Apr 24, 2026

Oracle データソースを使用すると、Oracle Reader と Oracle Writer を利用して 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 ドライバーを使用します。

リアルタイム読み取り

  • サポート対象:

    11g R2 or later12c non cdb18c non cdb19c non cdb、および 19c cdb データベース。

  • サポート対象外:

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

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

説明

コンテナデータベース (CDB) は、Oracle 12c 以降のバージョンで導入された機能です。複数のプラガブルデータベース (PDB) をホストするように設計されています。

制限事項

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

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

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

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

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

  • 索引構成表の同期はサポートされていません。

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

  • Oracle のテーブル名および列名に含まれる中国語文字はサポートされていません。

  • 30 バイトを超える単一の 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

サポート対象

サポート対象

サポート対象外

User-Defined Types

サポート対象外

サポート対象外

サポート対象外

AnyType

サポート対象外

サポート対象外

サポート対象外

AnyData

サポート対象外

サポート対象外

サポート対象外

AnyDataSet

サポート対象外

サポート対象外

サポート対象外

XmlType

サポート対象外

サポート対象外

サポート対象外

Spatial Types

サポート対象外

サポート対象外

サポート対象外

Media Types

サポート対象外

サポート対象外

サポート対象外

次の表に、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 のデータ同期タスクが DataWorks で適切に設定および実行できるようになります。次のセクションでは、準備手順について説明します。

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

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

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

    • 文 1:

      select * from v$version;
    • 文 2:

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

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

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

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

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

  2. 権限を設定します。

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

    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$ テーブルは、Oracle データディクショナリのベースオブジェクトテーブルであり、すべての Oracle オブジェクトを格納します。
    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$ は Oracle の制約情報を格納します。
    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 はコントロールファイルからログファイル情報を表示します。
    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 は、データベースのパラメーター設定を格納する Oracle の動的ディクショナリテーブルです。
    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$ テーブルは、Oracle データディクショナリのベースオブジェクトテーブルであり、すべての Oracle オブジェクトを格納します。
    grant select on V$THREAD to '同期アカウント';  // 同期アカウントにインスタンスのスレッド情報を表示する権限を付与します。V$THREAD ビューは、Oracle の動的パフォーマンスビューのスレッドステータステーブルであり、RAC クラスター内の各インスタンスのスレッドステータス情報を格納し、増分解析中のインスタンスステータスとログソースを決定するために使用されます。

    バッチ完全同期を使用する必要がある場合は、次のコマンドを実行して、同期アカウントにすべてのテーブルに対するクエリ権限を付与します。

    grant select any table to '同期アカウント'; 

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

    grant LOGMINING TO '同期アカウント';

アーカイブ・ロギングと補足ログの有効化、および 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;
    説明

    上記のコマンドを複数回実行して REDO ログファイルを切り替えることで、現在のログファイルがいっぱいになったときに次のログファイルに切り替えることができます。これにより、実行された操作レコードが失われるのを防ぎ、その後のデータ回復を容易にします。

データベースの文字エンコーディングの確認

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

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

  • NLS_CHARACTERSETNLS_NCHAR_CHARACTERSET は、データベース文字セットと国別文字セットであり、Oracle の 2 つの主要なカテゴリの文字データのストレージタイプを示します。

説明

データ統合は、データ同期のために UTF8、AL32UTF8、AL16UTF16、および ZHS16GBK エンコーディング形式のみをサポートします。データベースにサポートされていない文字エンコーディングが含まれている場合は、データ同期を実行する前にそれらを変更してください。

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

SQL クエリ文 (SELECT) を使用して、データベーステーブルのデータ型を確認できます。次の例は、'テーブル名' テーブルのデータ型を確認する方法を示しています。

select COLUMN_NAME,DATA_TYPE from all_tab_columns where TABLE_NAME='テーブル名'; 
  • COLUMN_NAME:テーブルの列名。

  • DATA_TYPE:対応する列のデータ型。

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

  • TABLE_NAME:クエリするターゲットテーブルの名前。上記の文を実行するときは、'テーブル名' を実際のテーブル名に置き換えてください。

また、select * from 'テーブル名'; を実行して、ターゲットテーブルに関するすべての情報をクエリし、データ型を取得することもできます。

データソースの追加

DataWorks で同期タスクを開発する前に、「データソース管理」の指示に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソールで パラメーターの説明 を表示して、パラメーターの意味を理解することができます

データ同期タスクの開発:Oracle 同期プロセスのガイド

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

単一テーブルのバッチ同期タスク設定ガイド

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

手順については、「リアルタイム同期タスクの設定」をご参照ください。

データベース全体のバッチ、データベース全体 (リアルタイム) の完全および増分、データベース全体 (リアルタイム) のシャーディング同期などのデータベース全体の同期の設定ガイド

手順については、「データベース全体の同期タスクの設定」をご参照ください。

よくある質問

  • リアルタイム同期に関するよくある質問

  • プライマリ/スタンバイ同期におけるデータ回復の問題

    プライマリ/スタンバイ同期の問題とは、Oracle がプライマリ/スタンバイのディザスタリカバリを使用している状況を指します。プライマリデータベースでエラーが発生し、スタンバイデータベースに切り替わると、スタンバイデータベースはバイナリログ (binlog) を介してプライマリデータベースからデータを継続的に回復します。プライマリ/スタンバイのデータ同期には時間差があるため、ネットワーク遅延などの特定の条件下では、スタンバイデータベースによって回復されたデータがプライマリデータベースと大幅に異なる場合があります。スタンバイデータベースから同期されたデータは、現在の時点でのデータの完全なスナップショットではありません。

  • 整合性の制約

    Oracle は、強力な整合性を持つデータクエリインターフェイスを提供する RDBMS システムです。たとえば、同期タスクの実行中に、他のライターがデータベースにデータを書き込んだ場合、データベースのスナップショット機能により、Oracle Reader は新しく書き込まれたデータを読み取りません。

    上記は、Oracle Reader のシングルスレッドモデルにおけるデータ同期の整合性について説明しています。Oracle Reader が設定に基づいてデータを並行して抽出する場合、厳密なデータ整合性は保証されません。

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

    マルチスレッドで一貫性のあるスナップショットを実現することは、技術的に不可能です。これはエンジニアリングの観点からのみ対処できます。以下のソリューションにはトレードオフが伴います。必要に応じて選択できます。

    • データ分割なしでシングルスレッド同期を使用します。欠点は速度が遅くなることですが、整合性は保証されます。

    • 他のデータライターを停止して、現在のデータが静的であることを保証します。たとえば、テーブルをロックしたり、スタンバイデータベースの同期を停止したりします。欠点は、オンラインサービスに影響を与える可能性があることです。

  • データベースのエンコーディングに関する問題

    Oracle Reader は JDBC を使用してデータを抽出します。JDBC はネイティブにさまざまなエンコーディングに適応し、基盤レベルでエンコーディング変換を実行します。したがって、Oracle Reader のエンコーディングを指定する必要はありません。エンコーディングを自動的に検出し、変換を実行できます。

  • 増分データ同期の方法

    Oracle Reader は JDBC SELECT 文を使用してデータを抽出します。次のように SELECT…WHERE… を使用して増分データを抽出できます:

    • オンラインアプリケーションがデータベースにデータを書き込み、変更フィールドに変更タイムスタンプ (挿入、更新、論理削除を含む) を入力する場合、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

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

はい

N/A

selectedDatabase

同期するデータベースのスキーマ。

はい

N/A

table

同期するテーブルの名前。値は schema.tableName 形式である必要があります。

説明

たとえば、selectedDatabaseAUTOTEST で、テーブル名が table01 の場合、tableAUTOTEST.table01 に設定します。

はい

N/A

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 パラメーターは明示的に指定する必要があり、空にすることはできません。

はい

N/A

splitFactor

分割係数。このパラメーターは、データ同期の分割数を指定します。同時実行数が設定されている場合、データは concurrency × splitFactor の分割数に分割されます。たとえば、同時実行数が 5 で splitFactor が 5 の場合、データは 5 × 5 = 25 の分割数に分割され、5 つの並行スレッドで実行されます。

説明

推奨値の範囲:1~100。値が大きすぎると、メモリ不足エラーが発生する可能性があります。

いいえ

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 を使用できません。

いいえ

N/A

where

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

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

  • where 条件が指定されていないか空の場合、テーブル全体のデータが同期されます。

いいえ

N/A

querySql (詳細モード、ウィザードモードではサポートされていません)

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

いいえ

N/A

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,// バッチで一度に送信するレコード数。
                "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

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

はい

N/A

table

ターゲットテーブルの名前。テーブルのスキーマが設定されたユーザー名と異なる場合は、テーブル情報を schema.table 形式で指定します。

はい

N/A

writeMode

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

いいえ

insert into

column

ターゲットテーブルでデータが書き込まれる列。列はカンマ (,) で区切られます。例:"column": ["id","name","age"]。すべての列に順番にデータを書き込むには、アスタリスク (*) を使用します。例:"column":["*"]

はい

N/A

preSql

データ同期タスクの前に実行する SQL ステートメント。現在、ウィザードモードでは 1 つの SQL ステートメントのみが許可されていますが、スクリプトモードでは複数の SQL ステートメント (古いデータのクリアなど) がサポートされています。

いいえ

N/A

postSql

データ同期タスクの完了後に実行する SQL ステートメント。現在、ウィザードモードでは 1 つの SQL ステートメントのみが許可されていますが、スクリプトモードでは複数の SQL ステートメント (タイムスタンプの追加など) がサポートされています。

いいえ

N/A

batchSize

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

いいえ

1,024