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 R2、12c non cdb、18c non cdb、19c 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 データベースのバージョンがサポートされているかどうかを確認してください。
次のいずれかのステートメントを実行して、Oracle データベースのバージョンを表示できます。
ステートメント 1:
select * from v$version;ステートメント 2:
select version from v$instance;
データベースのバージョンが
12cまたは18cの場合、次のステートメントを実行して、それがcdbデータベースであるかどうかを確認します。Data Integration のリアルタイム同期タスクは、12cおよび18cのcdbOracle データベースをサポートしていません。select name,cdb,open_mode,con_id from v$database;
アカウントの作成と権限の設定
後続の操作のために、データベースログインアカウントを計画する必要があります。このアカウントには、必要な Oracle 権限が必要です。
アカウントを作成します。詳細については、「Oracle アカウントの作成」をご参照ください。
権限を設定します。
次のコマンドを使用して、アカウントに権限を付与できます。ステートメントを実行する際は、
'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 ログファイルの切り替え
アーカイブされたログを有効にします。SQL ステートメントは次のとおりです。
shutdown immediate; startup mount; alter database archivelog; alter database open;補足ログを有効にします。
適切な補足ログを有効にするには、次の 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; // 特定のテーブルの一意なインデックスキー列の補足ログを有効にします。REDO ログファイルを切り替えます。
補足ログを有効にした後、次のコマンドを複数回 (5 回を推奨) 実行して、REDO ログファイルを切り替えます。
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 つの主要な文字データ型のストレージクラスを示します。
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 同期プロセスのガイド
同期タスクの構成のエントリポイントと手順については、次の構成ガイドをご参照ください。
単一テーブルのオフライン同期タスクの構成ガイド
手順の詳細については、「コードレス UI でのタスクの構成」および「コードエディタでのタスクの構成」をご参照ください。
コードエディタのすべてのパラメーターとスクリプトのデモについては、「付録:スクリプトのデモとパラメーターの説明」をご参照ください。
単一テーブルのリアルタイム同期タスクの構成ガイド
手順の詳細については、「DataStudio でのリアルタイム同期タスクの構成」をご参照ください。
データベース全体の同期の構成ガイド
手順の詳細については、「データベース全体のリアルタイム同期タスクの構成」をご参照ください。
よくある質問
アクティブ/スタンバイ同期のデータ復元
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 | 同期するテーブルの名前。フォーマットは 説明 たとえば、selectedDatabase が | はい | なし |
column | 同期する列のセット。JSON 配列を使用してフィールド情報を記述します。デフォルトでは、すべての列が使用されます。例:["*"]。
| はい | なし |
splitFactor | 分割係数。データを同期するために分割するチャンクの数を構成できます。複数の同時実行タスクを構成する場合、データは concurrency × splitFactor 個のチャンクに分割されます。たとえば、concurrency が 5 で splitFactor が 5 の場合、データは 5 × 5 = 25 個のチャンクに分割され、5 つの同時実行スレッドによって処理されます。 説明 推奨される値の範囲は 1 から 100 です。値が大きすぎると、Out-of-Memory (OOM) エラーが発生する可能性があります。 | いいえ | 5 |
splitMode | 分割モード。有効な値:
説明 `splitMode` パラメーターは `splitPk` パラメーターと併用する必要があります。
| いいえ | randomSampling |
splitPk | Oracle Reader がデータを抽出する際に splitPk を指定すると、splitPk で指定されたフィールドをデータシャーディングに使用することを示します。その結果、データ同期は同時実行タスクを開始し、データ同期の効率を向上させます。
説明 splitPK フィールドはビューの ROWID にはできません。 | いいえ | なし |
where | フィルター条件。Oracle Reader は、指定された column、table、および where 句に基づいて SQL ステートメントを構築し、その SQL ステートメントに基づいてデータをプルします。たとえば、テスト中に row_number() を where 条件として指定できます。
| いいえ | なし |
querySql (高度なモード、コードレス UI ではサポートされていません) | 一部のビジネスシナリオでは、where 句だけではフィルター条件を記述するのに不十分な場合があります。このパラメーターを使用して、フィルター SQL をカスタマイズできます。このパラメーターを構成すると、データ同期システムは table や column などの構成を無視し、この SQL を使用してデータをフィルター処理します。たとえば、同期前に複数のテーブルを結合するには、 | いいえ | なし |
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 | データの書き込み先となる宛先テーブルのフィールド。フィールド名はカンマで区切ります。例: | はい | なし |
preSql | データ同期タスクが開始される前に実行する SQL ステートメント。コードレス UI は 1 つの SQL ステートメントのみをサポートします。コードエディタは、古いデータをクリアするなど、複数の SQL ステートメントをサポートします。 | いいえ | なし |
postSql | データ同期タスクが完了した後に実行する SQL ステートメント。コードレス UI は 1 つの SQL ステートメントのみをサポートします。コードエディタは、タイムスタンプを追加するなど、複数の SQL ステートメントをサポートします。 | いいえ | なし |
batchSize | バッチ内のレコード数。値を大きくすると、データ同期システムと Oracle 間のネットワーク対話の数を大幅に削減し、全体的なスループットを向上させることができます。この値が高すぎると、データ同期プロセスで OOM エラーが発生する可能性があります。 | いいえ | 1,024 |