相信使用过图形化客户端 MANAGER 管理工具来创建作业管理对于新手来说是相当方便,但是也不排除一些情况下无法使用图形化界面去操作,那就需要通过系统过程来实现了。
首先创建作业环境
要进行作业管理,需要先创建作业环境,即创建一些系统表来存储作业相关的对象、历
史记录等信息。用户可以通过调用系统过程 SP_INIT_JOB_SYS(1)来创建这些表。这些表被建在
SYSJOB 模式下。SP_INIT_JOB_SYS(1)还会创建一张系统表 SYSJOBHISTORIES,用以兼容 DM8 之前的版本。
创建 SYSJOB 模式及系统表的语句。
SQL> SP_INIT_JOB_SYS(1);
DMSQL 过程已成功完成
已用时间: 163.034(毫秒). 执行号:55204.
删除 SYSJOB 模式及系统表的语句。
SQL> SP_INIT_JOB_SYS(0);
DMSQL 过程已成功完成
已用时间: 77.631(毫秒). 执行号:55205.
在数据库中创建了前述作业管理表后,就可以进行作业的配置了。由于在创建一个作业
时必须要指定操作员,所以需要创建一个操作员
SP_CREATE_OPERATOR (
OPR_NAME VARCHAR(128),
ENABLED INT,
EMAILADDR VARCHAR(128),
NETSEND_IP VARCHAR(128)
)
修改语法则是如下
SP_ALTER_OPERATOR (
OPR_NAME VARCHAR(128),
ENABLED INT,
EMAILADDR VARCHAR(128),
NETSEND_IP VARCHAR(128)
)
删除语法如下
SP_DROP_OPERATOR (
OPR_NAME VARCHAR(128)
)
举例
SQL> SP_CREATE_OPERATOR('test', 1, 'tes@test.com', '192.168.126.211');
DMSQL 过程已成功完成
已用时间: 2.550(毫秒). 执行号:55206.
SQL> SP_DROP_OPERATOR('test');
DMSQL 过程已成功完成
已用时间: 3.706(毫秒). 执行号:55207.
创建作业需要使用的系统过程 SP_CREATE_JOB
语法如下
SP_CREATE_JOB (
JOB_NAME VARCHAR(128),
ENABLED INT,
ENABLE_EMAIL INT,
EMAIL_OPTR_NAME VARCHAR(128),
EMAIL_TYPE INT,
ENABLED_NETSEND INT,
NETSEND_OPTR_NAME VARCHAR(128),
NETSEND_TYPE INT,
DESCRIBE VARCHAR(8187)
)
创建作业
SQL> SP_CREATE_JOB('job_bak',1,0,'',0,0,'',0,'full backupset');
DMSQL 过程已成功完成
已用时间: 2.016(毫秒). 执行号:55208.
开始配置作业,其中参数就是前面创建的作业名称
SQL> SP_JOB_CONFIG_START('job_bak');
DMSQL 过程已成功完成
已用时间: 1.349(毫秒). 执行号:55209.
增加步骤通过系统过程 SP_ADD_JOB_STEP 实现
语法如下
SP_ADD_JOB_STEP (
JOB_NAME VARCHAR(128),
STEP_NAME VARCHAR(128),
TYPE INT,
COMMAND VARCHAR(8187),
SUCC_ACTION INT,
FAIL_ACTION INT,
RETRY_ATTEMPTS INT,
RETRY_INTERVAL INT,
OUTPUT_FILE_PATH VARCHAR(256),
APPEND_FLAG INT
)
例如:参数和之前不符时会报错
SQL> SP_ADD_JOB_STEP('TEST', 'STEP1', 0, 'INSERT INTO MYINFO VALUES(1000, ''HELLO WORLD''); ', 0, 0, 2, 1, NULL, 0);
call SP_ADD_JOB_STEP('TEST', 'STEP1', 0, 'INSERT INTO MYINFO VALUES(1000, ''HELLO WORLD''); ', 0, 0, 2, 1, NULL, 0);
[-8427]:非法的作业配置操作.
已用时间: 2.590(毫秒). 执行号:0.
和之前一致则正常执行
SQL> SP_ADD_JOB_STEP('job_bak', 'STEP1', 0, 'INSERT INTO MYINFO VALUES(1000, ''HELLO WORLD''); ', 0, 0, 2, 1, NULL, 0);
DMSQL 过程已成功完成
已用时间: 3.760(毫秒). 执行号:55308.
增加调度通过调度系统过程 SP_ADD_JOB_SCHEDULE 实现。
SQL> SP_ADD_JOB_SCHEDULE('job_bak', 'SCHEDULE3', 1, 1, 1, 0, 1, CURTIME, '23:59:59', CURDATE, NULL, '一个测试调度');
DMSQL 过程已成功完成
已用时间: 2.673(毫秒). 执行号:55309.
commit 生效
SQL> SP_JOB_CONFIG_COMMIT('job_bak');
DMSQL 过程已成功完成
已用时间: 9.730(毫秒). 执行号:55310.
如果一个作业已经执行完成,或者由于其它什么原因需要删除作业,可以调用系统过程
SP_DROP_JOB 实现
SQL> SP_DROP_JOB('job_bak');
DMSQL 过程已成功完成
已用时间: 21.893(毫秒). 执行号:55312.