共用方式為


在複製活動中設定 Oracle 資料庫

本文概述如何使用資料管線中的複製活動,從 Oracle 資料庫複製資料及將資料複製到該處。

支援的設定

對於複製活動下每個索引標籤的組態,請分別參閱下列各節。

一般

請參閱<[一般] 設定>指導,來設定 [一般] 設定索引標籤。

來源

在複製活動的 [來源] 索引標籤下,Oracle 資料庫支援下列屬性。

螢幕擷取畫面,其中顯示 [來源] 索引標籤和屬性清單。

以下是必要的屬性:

  • 連線:從連線清單中選取 Oracle 資料庫連接。 如果不存在連線,請選取連線清單底部的 [更多],以建立新的 Oracle 資料庫連接。
  • 使用查詢:從 [資料表] 或 [查詢] 中選取。
    • 如果您選取 [資料表]

      • 資料表:指定要讀取資料的 Oracle 資料庫中資料表的名稱。 從下拉式清單中選取資料表,或選取 [手動輸入] 以輸入結構描述和資料表名稱。

        顯示 [使用查詢 - 資料表] 的螢幕擷取畫面。

    • 如果選取 [查詢]

      • 查詢:指定自訂 SQL 查詢來讀取資料。 例如: SELECT * FROM MyTable

        當您啟用分割載入時,您必須攔截查詢中任何對應的內建分割區參數。 如需範例,請參閱從 Oracle 資料庫平行複製一節。

        顯示 [使用查詢 - 查詢] 的螢幕擷取畫面。

在 [進階] 下,您可以指定下列欄位:

  • 分割選項:指定用來從 Oracle 資料庫載入資料的資料分割選項。 啟用分割選項後 (即不是 [無]),從 Oracle 資料庫同時載入資料的平行處理程度,會由 [複製活動設定] 索引標籤中的 [複製平行處理程度] 控制。

    如果您選取 [無],則選擇不使用分割。

    如果您選取資料表的實體分割

    • 分割名稱:指定需要複製的實體分割清單。

      如果您使用查詢來取出來源資料,請在 WHERE 子句中加上 ?DfTabularPartitionName。 如需範例,請參閱從 Oracle 資料庫平行複製一節。

      顯示當您選取 [資料表的實體分割] 時組態的螢幕擷取畫面。

    如果您選取 [動態範圍]

    • 分割資料行名稱:指定整數類型來源資料行的名稱,供平行複製的範圍分割使用。 如果未指定,則會自動偵測資料表的主索引鍵作為分割資料行。

      如果您使用查詢來取出來源資料,請在 WHERE 子句中加上 ?DfRangePartitionColumnName。 如需範例,請參閱從 Oracle 資料庫平行複製一節。

    • 分割上限:指定要複製資料的分割資料行的最大值。

      如果您使用查詢來取出來源資料,請在 WHERE 子句中加上 ?DfRangePartitionUpbound。 如需範例,請參閱從 Oracle 資料庫平行複製一節中的「平行複製」。

    • 分割下限:指定要複製資料的分割資料行的最小值。

      如果您使用查詢來取出來源資料,請在 WHERE 子句中加上 ?DfRangePartitionLowbound。 如需範例,請參閱從 Oracle 資料庫平行複製一節中的「平行複製」。

      顯示您選取 [動態範圍] 時組態的螢幕擷取畫面。

  • 查詢逾時 (分鐘):指定查詢命令執行的逾時,預設值為 120 分鐘。 如果為此屬性設定參數,允許的值為時間範圍,例如 "02:00:00" (120 分鐘)。

  • 其他資料行:新增其他資料行以儲存來源檔案的相對路徑或靜態值。 後者支援運算式。

Destination

在複製活動的 [目的地] 索引標籤下,Oracle 資料庫支援下列屬性。

顯示 [目的地] 索引標籤的螢幕擷取畫面。

以下是必要的屬性:

  • 連線:從連線清單中選取 Oracle 資料庫連接。 如果不存在連線,請選取連線清單底部的 [更多],以建立新的 Oracle 資料庫連接。
  • 資料表:從下拉式清單選取資料庫中的資料表。 或檢查 [手動輸入] 以輸入結構描述和資料表名稱。

