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-CDB、18c non-CDB、19c 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 型(
BLOB、CLOB、または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 データベースのバージョンがサポート対象であることを確認してください。
Oracle データベースのバージョンを確認するには、以下のいずれかの文を実行します。
文 1:
select * from v$version;文 2:
select version from v$instance;
Oracle データベースのバージョンが
12cまたは18cの場合、以下の文を実行して、データベースがcdb型であるかどうかをさらに確認する必要があります。DataWorks Data Integration のリアルタイム同期タスクでは、現在、バージョン12cおよび18cのcdb型 Oracle データベースはサポートされていません。select name,cdb,open_mode,con_id from v$database;
アカウントの作成および権限の付与
データ同期用のデータベースユーザーアカウントを作成します。このアカウントには特定の権限が必要です。
アカウントを作成します。詳細については、「Oracle データベースへのアクセス用アカウントの作成」をご参照ください。
権限を付与します。
以下のコマンドを実行して、アカウントに関連する権限を追加できます。コマンドを実行する際には、
'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';
ログの有効化およびリドログファイルの切り替え
アーカイブログを有効化します。以下の SQL 文を実行します。
shutdown immediate; startup mount; alter database archivelog; alter database open;補足ログを有効化します。
適切な補足ログレベルを選択し、以下の 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; -- 特定のテーブルの一意なインデックス列に対して補足ログを有効化します。リドログファイルを切り替えます。
補足ログを有効化した後、以下のコマンドを 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 データ同期タスク
同期タスクの設定入口および手順については、以下の設定ガイドをご参照ください。
単一テーブルのバッチ同期タスク
コードレス UI でのタスク設定およびコードエディタでのタスク設定をご参照ください。
コードエディタのパラメーターおよびサンプルスクリプトの完全な一覧については、「付録:サンプルスクリプトおよびパラメーターのリファレンス」をご参照ください。
単一テーブルのリアルタイム同期タスク
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 | データを読み取るテーブルの名前です。 説明 たとえば、selectedDatabase の値が | はい | なし |
column | 指定したテーブルから同期する列です。値は JSON 配列である必要があります。デフォルトでは、すべての列が同期されます。例:["*"]。
| はい | なし |
splitFactor | 分割係数です。データ同期のシャード数を構成できます。同時実行スレッド数を複数構成した場合、データは 同時実行スレッド数 × splitFactor の数だけシャードに分割されます。たとえば、同時実行スレッド数が 5、splitFactor が 5 の場合、データは 25 個のシャード(5 × 5 = 25)に分割され、5 つの同時実行スレッドによって処理されます。 説明 このパラメーターの値は、1~100 の範囲を推奨します。大きな値を設定すると、OOM エラーが発生する可能性があります。 | いいえ | 5 |
splitMode | 分割モードです。有効な値は以下のとおりです。
説明 splitMode パラメーターは、splitPk パラメーターと併用する必要があります。
| いいえ | randomSampling |
splitPk | Oracle Reader がデータを読み取る際に、splitPk パラメーターを指定すると、データは 指定されたフィールド を基準にシャード化されます。データ同期タスクは、並列サブタスクを起動してデータを同期し、データ同期の効率を向上させます。
説明 splitPK フィールドは、ビューでは ROWID にすることはできません。 | いいえ | なし |
where | フィルター条件です。Oracle Reader は、指定された column、table、および where 条件を結合して SQL 文を作成し、その SQL 文に基づいてデータを読み取ります。たとえば、テスト目的で where 条件を row_number() に設定できます。
| いいえ | なし |
querySql(スクリプトモードでのみサポート) | 一部のビジネスシナリオでは、where パラメーターではフィルター条件を十分に記述できません。このパラメーターを使用して、カスタムフィルター SQL 文を定義できます。このパラメーターを構成すると、データ同期システムは table や column などのパラメーターを無視し、このパラメーターの内容を直接使用してデータをフィルターします。たとえば、複数テーブル結合後のデータを同期する必要がある場合、 | いいえ | なし |
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 | 宛先テーブルに書き込む列です。列はカンマ(,)で区切ります(例: | はい | なし |
preSql | 同期タスク実行前に実行する SQL 文です。ウィザードモードでは、1 つの SQL 文のみ実行できます。スクリプトモードでは、複数の SQL 文を実行できます。たとえば、既存のデータをクリアする SQL 文を実行できます。 | いいえ | なし |
postSql | 同期タスク完了後に実行する SQL 文です。ウィザードモードでは、1 つの SQL 文のみ実行できます。スクリプトモードでは、複数の SQL 文を実行できます。たとえば、タイムスタンプを追加できます。 | いいえ | なし |
batchSize | 1 回のバッチで送信されるレコード数です。値が大きいほど、データ同期システムと Oracle 間のネットワーク通信回数が減少し、スループットが向上します。ただし、値が大きすぎると、データ同期プロセスでメモリ不足(OOM)エラーが発生する可能性があります。 | いいえ | 1,024 |