翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
テーブルとコレクション設定のルールとオペレーション
テーブル設定を使用して、指定されたオペレーションで選択されたテーブルまたはビューに適用する設定を指定します。エンドポイントと移行の要件に応じてテーブル設定ルールはオプションです。
テーブルやビューを使用する代わりに、MongoDB および Amazon DocumentDB データベースでは、データレコードをドキュメントとしてまとめて[collections](コレクション) 格納します。MongoDB または Amazon DocumentDB エンドポイントの 1 つのデータベースは、データベース名で識別される特定のコレクションセットです。
MongoDB または Amazon DocumentDB ソースから移行する場合、並列ロード設定の操作は少し異なります。この場合、テーブルおよびビューではなく、選択したコレクションに対する並列ロード設定の自動セグメンテーションまたは範囲セグメンテーション タイプを考慮します。
テーブル設定ルールタイプを使用するテーブルマッピングルールの場合、以下のパラメータを適用することができます。
[パラメータ] | 使用できる値: | 説明 |
---|---|---|
rule-type |
table-settings
|
選択ルールにより指定されたテーブルまたはビューまたはコレクションにルールを適用する値。 |
rule-id |
数値。 | ルールを識別する一意の数値。 |
rule-name |
英数字値。 | ルールを特定する一意な名前。 |
object-locator |
以下のパラメータを使用するオブジェクト。
|
特定のスキーマ、テーブル、ビューの名前、または特定のデータベースとコレクションの名前 (ワイルドカードなし)。 |
parallel-load |
以下のパラメータを使用するオブジェクト。
|
並列ロードの詳細については、「選択したテーブルおよびビューさらにコレクションで並列ロードを使用する」をご参照ください。 |
type |
parallel-load の次のいずれか。
|
並列でロードするテーブルまたはビューまたはコレクションのパーティションまたはサブパーティション、セグメントを識別するメカニズム。 |
number-of-partitions |
(オプション) type が MongoDB または Amazon DocumentDB エンドポイントの指定されたコレクションについて partitions-auto の場合、このパラメータは移行に使用されるパーティション (セグメント) の総数を指定します。デフォルトは 16 です。 |
並列ロードされるパーティションの正確な数を指定します。 |
collection-count-from-metadata |
(オプション) MongoDB または Amazon DocumentDB エンドポイントの指定されたコレクションpartitions-auto に対して が であり、このパラメータが に設定されている場合true 、 type はパーティション数を決定するために推定コレクション数 AWS DMS を使用します。このパラメータが に設定されている場合false 、 は実際のコレクション数 AWS DMS を使用します。デフォルトは true です。 |
並列ロードするパーティションの数を計算するために、推定収集回数と実際の収集数のどちらを使用するかを指定します。 |
max-records-skip-per-page |
(オプション) type が MongoDB または Amazon DocumentDB エンドポイントの指定されたコレクションについて partitions-auto の場合、これは各パーティションの境界を決定する際に一度にスキップするレコードの数です。 AWS DMS
は、ページ割りスキップアプローチを使用して、パーティションの最小境界を決定します。デフォルトは 10,000 です。 |
各パーティションの境界を決定するときに一度にスキップするレコード数を指定します。デフォルトより比較的高い値を設定すると、タイムアウトし、タスクが失敗する可能性がある。デフォルトから比較的低い値を設定すると、ページあたりのオペレーションが多くなり、全ロードが遅くなります。 |
batch-size |
(オプション) type が MongoDB または Amazon DocumentDB エンドポイントの指定されたコレクションについて partitions-auto の場合、この整数値により、1 回のラウンドトリップ バッチで返されるドキュメントの数が制限されます。バッチサイズがゼロ (0) の場合、カーソルはサーバー定義の最大バッチサイズを使用します。デフォルトは 0 です。 |
1 つのバッチで返されるドキュメントの最大数を指定します。各バッチには、サーバーへの往復が必要です。 |
partitions |
type が partitions-list の場合、これは並列でロードするパーティションの名前を指定する文字列の配列です。 |
並列ロードするパーティションの名前。 |
subpartitions |
(Oracle エンドポイントのみ) type が partitions-list の場合、これは並列してロードするサブパーティションの名前を指定する文字列の配列です。 |
並列ロードするサブパーティションの名前。 |
columns |
type が ranges の場合、並列ロードする範囲ベースのテーブルセグメントまたはビューセグメントまたはコレクションセグメントを識別する列の名前に設定された文字列の配列です。 |
並列ロードする範囲ベースのテーブルセグメントまたはビューセグメントまたはコレクションセグメントを識別する列の名前。 |
boundaries |
type が ranges の場合、列の値の配列の配列。各列の値の配列には、数量の列値と columns で指定された順序が含まれています。列の値の配列はテーブルセグメントまたはビューセグメントまたはコレクションセグメントの上限の境界を指定します。各追加列値の配列は、1 つの追加テーブルセグメントまたはビューセグメンまたはコレクションセグメントの上限の境界を追加します。このような範囲ベースのテーブルセグメントまたはビューセグメントまたはコレクションセグメントはすべて並列ロードされます。 |
並列ロードする範囲ベースのテーブルパーティションまたはビューパーティションまたはコレクションパーティションを識別する列の値。 |
lob-settings |
以下のパラメータを使用するオブジェクト。
|
object-locator オプションによって識別されるテーブルまたはビューの LOB 処理を指定する値。指定された LOB 処理は、このテーブルまたはビューのみのすべてのタスク LOB 設定を上書きします。LOB 設定パラメータの使用に関する詳細については、「選択したテーブルまたはビューの LOB 設定を指定」をご参照ください。 |
mode |
以下の値を使用して、指定されたテーブルまたはビューの LOB の移行処理を指定します。
|
LOB を移行するために使用されるメカニズム。 |
bulk-max-size |
この値の効果は mode によって異なります。 |
LOB の最大サイズ (キロバイト単位)。このオプションは、小さな LOB をレプリケートする必要がある場合、またはターゲットエンドポイントが無制限の LOB サイズをサポートしていない場合にのみ指定します。 |
テーブル設定内のワイルドカードの制限
次のとおり、"table-settings"
ルールでのパーセントのワイルドカード ("%"
) の使用は、ソースデータベースではサポートされていません。
{ "rule-type": "table-settings", "rule-id": "8", "rule-name": "8", "object-locator": { "schema-name": "ipipeline-prod", "table-name": "%" }, "parallel-load": { "type": "partitions-auto", "number-of-partitions": 16, "collection-count-from-metadata": "true", "max-records-skip-per-page": 1000000, "batch-size": 50000 } }
次に示すように"table-settings"
、ルール"%"
で を使用すると、 は次の例外 AWS DMS を返します。
Error in mapping rules. Rule with ruleId = x failed validation. Exact schema and table name required when using table settings rule.
さらに、 では、 で 1 つのタスクを使用して大量の大規模なコレクションをロードしない AWS ことをお勧めしますparallel-load
。MaxFullLoadSubTasks
タスク設定パラメータ値により、 AWS DMS
はリソース競合と、並行してロードするセグメント数を制限することに注意します。MaxFullLoadSubTasks の最大値は 49 です。
この代わりに各 "schema-name"
と "table-name"
を個別に指定して、最大のコレクションのソースデータベースのすべてのコレクションを指定します。また、移行は適切にスケールアップします。例えば、データベース内の大量のコレクションを処理するのに十分な数のレプリケーションインスタンスで複数のタスクを実行します。
選択したテーブルおよびビューさらにコレクションで並列ロードを使用する
移行を高速化してより効率的にするには、選択したリレーショナルテーブルおよびビューおよびコレクションを並列ロードできます。つまり、数本のスレッドを並列使用し、単一セグメント化テーブルまたはビュー、コレクションを移行できます。これを行うには、 は全ロードタスクをスレッドに AWS DMS 分割し、各テーブルセグメントを独自のスレッドに割り当てます。
この並列ロードプロセスを使用すると、まず複数スレッドが複数テーブルおよびビューおよびコレクションをソースのエンドポイントから並列アップロードするようにできます。次に、複数のスレッドを移行し、同じテーブルおよびビューおよびコレクションをターゲットエンドポイントに並列ロードすることができます。一部のデータベースエンジンでは、既存のパーティションあるいはサブパーティションを使用してテーブルおよびビューをセグメント化することができます。他のデータベースエンジンでは、特定のパラメータ (自動セグメンテーション) に従ってコレクション AWS DMS を自動的にセグメント化できます。それ以外の場合は、列の値の範囲を指定することで任意のテーブルまたはビュー、コレクションをセグメント化できます。
並列ロードは以下のソースエンドポイントでサポートされています。
-
Oracle
-
Microsoft SQL Server
-
MySQL
-
PostgreSQL
-
IBM Db2 LUW
-
SAP Adaptive Server Enterprise (ASE)
-
MongoDB (並列全ロードの自動セグメンテーションと範囲セグメンテーション オプションのみサポート)
-
Amazon DocumentDB (並列全ロードの自動セグメンテーションと範囲セグメンテーション オプションのみをサポート)
MongoDB および Amazon DocumentDB エンドポイントの場合、 は並列全ロードの範囲セグメンテーションオプションのパーティションキーである列に対して次のデータ型 AWS DMS をサポートします。
-
ダブル
-
文字列
-
ObjectId
-
32 ビット整数
-
64 ビット整数
テーブル設定ルールで使用する並列ロードは、次のターゲットエンドポイントでサポートされます。
-
Oracle
-
Microsoft SQL Server
-
MySQL
-
PostgreSQL
-
Amazon S3
-
SAP Adaptive Server Enterprise (ASE)
-
Amazon Redshift
-
MongoDB (並列全ロードの自動セグメンテーションと範囲セグメンテーション オプションのみサポート)
-
Amazon DocumentDB (並列全ロードの自動セグメンテーションと範囲セグメンテーション オプションのみをサポート)
-
Db2 LUW
並行してロードするテーブルとビューの最大数を指定するには、MaxFullLoadSubTasks
タスク設定を使用します。
並列ロードタスクのサポートされるターゲットのテーブルまたはビューごとの最大スレッド数を指定するには、列値の境界を使用してさらに多くのセグメントを定義できます。
重要
MaxFullLoadSubTasks
は、並行してロードするテーブルまたはテーブルのセグメント数を制御します。ParallelLoadThreads
は、ロードを並行して実行するために移行タスクが使用するスレッド数を制御します。上記の設定は乗算です。そのため、フルロードタスクで使用するスレッドの合計数は、ほぼ ParallelLoadThreads
値と MaxFullLoadSubTasks
値を乗算した値になります (ParallelLoadThreads
* MaxFullLoadSubtasks)
)
多数のフルロードサブタスクがあり、多数の並列ロードスレッドがあるタスクを作成すると、タスクがメモリを大量に消費してエラーとなる可能性があります。
Amazon DynamoDB、Amazon Kinesis Data Streams、Apache Kafka、または Amazon Elasticsearch Service のターゲットのテーブルあたりの最大スレッド数を指定するには、ParallelLoadThreads
ターゲットメタデータタスク設定を使用します。
ParallelLoadThreads
を使用する際に並列ロードタスクのバッファサイズを指定するには、ParallelLoadBufferSize
ターゲットメタデータタスク設定を使用します。
ParallelLoadThreads
と ParallelLoadBufferSize
の可用性と設定は、ターゲットエンドポイントによって異なります。
ParallelLoadThreads
と ParallelLoadBufferSize
の設定の詳細については、「ターゲットメタデータのタスク設定」をご参照ください。MaxFullLoadSubTasks
の設定の詳細については、「全ロードタスク設定」をご参照ください。ターゲットエンドポイントに固有の情報については、関連するトピックをご参照ください。
並列ロードを使用するには、parallel-load
オプションを指定した table-settings
タイプのテーブルマッピングルールを作成します。table-settings
ルールでは、並列ロードする単一テーブルまたはビュー、コレクションのセグメント化条件を指定できます。これを行うには、 parallel-load
オプションの type
パラメータの複数のオプションのいずれかに設定します。
これを行う方法は、並行ロード用にテーブルまたはビュー、コレクションのセグメント化方法によって異なります。
-
パーティション (またはセグメント) を使用 -
partitions-auto
タイプを使用して、すべての既存のテーブルまたはビューのパーティション (またはセグメント) をロードします。または、partitions-list
タイプを指定したパーティション配列で使用して、選択したパーティションのみをロードします。MongoDB および Amazon DocumentDB エンドポイントのみ、
partitions-auto
タイプと追加のオプションtable-settings
パラメータを使用して AWS DMS 自動的に計算するセグメントごとに、すべてのコレクションまたは指定されたコレクションをロードします。 -
(Oracle エンドポイントのみ) サブパーティションを使用 -
subpartitions-auto
タイプを使用してすべての既存のテーブル サブパーティションまたはビューサブパーティションをロードします。または、partitions-list
タイプを指定したsubpartitions
配列で使用して、選択したサブパーティションのみをロードします。 -
定義するセグメントを使用 - 列値の境界を使用して定義したテーブルセグメントまたはビューセグメントまたはコレクションセグメントをロードします。これを行うには、
ranges
タイプを指定したcolumns
配列およびboundaries
配列で使用します。注記
PostgreSQL エンドポイントはこのタイプの並列ロードのみに対応します。ソースエンドポイントとして MongoDB と Amazon DocumentDB は、全ロードのこの範囲セグメンテーションタイプと並列自動セグメンテーションタイプの両方に対応しています (
partitions-auto
)。
並列でロードする追加のテーブルまたはビュー、コレクションを識別するには、追加の table-settings
オブジェクトを parallel-load
オプションで指定します。
次の手順では、各並列ロードタイプの JSON を記述する方法を、単純なものからきわめて複雑なものまで説明します。
すべてのテーブルまたはビューあるいはコレクション パーティション、またはすべてのテーブルまたはビューまたはコレクションのサブパーティションを指定するには
-
partitions-auto
タイプまたはsubpartitions-auto
タイプのいずれか (両方は使用できません) を指定してparallel-load
を指定します。各テーブルまたはビューまたはコレクションのパーティション (セグメント) またはサブパーティションは、自己スレッドに自動割り当てされます。
エンドポイントによっては、並列ロードには、テーブルまたはビューですでに定義されている場合のみ、パーティションあるいはサブパーティションが含まれます。MongoDB および Amazon DocumentDB ソースエンドポイントの場合、 はオプションの追加のパラメータに基づいてパーティション (またはセグメント) AWS DMS を自動的に計算できます。例えば、
number-of-partitions
、collection-count-from-metadata
、max-records-skip-per-page
、batch-size
などです。
選択したテーブルまたはビューのパーティション、サブパーティション、またはその両方を指定するには
-
partitions-list
タイプでparallel-load
を指定します。 -
(オプション) パーティション名の配列を
partitions
の値として指定したパーティションが含まれます。指定されたパーティションがそれぞれ独自のスレッドに割り当てられます。
重要
Oracle エンドポイントの場合、並列ロード用にパーティションとサブパーティションを選択するときに、パーティションとサブパーティションが重複しないようにします。重複するパーティションとサブパーティションを使用してデータを並列ロードすると、エントリが複製されるか、プライマリ キーの重複違反により失敗します。
-
(オプション)、Oracle エンドポイントのみ、サブパーティションを
subpartitions
の値として指定したサブパーティション名の配列を指定してインクルードします。指定されたサブパーティションがそれぞれ独自のスレッドに割り当てられます。
注記
並列ロードには、テーブルまたはビューですでに定義されている場合に、パーティションあるいはサブパーティションが含まれます。
テーブルセグメントまたはビューセグメントを列値の範囲として指定することができます。その場合、次の列の特性について注意してください。
-
インデックス化された列を指定するとパフォーマンスが大幅に向上します。
-
最大 10 個の列を指定できます。
-
列を使用して、DOUBLE、FLOAT、BLOB、CLOB、NCLOB の各 AWS DMS データ型でセグメント境界を定義することはできません。
-
Null 値のレコードはレプリケートされません。
テーブルセグメントまたはビューセグメント、コレクションセグメントを列値の範囲として指定するには
-
ranges
タイプでparallel-load
を指定します。 -
columns
の値として列名の配列を指定して、テーブルまたはビューのセグメント間の境界を定義します。テーブルまたはビューのセグメント間で境界を定義するすべての列でこれを行います。列の順序は重要です。次に説明するように、各境界を定義するうえで最初の列がもっとも重要であり最後の列は最も重要度が低くなります。
-
boundaries
の値として境界配列を指定して、すべてのテーブルまたはビューのセグメントでデータ範囲を定義します。境界配列は列値の配列の配列です。これを行うには、次のステップを実行します。-
列と値の配列の各要素を各列に対応する値として指定します。列と値の配列は、定義する各テーブルまたはビューのセグメントの上限の境界を表します。
columns
配列の列で指定したものと同じ順序で各列を指定します。DATE 列の値を、ソースでサポートされる形式で入力します。
-
各列値配列を、テーブルまたはビューの下部からセグメントまでの next-to-top各セグメントの上限として順番に指定します。指定した上限の上にテーブルの行が存在する場合、これらの行はテーブルまたはビューの一番上のセグメントを形成します。そのため、範囲ベースのセグメントの数は、境界配列のセグメント境界の数より 1 つ多くなることがあります。このような範囲ベースのセグメントはそれぞれ個別のスレッドに割り当てられます。
データテーブル内のすべての列のデータ範囲を定義しない場合でも、null 以外のすべてのテーブルまたはビューのデータがレプリケートされます。
例えば、次のように COL1、COL2、 COL 3 に 3 つの列・値の配列を定義したとします。
COL1 COL2 COL3 10 30 105 20 20 120 100 12 99 3 つのセグメントの境界を定義したことで、合計で 4 つのセグメントができることがあります。
各セグメントでレプリケートする行の範囲を識別するため、レプリケーションインスタンスは 4 つのセグメントごとにこれらの 3 つの列で検索を適用します。検索は次のようになります。
- セグメント 1
-
以下の条件が true であるすべての行をレプリケートします。最初の 2 列の値が、対応する セグメント 1 の上限値以下です。また、3 番目の列の値は、セグメント 1 の上限値より小さくなります。
- セグメント 2
-
以下の条件が true であるすべての行(セグメント 1 行を除く)をレプリケートします。最初の 2 列の値が、対応する セグメント 2 の上限値以下です。また、3 番目の列の値は、セグメント 2 の上限値より小さくなります。
- セグメント 3
-
以下の条件が true であるすべての行(セグメント 2 行を除く)をレプリケートします。最初の 2 列の値が、対応する セグメント 3 の上限値以下です。また、3 番目の列の値は、セグメント 3 の上限値より小さくなります。
- セグメント 4
-
残りのすべての行 (セグメント 1、2、3 の行を除く) をレプリケートします。
この場合、レプリケーションインスタンスが次のように
WHERE
句を作成して各セグメントをロードします。- セグメント 1
-
((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105)))
- セグメント 2
-
NOT ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105))) AND ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120)))
- セグメント 3
-
NOT ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120))) AND ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))
- セグメント 4
-
NOT ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))
-
選択したテーブルまたはビューの LOB 設定を指定
1 つ以上の table-settings
オブジェクトで lob-settings
オプションを使用してタイプ table-settings
のテーブルマッピングルールを作成すると、1 つ以上のテーブルに LOB 設定のタスクを設定できます。
選択したテーブルへの LOB 設定の指定は、次のソースエンドポイントでサポートされています。
-
Oracle
-
Microsoft SQL Server
-
MySQL
-
PostgreSQL
-
IBM Db2 (以下で説明するように、
mode
およびbulk-max-size
設定に応じます) -
SAP Adaptive Server Enterprise (ASE) (以下で説明するように、
mode
およびbulk-max-size
設定に応じます)
選択したテーブルまたはビューへの LOB 設定の指定は、次のターゲットエンドポイントでサポートされています。
-
Oracle
-
Microsoft SQL Server
-
MySQL
-
PostgreSQL
-
SAP ASE (以下で説明するように、
mode
およびbulk-max-size
設定に応じます)
注記
LOB データタイプはプライマリキーが含まれるテーブルおよびビューのみで使用できます。
選択したテーブルまたはビューの LOB 設定を使用するには、lob-settings
オプションを指定して table-settings
タイプのテーブルマッピングルールを作成します。これにより、object-locator
オプションで識別されたテーブルまたはビューの LOB 処理が指定されます。table-settings
ルール内で、以下のパラメータを使用して lob-settings
オブジェクトを指定できます。
-
mode
- 選択したテーブルまたはビューの LOB 移行処理のメカニズムを次のように指定します:-
limited
- デフォルトの制限付き LOB モードは最速で効率的なモードです。すべての LOB が小さいか、またはターゲットのエンドポイントで未制限の LOB サイズがサポートされていない場合のみ、このモードを使用します。また、limited
を使用する場合、すべての LOB はbulk-max-size
で設定したサイズ内にする必要があります。完全ロードタスクにおけるこのモードでは、レプリケーションインスタンスはすべての LOB を他の列のデータ型と一緒にメインテーブルストレージまたはメインビューストレージの一部としてインラインで移行します。ただし、
bulk-max-size
値より大きい LOB はすべて、インスタンスによって指定のサイズに切り捨てられます。変更データキャプチャ (CDC) のロードの場合、インスタンスはすべての LOB をソーステーブルの参照を使用して移行します。これは標準の完全 LOB モードと同様です (以下を参照)。注記
全ロードタスクに対してのみビューを移行できます。
-
unlimited
- 完全 LOB モードの移行メカニズムは、次のようにbulk-max-size
に設定した値によって異なります:-
[Standard full LOB mode](標準の完全 LOB モード) -
bulk-max-size
をゼロに設定すると、レプリケーション インスタンスは標準の完全 LOB モードを使用してすべての LOB を移行します。このモードでは、サイズにかかわらずすべての LOB を移行でソーステーブルまたはソースビューを参照する必要があります。このアプローチでは通常、制限付き LOB モードよりもはるかに低速で移行されます。すべてまたはほとんどの LOB が大きい (1 GB 以上) の場合にのみ、このモードを使用します。 -
[Combination full LOB mode](組み合わせ完全 LOB モード) -
bulk-max-size
をゼロ以外の値に設定すると、この完全 LOB モードは制限付き LOB モードと標準完全 LOB モードを組み合わせて使用します。これは完全ロードタスク向けであり、LOB サイズがbulk-max-size
値以内の場合、インスタンスは制限付き LOB モードのようにインラインで LOB を移行します。LOB のサイズがこの値より大きい場合は、インスタンスは標準の完全 LOB モードのようにソーステーブルまたはソースビューの参照を使用して LOB を移行します。変更データキャプチャ (CDC) のロードの場合、インスタンスはすべての LOB をソーステーブルの参照を使用して移行します。これは標準の完全 LOB モードと同様です (以下を参照)。これは、LOB に関係なく行われます。注記
全ロードタスクに対してのみビューを移行できます。
このモードにより、移行速度はより高速な制限付き LOB モードと低速な標準の完全 LOB モードの中間になります。このモードは、小さい LOB と大きい LOB が混在しており、ほとんどの LOB が小さい場合にのみ使用します。
この組み合わせ完全 LOB モードは、つぎのエンドポイントのみで使用できます。
-
IBM Db2 (ソースとして)
-
SAP ASE (ソースあるいはターゲットとして)
-
unlimited
モードに指定するメカニズムに関わらず、インスタンスはすべての LOB を完全に移行し、切り捨ては行われません。 -
-
none
- レプリケーション インスタンスはタスク LOB 設定を使用して、選択されたテーブルまたはビューの LOB を移行します。このオプションを使用すると、選択されたテーブルまたはビューで LOB 設定を使用した場合と使用しない場合の移行結果を比較できます。
指定したテーブルまたはビューにレプリケーションに含まれる LOB があるときには、
limited
LOB モードを使用する場合のみBatchApplyEnabled
タスクをtrue
に設定できます。場合によっては、
BatchApplyEnabled
をtrue
に、また、BatchApplyPreserveTransaction
をfalse
に設定できます。このようなケースでは、テーブルまたはビューに LOB があり、ソースおよびターゲットのエンドポイントが Oracle である場合に、インスタンスはBatchApplyPreserveTransaction
をtrue
に設定します。 -
-
bulk-max-size
- 前の項目で説明したmode
に応じて、この値を 0 または 0 以外の値 (KB) に設定します。limited
モードでは、このパラメータにゼロ以外の値を設定する必要があります。インスタンスは LOB をバイナリ形式に変換します。したがって、レプリケートする必要がある最大の LOB を指定するには、サイズを 3 倍します。たとえば、最大の LOB が 2 MB の場合、
bulk-max-size
を 6000 (6 MB) に設定します。
テーブル設定の例
テーブル設定を使用する説明の例を次に示します。
例 パーティションでセグメント化されたテーブルのロード
次の例では、すべてのパーティションに基づいて並列でロードすることで、ソース内の SALES
テーブルを効率的にロードします。
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-auto" } } ] }
例 サブパーティションでセグメント化されたテーブルのロード
次の例では、すべてのサブパーティションに基づいて並列でロードすることで、Oracle ソース内の SALES
テーブルを効率的にロードします。
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "subpartitions-auto" } } ] }
例 パーティションのリストでセグメント化されたテーブルのロード
次の例では、特定のパーティションのリストに基づいて並列でロードすることで、ソース内の SALES
テーブルをロードします。ここで、指定されたパーティションは ABCD
やEFGH
などアルファベットの一部で始まる値に命名されます。
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-list", "partitions": [ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWXYZ" ] } } ] }
例 選択されたパーティションおよびサブパーティションのリストでセグメント化された Oracle テーブルのロード
次の例では、選択されたパーティションおよびサブパーティションのリストを使用して並列でロードすることで、Oracle ソースの SALES
テーブルをロードします。ここで、指定されたパーティションは ABCD
やEFGH
などアルファベットの一部で始まる値に命名されます。指定されたサブパーティションは、数字で始まる値を取って命名されます。たとえば、01234
や 56789
などです。
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-list", "partitions": [ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWXYZ" ], "subpartitions": [ "01234", "56789" ] } } ] }
例 列の値の範囲でセグメント化されたテーブルのロード
次の例では、SALES_NO
および REGION
列の値の範囲で指定されたセグメントを使用して並列でロードすることで、ソース内の SALES
テーブルをロードします。
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "ranges", "columns": [ "SALES_NO", "REGION" ], "boundaries": [ [ "1000", "NORTH" ], [ "3000", "WEST" ] ] } } ] }
ここで、2 つの列は、SALES_NO
および REGION
という名前でセグメント範囲に指定されます。2 つの境界は 2 セットの列の値 (["1000","NORTH"]
および ["3000","WEST"]
) で指定されます。
したがって、これら 2 つの境界によって、並列でロードされる次の 3 つのテーブルセグメントが識別されます。
- セグメント 1
-
SALES_NO
が 1000 以下でありREGION
が "NORTH" 未満である行。つまり、EAST リージョンで販売数が最大 1000 まで。 - セグメント 2
-
セグメント 1 以外で
SALES_NO
が 3000 以下でありREGION
が "WEST" 未満である行。つまり、NORTH および SOUTH リージョンで販売数が 1,000 を超え 3,000 まで。 - セグメント 3
-
セグメント 1 および セグメント 2 以外の残りすべての行。つまり、「WEST」リージョンで販売数が 3000 超。
例 1 つは範囲でセグメント化され、もう 1 つはパーティションでセグメント化された 2 つのテーブルのロード
次の例では、SALES
テーブルを識別したセグメント境界で並列にロードします。また、前の例と同様に、ORDERS
テーブルをすべてのパーティションで並列にロードします。
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "ranges", "columns": [ "SALES_NO", "REGION" ], "boundaries": [ [ "1000", "NORTH" ], [ "3000", "WEST" ] ] } }, { "rule-type": "table-settings", "rule-id": "3", "rule-name": "3", "object-locator": { "schema-name": "HR", "table-name": "ORDERS" }, "parallel-load": { "type": "partitions-auto" } } ] }
例 制限付き LOB モードを使用した LOB を含むテーブルのロード
次の例では、ソース内の LOB を含む ITEMS
テーブルを、切り捨てられない最大サイズが 100 MB の制限付き LOB モード(デフォルト)を使用してロードします。このサイズよりも大きい LOB はすべて 100 MB に切り捨てられます。すべての LOB は、他のすべての列のデータ型と一緒にインラインでロードされます。
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "bulk-max-size": "100000" } } ] }
例 標準の完全 LOB モードを使用したテーブルのロード
次の例では、標準の完全 LOB モードを使用して、すべての LOB を切り捨てずに、ソースの ITEMS
テーブルをロードします。サイズを問わずすべての LOB は、ソーステーブルの各 LOB ごとに参照を使用して、他のデータ型とは別にロードされます。
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "unlimited", "bulk-max-size": "0" } } ] }
例 組み合わせ完全 LOB モードを使用した LOB を含むテーブルのロード
次の例では、組み合わせ完全 LOB モードを使用して、すべての LOB を切り捨てずに、ソースの ITEMS
テーブルをロードします。サイズが 100 MB 以内のすべての LOB は他のデータ型とともにインラインでロードされます。制限付き LOB モードと同様です。サイズが 100 MB を超えるすべての LOB は、他のデータ型とは別にロードされます。この個別のロードでは、標準の完全 LOB モードのように、ソーステーブルのそのような各 LOB のルックアップが使用されます。
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "unlimited", "bulk-max-size": "100000" } } ] }
例 タスク LOB 設定を使用した LOB を含むテーブルのロード
次の例では、タスク LOB 設定を使用して、すべての LOB を含め、ソースの ITEMS
テーブルをロードします。100 MB の bulk-max-size
設定は無視され、limited
または unlimited
モードにクイックリセットするためにのみ残されます。
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "none", "bulk-max-size": "100000" } } ] }