在 [進階] 下,您可以指定下列欄位:

  • 複製前指令碼:指定一個供複製活動在每次執行時,將資料寫入到 Oracle 資料庫前執行的 SQL 查詢。 您可以使用此屬性來清除預先載入的資料。
  • 寫入批次逾時:指定在逾時前等待批次插入作業完成的時間。允許的值為時間範圍。 範例是 00:30:00 (30 分鐘)。
  • 寫入批次大小:指定每個批次要插入 Oracle 資料庫資料表的資料列數目。 允許的值為整數 (資料列數目)。 預設值為 10,000。
  • 並行連線數上限:在活動執行期間建立至資料存放區的並行連線上限。 僅在想要限制並行連線時,才需要指定值。

對應

對於 [對應] 索引標籤組態,請參閱<在 [對應] 索引標籤下設定對應>。

設定

對於 [設定] 索引標籤組態,請參閱在 [設定] 索引標籤下設定其他設定

從 Oracle 資料庫平行複製

Oracle 資料庫連接器提供內建的資料分割,以從 Oracle 資料庫平行複製資料。 您可以在複製活動的 [來源] 索引標籤上找到資料分割選項。

當您啟用分割複本時,服務會平行查詢 Oracle 資料庫來源,以依分割區來載入資料。 平行程度由 [複製活動設定] 索引標籤中的 [複製平行處理程度] 設定所控制。例如,如果您將 [複製平行處理程度] 設定為四,服務會根據指定的分割選項和設定同時產生和執行四個查詢,而每個查詢都會從 Oracle 資料庫擷取部分資料。

建議您啟用平行複製與資料分割,特別是從 Oracle 資料庫載入大量資料時。 以下針對各種情節的建議設定。 將資料複製到以檔案為基礎的資料存放區時,建議分成多個檔案來寫入資料夾 (僅指定資料夾名稱),這樣效能會比寫入單一檔案更好。

案例 建議的設定
使用實體分割區從大型資料表完整載入。 分割選項:資料表的實體分割區。

在執行期間,服務會自動偵測實體分割區,並依分割區複製資料。
從大型資料表完整載入,不含實體分割區,同時在資料分割時包含整數資料行。 分割選項:動態範圍分割。
分割資料行:指定用來分割資料的資料行。 如果未指定,則會使用主索引鍵資料行。
使用自訂查詢載入大量資料,包含實體分割區。 分割選項:資料表的實體分割。
查詢SELECT * FROM <TABLENAME> PARTITION("?DfTabularPartitionName") WHERE <your_additional_where_clause>

分割區名稱:指定要從中複製資料的分割區名稱。 如果未指定,服務會自動偵測您在 Oracle 資料庫資料中指定的資料表上的實體分割。
在執行期間,服務會以實際的分割名稱取代 ?DfTabularPartitionName,並傳送至 Oracle 資料庫。
使用自訂查詢載入大量資料,不含實體分割區,同時包含整數資料行用於資料分割。 分割選項:動態範圍分割。
查詢SELECT * FROM <TABLENAME> WHERE ?DfRangePartitionColumnName <= ?DfRangePartitionUpbound AND ?DfRangePartitionColumnName >= ?DfRangePartitionLowbound AND <your_additional_where_clause>
分割資料行:指定用來分割資料的資料行。 您可以按照整數資料類型的資料行來分割。
分割上限分割下限:指定您是否想要篩選分割資料行,只取出下限範圍和上限範圍之間的資料。

在執行期間,服務會將 ?DfRangePartitionColumnName?DfRangePartitionUpbound?DfRangePartitionLowbound 取代為每個分割的實際資料行名稱和值範圍,並傳送至 Oracle 資料庫。
例如,如果分割資料行 "ID" 已設定下限 1 和上限 80,而平行複製設定為 4,則服務會分成 4 個分割區來取出資料。 識別碼的範圍分別為 [1,20]、[21, 40]、[41, 60] 和 [61, 80]。

提示

