#DBMS_TASK
DBMS_TASK高级包提供了一组内置的存储过程,用于yasboot工具创建和管理分布式任务,目前仅支持扩缩容相关任务。不建议用户直接调用该高级包,避免造成不可控影响。如需直接调用DBMS_TASK高级包,必须直连主MN节点操作,否则报错。
该高级包仅适用于分布式部署。
# ADD
DBMS_TASK.ADD(
TASK_ID OUT BIGINT,
TYPE IN VARCHAR(16),
DATA IN JSON,
)
该存储过程用于新增一个分布式任务,创建成功后可以在TASK$系统表中查询任务相关信息。
参数 | 用途 |
---|---|
TASK_ID | 任务创建时自动生成的任务ID,全局唯一 |
TYPE | 创建的任务类型,可选值包括'ADD_GROUP'、'REMOVE_GROUP','SCALE_OUT'等 |
DATA | 创建任务需要的参数 |
示例(分布式部署)
DECLARE
task_id BIGINT;
BEGIN
DBMS_TASK.ADD(
task_id,
'SCALE_OUT',
'{"GROUP": 5, "NODES": 5, "CONFIG": {"CONFIG1": "test"}}'
);
# REMOVE
DBMS_TASK.REMOVE(
TASK_ID IN BIGINT,
)
该存储过程用于删除一个非执行状态的分布式任务,可通过task$系统表记录的任务信息确认是否删除成功。
参数 | 用途 |
---|---|
TASK_ID | 目标任务的ID |
示例(分布式部署)
EXEC DBMS_TASK.REMOVE(1234);
# START
DBMS_TASK.START(
TASK_ID IN BIGINT,
)
该存储过程用于启动一个状态为INIT的根任务,不能直接启动某个子任务。启动后,任务状态将变为START。
参数 | 用途 |
---|---|
TASK_ID | 目标任务的ID |
示例(分布式部署)
EXEC DBMS_TASK.START(1234);
# STOP
DBMS_TASK.STOP(
TASK_ID IN BIGINT,
)
该存储过程用于停止一个状态为START的根任务,不能直接停止某个子任务。
参数 | 用途 |
---|---|
TASK_ID | 目标任务的ID |
示例(分布式部署)
EXEC DBMS_TASK.STOP(1234);
# ROLLBACK
DBMS_TASK.ROLLBACK(
TASK_ID IN BIGINT,
)
该存储过程用于回滚一个状态为FAILED的根任务,不能直接回滚某个子任务。
参数 | 用途 |
---|---|
TASK_ID | 目标任务的ID |
示例(分布式部署)
EXEC DBMS_TASK.ROLLBACK(1234);