資料表和集合設定規則與操作 - AWS Database Migration Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

資料表和集合設定規則與操作

使用資料表設定指定您想套用到所選取資料表或檢視特定操作的任何設定。資料表設定規則為選用項目,取決於您的端點和遷移需求。

MongoDB 和 Amazon DocumentDB 資料庫不使用資料表和檢視,而是將資料記錄儲存為文件,並集中在集合內。任何 MongoDB 或 Amazon DocumentDB 端點的單一資料庫是依資料庫名稱識別的一組特定集合。

從 MongoDB 或 Amazon DocumentDB 來源遷移時,您使用的平行載入設定略有不同。在這種情況下,針對平行載入設定的自動分段或範圍分割類型,請考慮所選集合,而不是資料表和檢視表。

針對使用資料表設定規則類型的資料表映射規則,可套用下列參數。

參數 可能的值 描述
rule-type table-settings 此值將規則套用到選擇規則所指定的資料表、檢視或集合。
rule-id 數值。 識別規則的唯一數值。
rule-name 英數值。 識別規則的唯一名稱。
object-locator 具有下列參數的物件:
  • schema-name – 結構描述的名稱。對於 MongoDB 和 Amazon DocumentDB 端點,這是包含一組集合的資料庫名稱。

  • table-name – 資料表或檢視的名稱。

特定結構描述和資料表或檢視的名稱,或是特定資料庫和集合的名稱 (無萬用字元)。

parallel-load 具有下列參數的物件:
  • type – 指定是否開啟平行載入。

    如果啟用,此參數也會指定用來識別要平行載入之資料表或檢視分割區、子分割區或其他區段的機制。分割區是已由來源資料表或檢視中的名稱定義及識別的區段。

    對於 MongoDB 和 Amazon DocumentDB 端點,分區是段。 AWS DMS 可以計算這些自動給定的關聯自動分段參數。或者,您可以使用範圍分割參數來手動指定。

    僅限 Oracle 端點,子分割區是已由來源資料表或檢視中的名稱定義及識別的區段。您可以在一或多個資料表或檢視資料欄的值範圍內指定邊界,以在 table-settings 規則中識別其他區段。

  • partitions – 當 typepartitions-list 時,此值指定要平行載入的所有分割區。

  • subpartitions – 僅限 Oracle 端點,當 typepartitions-list 時,指定要平行載入的所有子分割區。

  • columns – 當 typeranges 時,此值會指定資料欄名稱以用於識別要平行載入的範圍資料表區段。

  • boundariestyperanges 是 ,此值會指定用於識別要平行載入之範圍區段的 columns 值。

此值指定在 object-locator 選項識別的資料表或檢視上進行平行載入 (多執行緒) 操作。在這種情況下,您可以用下列任何方式平行載入:

  • 透過由所有可用分割區或子分割區指定的區段。

  • 透過選取的分割區和子分割區。

  • 透過自動分段或您指定的範圍區段。

如需平行載入的詳細資訊,請參閱:在選取的資料表、檢視和集合使用平行載入

type parallel-load 的下列其中之一:
  • partitions-auto – 平行載入資料表或檢視的所有分割區。每個分割區會分配至自己的執行緒。

    這是 MongoDB 和 Amazon DocumentDB 來源端點使用平行完全載入自動分段選項的必要設定。

  • subpartitions-auto – (僅限 Oracle 端點) 平行載入資料表或檢視的所有子分割區。每個子分割區會分配至自己的執行緒。

  • partitions-list – 平行載入資料表或檢視的所有指定分割區。僅限 Oracle 端點,平行載入資料表或檢視的所有指定子分割區。您指定的每個分割區和子分割區會分配至它們自己的執行緒。您藉由指定分割區名稱 (partitions) 和子分割區名稱 (subpartitions),來指定要平行載入的分割區和子分割區。

  • ranges – 平行載入資料表或檢視的所有指定區段。您識別的每個資料表、檢視或集合區段都會分配至各自的執行緒。您透過資料欄名稱 (columns) 和資料欄值 (boundaries) 來識別這些區段。

    PostgreSQL 僅支援此類型的平行負載。MongoDB 和 Amazon DocumentDB 作為來源端點時,同時支援此範圍分段類型和平行完全載入的自動分段類型 (partitions-auto)。

  • none – 資料表或檢視以單執行緒任務載入 (預設值),無論其分割區或子分割區為何。如需詳細資訊,請參閱 建立任務