從非資料分割資料表複製資料時,您可以使用 [動態範圍] 資料分割選項,針對整數資料行進行分割。 如果您的來源資料沒有這類資料行類型,您可以在來源查詢中利用 ORA_HASH 函式來產生資料行,並將其當做資料分割資料行使用。

資料表摘要

下列各表包含有關 Oracle 資料庫中複製活動的詳細資訊。

來源資訊

名稱 描述 必要 JSON 指令碼屬性
[連接] 您與來源資料存放區的連線。 <您的 Oracle 資料庫連接> Yes connection
使用查詢 從 Oracle 資料庫讀取資料的方式。 套用 [資料表] 以從指定的資料表讀取資料,或套用 [查詢] 以使用 SQL 查詢讀取資料。 資料表
查詢
Yes /
適用於 [資料表]
結構描述名稱 結構描述的名稱。 <您的結構描述名稱> No schema
資料表名稱 資料表的名稱。 <您的資料表名稱> No table
針對 [查詢]
查詢 使用自訂 SQL 查詢來讀取資料。 例如 SELECT * FROM MyTable
當您啟用分割載入時,您必須攔截查詢中任何對應的內建分割區參數。 如需範例,請參閱從 Oracle 資料庫平行複製一節。
<SQL 查詢> No oracleReaderQuery
分割選項 指定用來從 Oracle 資料庫載入資料的資料分割選項。 (預設值)
資料表的實體分割
動態範圍
No /
針對 [資料表的實體分割]
分割名稱 需要複製的實體分割區清單。 如果您使用查詢來取出來源資料,請在 WHERE 子句中加上 ?DfTabularPartitionName <您的分割名稱> No partitionNames
針對 [動態範圍]
分割資料行名稱 指定整數類型來源資料行的名稱,供平行複製的範圍分割使用。 如果未指定,則會自動偵測資料表的主索引鍵作為分割資料行。
如果您使用查詢來取出來源資料,請在 WHERE 子句中加上 ?DfRangePartitionColumnName。 如需範例,請參閱從 Oracle 資料庫平行複製一節。
<您的分割資料行名稱> No partitionColumnName
分割上限 指定要複製資料的分割資料行的最大值。如果您使用查詢來擷取來源資料,請在 WHERE 子句中掛勾 ?DfRangePartitionUpbound。 如需範例,請參閱從 Oracle 資料庫平行複製一節中的「平行複製」。 <您的分割上限> No partitionUpperBound
分割下限 指定要複製資料的分割資料行的最小值。如果您使用查詢來擷取來源資料,請在 WHERE 子句中掛勾 ?DfRangePartitionLowbound。 如需範例,請參閱從 Oracle 資料庫平行複製一節中的「平行複製」。 <您的分割下限> No partitionLowerBound
查詢逾時 查詢命令執行的逾時,預設值為 120 分鐘。 時間範圍 No queryTimeout
其他資料行 新增其他資料行來儲存來源檔案的相對路徑或靜態值。 後者支援運算式。 • 名稱
• 值
No additionalColumns:
• 名稱
• 值

目的地資訊

名稱 描述 必要 JSON 指令碼屬性
[連接] 您與目的地資料存放區的連線。 <您的 Oracle 資料庫連接> Yes connection
Table 您的目的地資料表。 <您的目的地資料表的名稱> Yes /
結構描述名稱 結構描述的名稱。 <您的結構描述名稱> Yes schema
資料表名稱 資料表的名稱。 <您的資料表名稱> Yes table
複製前指令碼 指定一個供複製活動在每次執行時,將資料寫入到 Oracle 資料庫前執行的 SQL 查詢。 您可以使用此屬性來清除預先載入的資料。 <複製前指令碼> No preCopyScript
寫入批次逾時 在逾時前等待批次插入作業完成的時間。 時間範圍 No writeBatchTimeout
寫入批次大小 針對每個批次要插入 SQL 資料表中的資料列數。 整數
(預設值為 10,000)
No writeBatchSize
並行連線數上限 在活動執行期間建立至資料存放區的同時連線上限。 僅在想要限制並行連線時,才需要指定值。 <並行連線數上限> No maxConcurrentConnections