パイプラインの制御(パイプラインの起動、停止、削除またはリセット)

パイプラインを作成およびテストした後は、そのパイプラインを起動、停止または削除して、そのパイプラインを制御します。パイプラインをリセットすることもできます。

パイプラインの開始

パイプラインを作成したら、パイプラインを開始できます。

パイプラインが開始されると、パイプラインはスケジュール済ジョブで継続的に実行されます。パイプラインのスケジュール済ジョブは、デフォルトで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_PIPELINEまたはRUN_PIPELINE_ONCEをコールすると、パイプラインはデータ・ロードを繰り返し、オブジェクト・ストアの場所に存在するすべてのファイルを含めます。

    purge_dataTRUEに設定されている場合、プロシージャはデータベース表のデータを切り捨てます。

  • エクスポート・パイプライン: エクスポート・パイプラインの場合、パイプラインをリセットすると、データベース表内の最後の追跡データがクリアされます。エクスポート・パイプラインのリセット後にSTART_PIPELINEまたはRUN_PIPELINE_ONCEをコールすると、パイプラインは表または問合せからのデータのエクスポートを繰り返します。

    purge_dataTRUEに設定すると、location属性で指定されたオブジェクト・ストアの場所にある既存のファイルが削除されます。

パイプラインをリセットするには:

  1. リセットするパイプラインを停止します。

    データ・パイプラインをリセットするには、停止状態である必要があります。詳細は、STOP_PIPELINEプロシージャを参照してください。

  2. パイプラインをリセットします。
    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ビューを使用して他のパイプライン情報を取得します。たとえば、pipeline_nameWHERE句述語を含む次の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_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_PIPELINESSTATUS_TABLE列には、ステータス表名が表示されます。

たとえば、pipeline_nameWHERE句述語を含む次の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を使用して計算できます。

たとえば、次の例は、2つのファイルのロード操作が失敗し、1つが完了したことを示しています。

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

次に、(OPERATION_ID値を使用して)ID列でWHERE句述語を使用してUSER_LOAD_OPERATIONSまたはDBA_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が表示されます。これらの表を表示して、追加のパイプライン・ロード情報を確認できます。

パイプライン・ステータス表詳細

Datatype 説明
ID NUMBER パイプラインに割り当てられる一意の番号。
NAME VARCHAR2(4000) パイプラインの名前。
BYTES NUMBER Bytes
CHECKSUM VARCHAR2(128) チェックサム
LAST_MODIFIED TIMESTAMP(6) WITH TIME ZONE パイプラインの最終変更時間。
STATUS VARCHAR2(30) STATUS値は、次のいずれかです。
  • COMPLETED: ファイル操作が正常に完了しました。
  • FAILED: ファイル操作に失敗しました。再試行を2回試行できます。
  • 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

セッション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

次に、(OPERATION_ID値を使用して)ID列でWHERE句述語を使用してUSER_LOAD_OPERATIONSまたはDBA_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;

詳細は、データ・ロードのモニターおよびトラブルシューティングを参照してください。