此機制用於識別要平行載入的資料表、檢視、集合分割區、子分割區或區段。
number-of-partitions (選用) 如果 MongoDB 或 Amazon DocumentDB 端點指定集合的 typepartitions-auto,此參數會指定用於遷移的分割區 (區段) 總數。預設為 16。 指定要平行載入的分割區確切數量。
collection-count-from-metadata (選擇性) 如果typepartitions-auto針對 MongoDB 或 Amazon DocumentDB 端點的指定集合,且此參數設定為true,則 AWS DMS 會使用估計的收集計數來判斷分割區的數目。如果將此參數設定為false,則 AWS DMS 會使用實際的收集計數。預設值為 true 指定在計算平行載入的分割區數目時,要使用估計集合計數還是實際集合計數。
max-records-skip-per-page (選用) 如果 MongoDB 或 Amazon DocumentDB 端點指定集合的 typepartitions-auto,這是決定每個分割區邊界時每次要略過的記錄數目。 AWS DMS 會使用分頁跳過方法來確定分區的最小邊界。預設值為 10,000。 指定在決定每個分割區的邊界時,每次所略過的記錄數。設定比預設值更大的值可能會導致游標逾時和任務失敗。設定比預設值更小的值可能會導致每頁執行操作增加,且完全載入速度較慢。
batch-size (選用) 如果 MongoDB 或 Amazon DocumentDB 端點指定集合的 typepartitions-auto ,此整數值將限制單一往返批次中傳回的文件數目。如果批次大小為零 (0),游標會使用伺服器定義的批次大小上限。預設值為 0。 指定單一批次傳回的文件數目上限。每個批次都需要往返伺服器。
partitions typepartitions-list 時,此為字串陣列,指定要平行載入的分割區名稱。 要平行載入的分割區名稱。
subpartitions (僅限 Oracle 端點) typepartitions-list 時,此為字串陣列,指定要平行載入的子分割區名稱。 要平行載入的子分割區名稱。
columns typeranges 時,字串陣列會設定為資料欄名稱,用於識別要平行載入的範圍資料表、檢視或集合區段。 這些資料欄名稱用於識別要平行載入的範圍資料表、檢視或集合區段。
boundaries typeranges 時,此為資料欄值陣列的陣列。每個資料欄值陣列包含columns 指定之數量和順序的資料欄值。資料欄值陣列會指定資料表、檢視或集合區段的上限。每個額外的資料欄值陣列會在上邊界新增一個額外的資料表、檢視或集合區段。將平行載入所有這些範圍資料表、檢視或集合區段。 這些資料欄值用於識別要平行載入的資料表、檢視或集合分割區。
lob-settings 具有下列參數的物件:
  • mode – 指定 LOB 的遷移處理模式。

  • bulk-max-size – 指定 LOB 的大小上限,這取決於 mode 設定。

此值用於指定 object-locator 選項所識別資料表或檢視的 LOB 處理方式。指定的 LOB 處理方式只會覆寫這個資料表或檢視的任何任務 LOB 設定。如需使用 LOB 設定參數的詳細資訊,請參閱:指定所選資料表或檢視的 LOB 設定
mode

指定使用下列值對所指定資料表或檢視中 LOB 的遷移處理方式:

  • limited – (預設) 此值將遷移設定為有限 LOB 模式,所有 LOB 與資料表或檢視中所有其他資料欄資料類型一起內嵌遷移。覆寫大多數小型 LOB (100 MB 或以下) 時,使用此值。此外,指定一個 bulk-max-size 值 (零為無效)。所有大於 bulk-max-size 的已遷移 LOB 會截斷至您設定的大小。

  • unlimited – 這個值將遷移設定為完整 LOB 模式。當所有或多數您想要複寫的 LOB 大於 1 GB 時,使用此值。如果您將 bulk-max-size 值指定為零,所有 LOB 會在標準完整 LOB 模式中遷移。在這種形式的 unlimited 模式中,所有 LOB 會使用來源資料表或檢視的查詢,從其他資料欄資料類型分開遷移。如果您指定的 bulk-max-size 值大於零,所有 LOB 會在組合完整 LOB 模式中遷移。在這種形式的 unlimited 模式中,大於 bulk-max-size 的 LOB 會使用來源資料表或檢視查詢遷移,類似於標準的完整 LOB 模式。否則,最大到和包含此大小的 LOB 將內嵌遷移,類似於有限 LOB 模式。unlimited 模式中不會截斷任何 LOB,無論您使用何種形式。

  • none – 所有資料表或檢視 LOB 將根據任務 LOB 設定遷移。

    如需任務 LOB 設定的詳細資訊,請參閱:目標中繼資料任務設定

    如需如何遷移 LOB 及如何指定這些任務 LOB 設定的詳細資訊,請參閱:設定 AWS DMS 作業中來源資料庫的 LOB 支援

