管理管道

创建和测试管道后,您可以通过启动、停止或删除管道来控制管道。您还可以重置管道。

启动管道

创建管道后,您可以启动管道。

启动管道时,管道在调度的作业中持续运行。管道的调度作业默认每 15 分钟重复一次,或者按您使用 interval 属性设置的间隔重复。

  1. 启动管道。

     BEGIN
       DBMS_CLOUD_PIPELINE.START_PIPELINE(
         pipeline_name => 'EMPLOYEE_PIPELINE'
       );
     END;
     /
    

    默认情况下,管道作业在管道启动后立即开始。要稍后启动管道作业,请使用 start_date 参数指定有效的将来日期或时间戳。

    有关更多信息,请参见 START_PIPELINE Procedure

  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 Procedure

  2. 验证管道是否已停止。

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

有关更多信息,请参见 STOP_PIPELINE Procedure

删除管道

过程 DROP_PIPELINE 删除现有管道。

如果管道已启动,则必须先停止管道,然后才能删除管道。有关更多信息,请参见 STOP_PIPELINE Procedure

要删除已启动的管道,请将 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 Procedure

重置管道

使用重置管道操作可将管道记录清除到初始状态。

注:您可以根据需要使用重置管道来清除与加载管道关联的数据库表中的数据,或者删除导出管道的对象存储中的文件。通常在管道开发期间测试管道时使用此选项。

重置管道的工作方式如下:

要重置管道,请执行以下操作:

  1. 停止要重置的管道。

    数据管道必须处于已停止状态才能重置。有关更多信息,请参见 STOP_PIPELINE Procedure

  2. 重置管道。

     BEGIN
       DBMS_CLOUD_PIPELINE.RESET_PIPELINE(
         pipeline_name => 'EMPLOYEE_PIPELINE',
         purge_data => TRUE);
     END;
     /
    

    仅当要清除数据库表中的数据、加载管道的数据或清除导出管道的对象存储中的文件时,才使用值为 TRUEpurge_data 参数。通常在管道开发期间测试管道时使用此选项。

    有关更多信息,请参见 RESET_PIPELINE Procedure

管道监视和故障排除

创建的所有管道都记录在 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 Views

查看管道属性

可以通过查询 USER_CLOUD_PIPELINE_ATTRIBUTESDBA_CLOUD_PIPELINE_ATTRIBUTES 视图来监视管道属性。查询这些视图以查看 Pipeline 属性信息。

例如:

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 Views

查看管道历史记录

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 Views

管道状态表:加载管道的附加监视

管道状态表显示加载管道的每个文件名及其状态。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

查看状态表以查看有关管道的信息,包括以下内容:

例如,以下示例显示两个文件的加载操作失败,一个文件已完成:

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 列上查询带有 WHERE 子句谓词的 USER_LOAD_OPERATIONSDBA_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

此查询显示 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 列上查询带有 WHERE 子句谓词的 USER_LOAD_OPERATIONSDBA_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

此查询显示 IDTYPELOGFILE_TABLEBADFILE_TABLE(如果存在)和 STATUS_TABLE。您可以查看这些表以了解其他管道加载信息。

查看管道日志文件表以查看管道加载操作的完整日志。

例如:

SELECT * FROM PIPELINE$9$41_LOG;

查看管道错误文件表以查看有错误的输入格式记录的详细信息。错误的文件表显示加载期间报告错误的行的信息。根据日志文件表中显示的错误以及管道错误文件表中显示的行,您可能可以通过修改管道 format 属性选项或修改要加载的文件中的数据来更正错误。

例如:

SELECT * FROM PIPELINE$9$41_BAD;

有关更多信息,请参见 Monitor and Troubleshoot Data Loading