管理管道
创建和测试管道后,您可以通过启动、停止或删除管道来控制管道。您还可以重置管道。
启动管道
创建管道后,您可以启动管道。
启动管道时,管道在调度的作业中持续运行。管道的调度作业默认每 15 分钟重复一次,或者按您使用 interval 属性设置的间隔重复。
-
启动管道。
BEGIN DBMS_CLOUD_PIPELINE.START_PIPELINE( pipeline_name => 'EMPLOYEE_PIPELINE' ); END; /默认情况下,管道作业在管道启动后立即开始。要稍后启动管道作业,请使用
start_date参数指定有效的将来日期或时间戳。有关更多信息,请参见 START_PIPELINE Procedure 。
-
验证管道是否已启动。
例如:
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 Procedure 。
-
验证管道是否已停止。
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 以终止所有正在运行的作业并立即删除管道
-
删除管道。
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 Procedure 。
重置管道
使用重置管道操作可将管道记录清除到初始状态。
注:您可以根据需要使用重置管道来清除与加载管道关联的数据库表中的数据,或者删除导出管道的对象存储中的文件。通常在管道开发期间测试管道时使用此选项。
重置管道的工作方式如下:
-
加载管道:对于加载管道,重置管道将清除管道加载的文件的记录。重置加载管道后调用
START_PIPELINE或RUN_PIPELINE_ONCE时,管道将重复数据加载,并包括对象存储位置中存在的所有文件。当
purge_data设置为TRUE时,该过程会截断数据库表中的数据。 -
导出管道:对于导出管道,重置管道将清除数据库表中上次跟踪的数据。在重置导出管道后调用
START_PIPELINE或RUN_PIPELINE_ONCE时,管道会重复从表或查询导出数据。当
purge_data设置为TRUE时,该过程将删除使用location属性指定的对象存储位置中的现有文件。
要重置管道,请执行以下操作:
-
停止要重置的管道。
数据管道必须处于已停止状态才能重置。有关更多信息,请参见 STOP_PIPELINE Procedure 。
-
重置管道。
BEGIN DBMS_CLOUD_PIPELINE.RESET_PIPELINE( pipeline_name => 'EMPLOYEE_PIPELINE', purge_data => TRUE); END; /仅当要清除数据库表中的数据、加载管道的数据或清除导出管道的对象存储中的文件时,才使用值为
TRUE的purge_data参数。通常在管道开发期间测试管道时使用此选项。有关更多信息,请参见 RESET_PIPELINE Procedure 。
管道监视和故障排除
创建的所有管道都记录在 DBMS_CLOUD_PIPELINE 视图中。
查看管道状态信息
使用 USER_CLOUD_PIPELINES 或 DBA_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_ATTRIBUTES 或 DBA_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_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 Views 。
管道状态表:加载管道的附加监视
管道状态表显示加载管道的每个文件名及其状态。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;
有关更多信息,请参见 Monitor and Troubleshoot Data Loading 。