用於遷移 LOB 的機制。
bulk-max-size 這個值的效果取決於 mode LOB 的大小上限,以 KB 為單位遞增。如果您只需要複寫小型 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.

此外, AWS 建議您不要使用單一工作來載入大量的大型集合parallel-load。請注意, 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 端點,針對作為 parallel 滿載範圍分割選項的分割索引鍵的資料行 AWS DMS 支援下列資料類型。

  • Double

  • 字串

  • 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 目標中繼資料任務設定。

ParallelLoadThreadsParallelLoadBufferSize 的可用性和設定取決於目標端點。

如需 ParallelLoadThreadsParallelLoadBufferSize 設定的詳細資訊,請參閱:目標中繼資料任務設定。如需 MaxFullLoadSubTasks 設定的詳細資訊,請參閱完全載入任務設定。如需目標端點的特有資訊,請參閱相關主題。

若要使用平行載入,請使用 parallel-load 選項建立 table-settings 類型的資料表映射規則。在 table-settings 規則中,您可以指定要平行載入的單一資料表、檢視或集合的區隔條件。若要這樣做,請將 parallel-load 選項的 type 參數設定為數個選項之一。

此做法取決於您如何將資料表、檢視或集合分段以進行平行負載:

  • 依分割區 (或區段) – 使用 partitions-auto 類型載入所有現有的資料表或檢視分割區 (或區段)。或者也可以使用指定分割區陣列的 partitions-list 類型,只載入選擇的分割區。

    僅適用於 MongoDB 和 Amazon DocumentDB 端點,請依區段載入所有或指定的集合,這些區段也會使用partitions-auto類型和其他選用參數 AWS DMS 自動計算。table-settings

  • (僅限 Oracle 端點) 依子分割區 – 使用 subpartitions-auto 類型載入所有現有的資料表或檢視子分割區。或者也可以使用所指定 subpartitions 陣列的 partitions-list 類型,只載入選擇的子分割區。

  • 依您定義的區段 – 使用資料欄值邊界,載入您定義的資料表、檢視或集合區段。若要這樣做,請使用 ranges 類型與指定的 columnsboundaries 陣列。

    注意

    PostgreSQL 僅支援此類型的平行負載。MongoDB 和 Amazon DocumentDB 作為來源端點時,同時支援此範圍分段類型和平行完全載入的自動分段類型 (partitions-auto)。

若要識別要平行載入的額外資料表、檢視或集合,請使用 parallel-load 選項指定額外的 table-settings 物件。

在下列程序中,您可以了解如何為每個平行載入類型設定 JSON 程式碼,從最簡單到最複雜。

指定所有資料表、檢視或集合分割區,或所有資料表或檢視子分割區
  • 使用 partitions-auto 類型或 subpartitions-auto 類型 (但不能同時使用) 指定 parallel-load

    每個資料表、檢視或集合分割區 (或區段) 便會自動分配至自己的執行緒。

    對於部分端點,分割區或子分割區只有已在資料表或檢視中定義時才會參與平行載入。對於 MongoDB 和 Amazon DocumentDB 來源端點,您可以根據選用的附加參數 AWS DMS 自動計算分區 (或區段)。其中包括 number-of-partitionscollection-count-from-metadatamax-records-skip-per-pagebatch-size

