管理管道

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

启动管道

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

启动管道时,管道将在调度的作业中连续运行。默认情况下,管道的调度作业每 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

重置管道

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

注意:

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

重置管道的运行方式如下:

  • 加载管道:对于加载管道,重置管道将清除管道正在加载的文件的记录。重置加载管道后调用 START_PIPELINERUN_PIPELINE_ONCE 时,管道会重复数据加载并包括对象存储位置中存在的所有文件。

    purge_data 设置为 TRUE 时,该过程将截断数据库表中的数据。

  • 导出管道:对于导出管道,重置管道将清除数据库表中最后跟踪的数据。重置导出管道后调用 START_PIPELINERUN_PIPELINE_ONCE 时,管道将重复从表或查询导出数据。

    purge_data 设置为 TRUE 时,该过程将删除使用 location 属性指定的对象存储位置中的现有文件。

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

  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 视图来监视管道属性。查询这些视图以查看管道属性信息。

例如:

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

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

  • 如果对特定文件的操作失败,则相关错误号和错误消息将记录在状态表中。

  • 对于已完成的管道操作,可以使用报告的 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 列上使用 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