在複製活動中設定 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 |