指定所選的資料表或檢視分割區、子分割區或兩者同時
  1. 使用 partitions-list 類型指定 parallel-load

  2. (選用) 指定分割區名稱陣列作為 partitions 的值,來包含分割區。

    每個指定的分割區會分配至自己的執行緒。

    重要

    對於 Oracle 端點,請確定選擇平行載入的分割區和子分割區並未重疊。如果您使用重疊的分割區和子分割區平行載入資料,系統會複製項目,或者因主索引鍵重複違規而失敗。

  3. (選用) 僅限 Oracle 端點,可指定子分割區名稱陣列作為 subpartitions 的值,以包含子分割區。

    接著每個指定的子分割區將分配至自己的執行緒。

    注意

    分割區或子分割區只有已在資料表或檢視中定義時才會參與平行載入。

您可將資料表或檢視區段指定為資料欄值範圍。這麼做的時候,請注意以下資料欄特性:

  • 指定索引欄可大幅提升效能。

  • 您可以指定最多 10 個資料欄。

  • 您不能使用資料行來定義具有下列 AWS DMS 資料類型的區段邊界:雙精度、浮點數、BLOB、CLOB 和 NCLOB

  • 不會複寫具有 Null 值的記錄。

以資料欄值範圍指定資料表、檢視或集合區段
  1. 使用 ranges 類型指定 parallel-load

  2. 指定資料表資料欄名稱作為 columns 的值,來定義資料表或檢視區段之間的邊界。請針對您要定義資料表或檢視區段之間邊界的每個資料欄,執行此操作。

    資料欄的順序很重要。在定義各邊界時,第一個資料欄最重要,最後一個資料欄最不重要,如以下步驟所述。

  3. 指定邊界陣列作為 boundaries 的值,來定義所有資料表或檢視區段的資料範圍。邊界陣列是資料欄值陣列的陣列。要完成此操作,請遵循以下步驟:

    1. 指定資料欄值陣列的每個元素,作為對應至每個資料欄的值。資料欄值陣列代表您希望定義之每個資料表或檢視區段的上邊界。依照您在 columns 陣列中指定資料欄的相同順序,來指定每個資料欄。

      以來源支援的格式輸入 DATE 資料欄的值。

    2. 將每個欄值陣列指定為從表格或檢視表區段的每個區段的上方邊界 (依順序排列)。 next-to-top如果所指定的上邊界上方有任何資料列,這些資料列將填入資料表或檢視的上區段。因此,範圍區段的數量可能比邊界陣列中區段邊界的數量多一。每個這類的範圍區段都會分配至自己的執行緒。

      將複寫所有非 Null 的資料,即使您未定義資料表或檢視中所有資料欄的資料範圍。

    例如,假設您為 COL1、COL2 和 COL3 資料欄定義三個資料欄值陣列,如下所示。

    COL1 COL2 COL3
    10 30 105
    20 20 120
    100 12 99

    您已定義三個區段邊界,總數可能為四個區段。

    為了識別每個區段要複製的資料列範圍,複寫執行個體會套用搜尋方式至四個區段中的三個資料欄:搜尋類似如下:

    區段 1

    複寫下列為 true 的所有資料列:前兩個欄值小於或等於其對應的區段 1 上限邊界值。此外,第三個欄的值小於其區段 1 的上限邊界值。

    區段 2

    複寫下列為 true 的所有資料列 (區段 1 資料列除外):前兩欄的值小於或等於其對應區段 2 的上限邊界值。此外,第三個欄的值小於其區段 2 的上限邊界值。

    區段 3

    複寫下列為 true 的所有資料列 (區段 2 資料列除外):前兩欄的值小於或等於其對應區段 3 的上限邊界值。此外,第三個欄的值小於其區段 3 的上限邊界值。

    區段 3

    複製所有其餘的資料列 (區段 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)))

    區段 3

    NOT ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))

指定所選資料表或檢視的 LOB 設定

您可以透過使用一或多個 table-settings 物件的 lob-settings 選項建立 table-settings 類型的資料表映射規則,來設定一或多個資料表的任務 LOB 設定。

支援對下列來源端點指定所選資料表或檢視的 LOB 設定:

  • Oracle

  • Microsoft SQL Server

  • MySQL

  • PostgreSQL

  • IBM Db2,視 modebulk-max-size 設定而定,如下所述

  • SAP Adaptive Server Enterprise (ASE),視 modebulk-max-size 設定而定,如下所述

