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 later、12c non cdb、18c non cdb、19c 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 データベースのバージョンがサポートされているかどうかを確認してください。
-
次のいずれかの文を実行して、Oracle データベースのバージョンを確認できます。
-
文 1:
select * from v$version; -
文 2:
select version from v$instance;
-
-
Oracle データベースのバージョンが
12cまたは18cの場合、次の文を実行して、データベースがcdb型のデータベースであるかどうかを確認します。データ統合のリアルタイム同期タスクは、12cおよび18cのcdb型の Oracle データベースをサポートしていません。select name,cdb,open_mode,con_id from v$database;
アカウントの作成と権限の設定
後続の操作のために、データベースのログインアカウントを計画する必要があります。このアカウントには、必要な Oracle の操作権限が必要です。
-
アカウントを作成します。詳細については、「Oracle アカウントの作成」をご参照ください。
-
権限を設定します。
次のコマンドを実行して、アカウントに権限を付与できます。次の文を実行するときは、
'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 ログファイルの切り替え
-
次の 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;説明上記のコマンドを複数回実行して REDO ログファイルを切り替えることで、現在のログファイルがいっぱいになったときに次のログファイルに切り替えることができます。これにより、実行された操作レコードが失われるのを防ぎ、その後のデータ回復を容易にします。
データベースの文字エンコーディングの確認
データベースで次のコマンドを実行して、文字エンコーディングを確認します。
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 エンコーディング形式のみをサポートします。データベースにサポートされていない文字エンコーディングが含まれている場合は、データ同期を実行する前にそれらを変更してください。
データベーステーブルのデータ型の確認
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 |
同期するテーブルの名前。値は 説明 たとえば、selectedDatabase が |
はい |
N/A |
|
column |
設定されたテーブルから同期する列。列情報は JSON 配列で記述されます。デフォルトでは、すべての列が使用されます (例:["*"])。
|
はい |
N/A |
|
splitFactor |
分割係数。このパラメーターは、データ同期の分割数を指定します。同時実行数が設定されている場合、データは concurrency × splitFactor の分割数に分割されます。たとえば、同時実行数が 5 で splitFactor が 5 の場合、データは 5 × 5 = 25 の分割数に分割され、5 つの並行スレッドで実行されます。 説明 推奨値の範囲:1~100。値が大きすぎると、メモリ不足エラーが発生する可能性があります。 |
いいえ |
5 |
|
splitMode |
分割モード。有効な値:
説明 splitMode パラメーターは splitPk パラメーターと一緒に使用する必要があります。
|
いいえ |
randomSampling |
|
splitPk |
Oracle Reader がデータを抽出する際に splitPk を指定すると、splitPk で表されるフィールドを使用してデータを分割することを示します。その後、データ同期は同時タスクを開始し、データ同期の効率を向上させます。
説明 splitPK フィールドは、ビューで作業する際に ROWID を使用できません。 |
いいえ |
N/A |
|
where |
フィルター条件。Oracle Reader は、指定された column、table、および where 条件に基づいて SQL ステートメントを構築し、その SQL ステートメントに基づいてデータを抽出します。たとえば、テスト中に where 条件を row_number() として指定できます。
|
いいえ |
N/A |
|
querySql (詳細モード、ウィザードモードではサポートされていません) |
一部のビジネスシナリオでは、where パラメーターだけではフィルター条件を記述するのに不十分な場合があります。このパラメーターを使用して、カスタムのフィルター SQL ステートメントを定義できます。このパラメーターを設定すると、データ同期システムは table および column の設定を無視し、このパラメーターの内容を直接使用してデータをフィルター処理します。たとえば、複数のテーブルを結合した後にデータを同期するには、 |
いいえ |
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 |
ターゲットテーブルでデータが書き込まれる列。列はカンマ (,) で区切られます。例: |
はい |
N/A |
|
preSql |
データ同期タスクの前に実行する SQL ステートメント。現在、ウィザードモードでは 1 つの SQL ステートメントのみが許可されていますが、スクリプトモードでは複数の SQL ステートメント (古いデータのクリアなど) がサポートされています。 |
いいえ |
N/A |
|
postSql |
データ同期タスクの完了後に実行する SQL ステートメント。現在、ウィザードモードでは 1 つの SQL ステートメントのみが許可されていますが、スクリプトモードでは複数の SQL ステートメント (タイムスタンプの追加など) がサポートされています。 |
いいえ |
N/A |
|
batchSize |
バッチで一度に送信するレコード数。この値は、データ同期システムと Oracle 間のネットワーク対話の数を大幅に削減し、全体的なスループットを向上させることができます。値が大きすぎると、データ同期プロセスで OOM エラーが発生する可能性があります。 |
いいえ |
1,024 |