管理管線
建立並測試管線之後,您可以啟動、停止或刪除管線來控制管線。您也可以重設管線。
開始業務進程
建立管線之後,您可以啟動管線。
管線啟動後,管線會在排定的工作中持續執行。管線的排定工作預設每 15 分鐘或您以 interval 屬性設定的間隔重複一次。
-
啟動業務進程。
BEGIN DBMS_CLOUD_PIPELINE.START_PIPELINE( pipeline_name => 'EMPLOYEE_PIPELINE' ); END; /依照預設,管線工作會在管線啟動後立即開始。若要在稍後啟動管線工作,請使用
start_date參數指定有效的未來日期或時戳。請參閱 START_PIPELINE 程序以瞭解詳細資訊。
-
確認管線已啟動。
舉例而言:
SELECT pipeline_name, status from USER_CLOUD_PIPELINES WHERE pipeline_name = 'EMPLOYEE_PIPELINE';PIPELINE_NAME STATUS ------------------------ ------- EMPLOYEE_PIPELINE STARTED
停止業務進程
使用 STOP_PIPELINE 來停止管線。停止管線時,不會排定管線的未來工作。
依照預設,當您停止管線時,目前執行中的工作會完成。將 force 參數設為 TRUE,即可終止所有執行中的工作並立即停止管線。
-
停止管線。
BEGIN DBMS_CLOUD_PIPELINE.STOP_PIPELINE( pipeline_name => 'EMPLOYEE_PIPELINE' ); END; /如需詳細資訊,請參閱 STOP_PIPELINE 程序。
-
檢查管線是否已停止。
SELECT pipeline_name, status from USER_CLOUD_PIPELINES WHERE pipeline_name = 'EMPLOYEE_PIPELINE';PIPELINE_NAME STATUS ------------------------ ------- EMPLOYEE_PIPELINE STOPPED
如需詳細資訊,請參閱 STOP_PIPELINE 程序。
刪除管線
DROP_PIPELINE 程序會刪除現有的管線。
如果管線已經啟動,則必須先停止管線,才能刪除管線。如需詳細資訊,請參閱 STOP_PIPELINE 程序。
若要刪除已啟動的管線,請將 force 參數設為 TRUE,以終止任何執行中的工作並立即刪除管線
-
刪除管線。
BEGIN DBMS_CLOUD_PIPELINE.DROP_PIPELINE( pipeline_name => 'EMPLOYEE_PIPELINE' ); END; / -
確認管線已刪除。
SELECT pipeline_name, status from USER_CLOUD_PIPELINES WHERE pipeline_name = 'EMPLOYEE_PIPELINE';No rows selected
請參閱 DROP_PIPELINE 程序瞭解詳細資訊。
重設管線
使用重設管線作業,將管線的記錄清除至初始狀態。
注意:您可以選擇使用重設管線來永久清除與載入管線關聯之資料庫表格中的資料,或移除匯出管線之物件存放區中的檔案。通常,當您在進行管線開發期間測試管線時,會使用此選項。
重設管線運作方式如下:
-
載入管線:對於載入管線,重設管線會清除管線所載入之檔案的記錄。在重設載入管線後呼叫
START_PIPELINE或RUN_PIPELINE_ONCE時,管線會重複資料載入,並包含物件存放區位置中的所有檔案。當
purge_data設為TRUE時,程序會截斷資料庫表格中的資料。 -
匯出管線:若為匯出管線,重設管線會清除資料庫表格中上次追蹤的資料。當您在重設匯出管線後呼叫
START_PIPELINE或RUN_PIPELINE_ONCE時,管線會重複從表格或查詢匯出資料。當
purge_data設為TRUE時,程序會刪除使用location屬性指定之物件存放區位置中的現有檔案。
重設管線:
-
停止您要重設的管線。
資料管線必須處於停止狀態才能重設。如需詳細資訊,請參閱 STOP_PIPELINE 程序。
-
重設管線。
BEGIN DBMS_CLOUD_PIPELINE.RESET_PIPELINE( pipeline_name => 'EMPLOYEE_PIPELINE', purge_data => TRUE); END; /若要清除資料庫表格中的資料、載入管線的資料,或清除匯出管線物件存放區中的檔案,請只使用值為
TRUE的purge_data參數。通常,當您在進行管線開發期間測試管線時,會使用此選項。請參閱 RESET_PIPELINE 程序以瞭解詳細資訊。
監控及疑難排解管線
所有建立的管線都會記錄在 DBMS_CLOUD_PIPELINE 檢視中。
檢視業務進程狀態資訊
使用 USER_CLOUD_PIPELINES 或 DBA_CLOUD_PIPELINES 檢視來檢查管線狀態,並取得其他管線資訊。例如,下列 SELECT 敘述句在 pipeline_name 上具有 WHERE 子句述詞,顯示 MY_TREE_DATA 為載入管線,且管線已啟動:
SELECT pipeline_name, pipeline_type, status
FROM USER_CLOUD_PIPELINES
WHERE pipeline_name = 'MY_TREE_DATA';
PIPELINE_NAME PIPELINE_TYPE STATUS
------------- ------------- -------
MY_TREE_DATA LOAD STARTED
請參閱 DBMS_CLOUD_PIPELINE 視觀表以瞭解詳細資訊。
檢視業務進程屬性
您可以查詢 USER_CLOUD_PIPELINE_ATTRIBUTES 或 DBA_CLOUD_PIPELINE_ATTRIBUTES 視觀表來監督管線屬性。查詢這些檢視以查看業務進程屬性資訊。
舉例而言:
SELECT pipeline_name, attribute_name, attribute_value FROM user_cloud_pipeline_attributes
WHERE pipeline_name = 'MY_TREE_DATA';
PIPELINE_NAME ATTRIBUTE_NAME ATTRIBUTE_VALUE
------------- --------------- ---------------------------------------------------------------------------------
MY_TREE_DATA credential_name DEF_CRED_OBJ_STORE
MY_TREE_DATA format {"type": "csv"}
MY_TREE_DATA interval 20
MY_TREE_DATA location https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace/b/treetypes/o/
MY_TREE_DATA priority high
MY_TREE_DATA table_name TREES
請參閱 DBMS_CLOUD_PIPELINE 視觀表以瞭解詳細資訊。
檢視業務進程歷史記錄
USER_CLOUD_PIPELINE_HISTORY 和 DBA_CLOUD_PIPELINE_HISTORY 視觀表會顯示執行中工作的狀態。您可以使用管線歷史記錄檢視,來監督管線的狀況,以及偵測執行中管線的失敗。
舉例而言:
SELECT pipeline_id, pipeline_name, status, error_message FROM user_cloud_pipeline_history
WHERE pipeline_name = 'MY_TREE_DATA';
PIPELINE_ID PIPELINE_NAME STATUS ERROR_MESSAGE
----------- ------------- --------- -------------
7 MY_TREE_DATA SUCCEEDED
請參閱 DBMS_CLOUD_PIPELINE 視觀表以瞭解詳細資訊。
管線狀態表格:載入管線的其他監督
管線狀態表格會顯示每個檔案名稱及其載入管線的狀態。DBA_CLOUD_PIPELINES 和 USER_CLOUD_PIPELINES 中的 STATUS_TABLE 資料欄會顯示狀態表格名稱。
例如,在 pipeline_name 上具有 WHERE 子句述詞的下列 SELECT 敘述句會顯示管線的狀態表格名稱:
SELECT pipeline_name, status_table FROM user_cloud_pipelines
WHERE pipeline_name = 'MY_TREE_DATA';
PIPELINE_NAME STATUS_TABLE
------------- --------------------
MY_TREE_DATA PIPELINE$9$41_STATUS
檢視狀態表格以查看管線的資訊,包括:
-
如果特定檔案上的作業失敗,相關錯誤編號與錯誤訊息會記錄在狀態表格中。
-
對於已完成的管線作業,可以使用報告的
START_TIME和END_TIME來計算每個作業所需的時間。
例如,下列顯示兩個檔案的載入作業失敗,一個已完成:
SELECT id, name, status, error_code, error_message, sid FROM PIPELINE$9$41_STATUS;
ID NAME STATUS ERROR_CODE ERROR_MESSAGE SID
-- ---------- --------- ---------- -------------------------------- -----
1 trees1.txt FAILED 30653 ORA-30653: reject limit reached 18070
2 trees2.txt FAILED 30653 ORA-30653: reject limit reached 18070
3 trees3.txt COMPLETED 18070
用於載入資料的管線,其中 pipeline_type 是 'LOAD',會保留 USER_LOAD_OPERATIONS 和 DBA_LOAD_OPERATIONS 中顯示的 ID。這些檢視中的 ID 值會對應至 USER_CLOUD_PIPELINES 和 DBA_CLOUD_PIPELINES 中的管線 OPERATION_ID。
若要取得載入管線的詳細資訊,請查詢管線的 OPERATION_ID:
SELECT PIPELINE_NAME, OPERATION_ID FROM USER_CLOUD_PIPELINES
WHERE PIPELINE_NAME = 'MY_TREE_DATA';
PIPELINE_NAME OPERATION_ID
------------- ------------
MY_TREE_DATA 41
接著,在 ID 資料欄上使用 WHERE 子句述詞查詢 USER_LOAD_OPERATIONS 或 DBA_LOAD_OPERATIONS (使用 OPERATION_ID 值)。
舉例而言:
SELECT ID, TYPE, LOGFILE_TABLE, BADFILE_TABLE, STATUS_TABLE FROM USER_LOAD_OPERATIONS
WHERE ID = 41;
ID TYPE LOGFILE_TABLE BADFILE_TABLE STATUS_TABLE
-- -------- ----------------- ----------------- --------------------
41 PIPELINE PIPELINE$9$41_LOG PIPELINE$9$41_BAD PIPELINE$9$41_STATUS
此查詢會顯示 ID、TYPE、LOGFILE_TABLE、BADFILE_TABLE (若有的話),以及 STATUS_TABLE。您可以檢視這些表格以瞭解其他管線載入資訊。
業務進程狀態表格明細
| 欄 | 資料類型 | 描述 |
|---|---|---|
ID |
NUMBER |
指定給管線的唯一編號。 |
NAME |
VARCHAR2(4000) |
業務進程的名稱。 |
BYTES |
NUMBER |
位元組 |
CHECKSUM |
VARCHAR2(128) |
總和檢驗 |
LAST_MODIFIED |
TIMESTAMP(6) WITH TIME ZONE |
管線的上次修改時間。 |
STATUS |
VARCHAR2(30) |
STATUS 值為下列其中一項:
|
ERROR_CODE |
NUMBER |
錯誤代碼 |
ERROR_MESSAGE |
VARCHAR2(4000) |
錯誤訊息 |
START_TIME |
TIMESTAMP(6) WITH TIME ZONE |
管線的開始時間。 |
END_TIME |
TIMESTAMP(6) WITH TIME ZONE |
管道的結束時間。 |
SID |
NUMBER |
階段作業 SID 和 SERIAL# 指示執行管線載入作業的工作階段作業。 |
SERIAL# |
NUMBER |
階段作業 SID 和 SERIAL# 指示執行管線載入作業的工作階段作業。 |
ROWS_LOADED |
NUMBER |
已載入的資料列數目。 |
OPERATION_ID |
NUMBER |
保留供日後使用。 |
管線日誌檔和錯誤的檔案表格
若要取得載入管線的日誌檔和錯誤的檔案名稱,請查詢管線的 OPERATION_ID。舉例而言:
SELECT PIPELINE_NAME, OPERATION_ID FROM USER_CLOUD_PIPELINES
WHERE PIPELINE_NAME = 'MY_TREE_DATA';
PIPELINE_NAME OPERATION_ID
------------- ------------
MY_TREE_DATA 41
接著,在 ID 資料欄上使用 WHERE 子句述詞查詢 USER_LOAD_OPERATIONS 或 DBA_LOAD_OPERATIONS (使用 OPERATION_ID 值)。
舉例而言:
SELECT ID, TYPE, LOGFILE_TABLE, BADFILE_TABLE, STATUS_TABLE FROM USER_LOAD_OPERATIONS
WHERE ID = 41;
ID TYPE LOGFILE_TABLE BADFILE_TABLE STATUS_TABLE
-- -------- ----------------- ----------------- --------------------
41 PIPELINE PIPELINE$9$41_LOG PIPELINE$9$41_BAD PIPELINE$9$41_STATUS
此查詢會顯示 ID、TYPE、LOGFILE_TABLE、BADFILE_TABLE (若有的話),以及 STATUS_TABLE。您可以檢視這些表格以瞭解其他管線載入資訊。
檢視管線日誌檔表格,查看管線之載入作業的完整日誌。
舉例而言:
SELECT * FROM PIPELINE$9$41_LOG;
檢視管線錯誤檔案表格,查看輸入格式記錄的錯誤詳細資訊。錯誤的檔案表格會顯示載入期間報告錯誤之列的資訊。視日誌檔表格中顯示的錯誤,以及管線之錯誤檔案表格中顯示的資料列而定,您可以修改管線 format 屬性選項,或修改目前載入之檔案中的資料來更正錯誤。
舉例而言:
SELECT * FROM PIPELINE$9$41_BAD;
請參閱監督及疑難排解資料載入以瞭解詳細資訊。