支援對下列目標端點指定所選資料表或檢視的 LOB 設定:

  • Oracle

  • Microsoft SQL Server

  • MySQL

  • PostgreSQL

  • SAP ASE,視 modebulk-max-size 設定而定,如下所述

注意

只有包含主索引鍵的資料表和檢視才能使用 LOB 資料類型。

若要使用所選資料表或檢視的 LOB 設定,您可以使用 lob-settings 選項建立 table-settings 類型的資料表映射規則。這麼做會指定由 object-locator 選項所識別資料表或檢視的 LOB 處理方式。在 table-settings 規則中,您可以用下列參數指定 lob-settings 物件:

  • mode – 指定處理所選資料表或檢視的 LOB 遷移機制,如下所示:

    • limited – 此預設的有限 LOB 模式是速度最快且最有效率的模式。此模式只適用於當您所有的 LOB 皆為小型 (大小為 100 MB 以內) 或目標端點不支援不限 LOB 大小。此外,如果您使用 limited,所有 LOB 都需要落在您設定的 bulk-max-size 大小內。

      在完全載入任務的這個模式下,複寫執行個體將遷移內嵌於主要資料表或檢視儲存中其他資料欄資料類型的所有 LOB。不過,執行個體會將任何大於 bulk-max-size 值的已遷移 LOB 截斷為指定的大小。針對變更資料擷取 (CDC) 載入任務,執行個體會使用來源資料表查詢來遷移所有 LOB,如同在標準的完整 LOB 模式下 (請參閱以下內容)。

      注意

      您只能遷移完全載入任務的檢視。

    • unlimited – 完整 LOB 模式的遷移機制取決於您在 bulk-max-size 設定的值,如下所示:

      • 標準完整 LOB 模式bulk-max-size 設定為零時,複寫執行個體會使用標準完整 LOB 模式遷移所有 LOB。此模式需要在來源資料表或檢視中查詢,以遷移每個 LOB,無論大小。此方法通常會導致遷移速度變得比有限 LOB 模式更慢。此模式只能在所有或多數 LOB 為大型 (1 GB 或更大) 時使用。

      • 組合完整 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 模式僅適用於以下端點:

        • 做為來源的 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 – 將此值設為零值或非零值 (以 KB 為單位),視先前項目中所述的 mode 而定。在 limited 模式下,您必須為此參數設定非零的值。

    執行個體會將 LOB 轉換為二進位格式。因此,若要指定您需要複寫的最大的 LOB,請將其大小乘上三倍。例如,若您最大型的 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 資料表。在這種情況下,指定分割區將按英文字母部分開頭的值命名,例如 ABCDEFGH 等。

{ "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 資料表。在這種情況下,指定分割區將按英文字母部分開頭的值命名,例如 ABCDEFGH 等。指定的分割區將按數字開頭的值來命名,例如 0123456789

{ "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_NOREGION 資料欄值範圍指定之區段平行載入,以載入來源中的 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" ] ] } } ] }

在這種情況下,將使用 SALES_NOREGION 名稱指定兩個資料欄的區段範圍。兩個邊界以兩組資料欄值 (["1000","NORTH"]["3000","WEST"]) 指定。

這兩個邊界將識別下列要平行載入的三個資料表區段:

區段 1

SALES_NO 小於或等於 1000 且 REGION 低於「NORTH」的資料列。也就是,在 EAST 區域最高至 1000 的銷售額。

區段 2

區段 1 以外、SALES_NO 小於或等於 3000 且 REGION 低於「WEST」的資料列。也就是,在 NORTH 和 SOUTH 區域超過 1000 最高至 3000 的銷售額。

區段 3

區段 1區段 2 以外所有其他的資料列。也就是,在 WEST 區域超過 3,000 的銷售額。

範例 載入兩個資料表:一個依範圍分段,另一個依分割區分段

以下範例會依您所識別的區段邊界,平行載入 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 資料表,包含 LOB,最大非截斷大小為 100 MB。任何大於此大小的 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 的查詢,分別從其他資料類型載入所有 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 模式載入來源中的 ITEMS 資料表,包含其所有的 LOB,無截斷。將內嵌於其他資料類型載入大小在 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 設定載入來源中的 ITEMS 資料表,包含所有 LOB。將忽略 100 MB 的 bulk-max-size 設定,並退出快速重設為 limitedunlimited 模式。

{ "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" } } ] }