管理管線

建立並測試管線之後,您可以透過啟動、停止或刪除管線來控制管線。您也可以重設管線。

啟動管道

建立管線之後,就可以開始管線。

啟動管線後,管線會在排定的工作中持續執行。管線的排定工作重複 (預設為每 15 分鐘一次,或根據您使用 interval 屬性設定的間隔)。

  1. 啟動管線。
    BEGIN
      DBMS_CLOUD_PIPELINE.START_PIPELINE(
          pipeline_name => 'EMPLOYEE_PIPELINE'
      );
    END;
    /

    依照預設,管線工作會在管線啟動後立即開始。若要在稍後啟動管線工作,請使用 start_date 參數指定有效的未來日期或時戳。

    如需詳細資訊,請參閱START_PIPELINE 程序

  2. 檢查管線是否已啟動。

    舉例而言:

    
    SELECT pipeline_name, status from USER_CLOUD_PIPELINES
       WHERE pipeline_name = 'EMPLOYEE_PIPELINE';
    
    PIPELINE_NAME            STATUS  
    ------------------------ ------- 
    EMPLOYEE_PIPELINE        STARTED

停止進行中銷售商機

使用 STOP_PIPELINE 來停止管線。管線停止時,不會為管線排定任何未來的工作。

依照預設,目前執行中的工作會在您停止管線時完成。將 force 參數設為 TRUE,即可終止任何執行中的工作並立即停止管線。

  1. 停止業務進程。
    BEGIN
      DBMS_CLOUD_PIPELINE.STOP_PIPELINE(
          pipeline_name => 'EMPLOYEE_PIPELINE'
      );
    END;
    /

    如需詳細資訊,請參閱STOP_PIPELINE 程序

  2. 檢查管線是否已停止。
    
    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,以終止任何執行中的工作並立即刪除管線

  1. 刪除管線。
    BEGIN
      DBMS_CLOUD_PIPELINE.DROP_PIPELINE(
          pipeline_name => 'EMPLOYEE_PIPELINE'
      );
    END;
    /
  2. 檢查管線是否已刪除。
    SELECT pipeline_name, status from USER_CLOUD_PIPELINES
       WHERE pipeline_name = 'EMPLOYEE_PIPELINE';
    
    No rows selected

如需詳細資訊,請參閱DROP_PIPELINE 程序

重設管線

使用重設管線作業將管線的記錄清除至初始狀態。

附註:

您可以選擇使用重設管線來永久清除與載入管線關聯之資料庫表格中的資料,或移除匯出管線之物件存放區中的檔案。在管線開發期間測試管線時,通常會使用此選項。

重設管線的運作方式如下:

  • 載入管線:針對負載管線,重設管線會清除管線所載入之檔案的記錄。當您在重設載入管線之後呼叫 START_PIPELINERUN_PIPELINE_ONCE 時,管線會重複資料載入,並包括物件存放區位置中的所有檔案。

    purge_data 設為 TRUE 時,程序會截斷資料庫表格中的資料。

  • 匯出管線:對於匯出管線,重設管線會清除資料庫表格中上次追蹤的資料。當您在重設匯出管線之後呼叫 START_PIPELINERUN_PIPELINE_ONCE 時,管線會重複從表格或查詢匯出資料。

    purge_data 設為 TRUE 時,程序會刪除物件存放區位置中以 location 屬性指定的現有檔案。

若要重設管線,請執行下列動作:

  1. 停止要重設的管線。

    資料管線必須為已停止狀態才能重設。如需詳細資訊,請參閱STOP_PIPELINE 程序

  2. 重設管線。
    BEGIN
         DBMS_CLOUD_PIPELINE.RESET_PIPELINE(
            pipeline_name => 'EMPLOYEE_PIPELINE',
            purge_data => TRUE);
    END;
    /

    若要清除資料庫表格中的資料、用於載入管線,或清除匯出管線之物件存放區中的檔案,請僅使用值為 TRUEpurge_data 參數。在管線開發期間測試管線時,通常會使用此選項。

    如需詳細資訊,請參閱RESET_PIPELINE 程序

監控及疑難排解管線

所有已建立的管線都會記錄在 DBMS_CLOUD_PIPELINE 檢視中。

檢視業務進程狀態資訊

使用 USER_CLOUD_PIPELINESDBA_CLOUD_PIPELINES 檢視檢查管線狀態,並取得其他管線資訊。例如,在 pipeline_name 上具有 WHERE 子句述詞的下列 SELECT 敘述句顯示 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_ATTRIBUTESDBA_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_HISTORYDBA_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_PIPELINESUSER_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_TIMEEND_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_OPERATIONSDBA_LOAD_OPERATIONS 中顯示的 ID。這些檢視中的 ID 值會對應至 USER_CLOUD_PIPELINESDBA_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 資料欄 (使用 OPERATION_ID 值) 上使用 WHERE 子句述詞查詢 USER_LOAD_OPERATIONSDBA_LOAD_OPERATIONS

舉例而言:

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

此查詢會顯示 IDTYPELOGFILE_TABLEBADFILE_TABLE (如果存在的話),以及 STATUS_TABLE。您可以檢視這些表格以瞭解其他管線載入資訊。

管線狀態表格詳細資訊

資料類型 描述
ID NUMBER 指定給管線的唯一編號。
NAME VARCHAR2(4000) 管線的名稱。
BYTES NUMBER 位元組
CHECKSUM VARCHAR2(128) 總和檢驗
LAST_MODIFIED TIMESTAMP(6) WITH TIME ZONE 管線的上次修改時間。
STATUS VARCHAR2(30) STATUS 值為下列其中一種:
  • COMPLETED:已順利完成檔案作業。
  • FAILED:檔案作業失敗,可能會嘗試重試兩次。
  • PENDING:檔案作業尚未啟動。
  • RUNNING:檔案作業目前正在進行中。
  • SKIPPED:已略過檔案作業。
ERROR_CODE NUMBER 錯誤代碼
ERROR_MESSAGE VARCHAR2(4000) 錯誤訊息
START_TIME TIMESTAMP(6) WITH TIME ZONE 管線的開始時間。
END_TIME TIMESTAMP(6) WITH TIME ZONE 管線的結束時間。
SID NUMBER

階段作業 SIDSERIAL# 代表執行管線載入作業的工作階段作業。

SERIAL# NUMBER

階段作業 SIDSERIAL# 代表執行管線載入作業的工作階段作業。

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 資料欄 (使用 OPERATION_ID 值) 上使用 WHERE 子句述詞查詢 USER_LOAD_OPERATIONSDBA_LOAD_OPERATIONS

舉例而言:

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

此查詢會顯示 IDTYPELOGFILE_TABLEBADFILE_TABLE (如果存在的話),以及 STATUS_TABLE。您可以檢視這些表格以瞭解其他管線載入資訊。

檢視管線日誌檔表格,查看管線之載入作業的完整日誌。

舉例而言:

SELECT * FROM PIPELINE$9$41_LOG;

檢視管線錯誤檔案表格,查看輸入格式記錄的錯誤詳細資訊。錯誤的檔案表格會顯示載入期間報告錯誤之列的資訊。視日誌檔表格中顯示的錯誤以及管線之錯誤檔案表格中顯示的資料列而定,您可以修改管線 format 屬性選項,或修改正在載入之檔案中的資料來更正錯誤。

舉例而言:

SELECT * FROM PIPELINE$9$41_BAD;

如需詳細資訊,請參閱監督及疑難排解資料載入