注册
关于达梦备份JOB通过命令行调用总结学习
培训园地/ 文章详情 /

关于达梦备份JOB通过命令行调用总结学习

中一贝 2025/07/02 30 0 0

通过JOB设定定时任务进行物理备份与增量备份。
备份步骤
创建归档目录
mkdir -p /data/dmarch
创建备份目录
mkdir -p /data/dmbak
disql中sysdba登录
disql SYSDBA/PASSWORD@10.135.3.61:6666
开启数据库归档模式
alter database mount;
alter database add archivelog 'dest=/data/dmarch,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT=500000';
alter database archivelog;
alter database open;
alter system switch logfile; ----切日志
达梦定时作业查看:
select ID,NAME,ENABLE,USERNAME,CREATETIME,VALID,DESCRIBE from SYSJOB.SYSJOBS;
select ID,NAME,JOBID,SEQNO,TYPE,COMMAND from SYSJOB.SYSJOBSTEPS;
select ID,NAME,JOBID,ENABLE,TYPE,FREQ_INTERVAL,FREQ_SUB_INTERVAL,STARTTIME,VALID,DESCRIBE from SYSJOB.SYSJOBSCHEDULES;
创建作业环境
SP_INIT_JOB_SYS(1); ## 值为1 初始化作业环境,值为0 删除作业环境,初始化作业环境后会生成响应的视图和shema: sysjob
设置备份目录(删除备份时使用)
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/data/dmbak');
全量备份(每周五23点全备)
call SP_CREATE_JOB('bakfull',1,0,'',0,0,'',0,''); ## 创建一个job
call SP_JOB_CONFIG_START('bakfull'); ## 开始作业配置
call SP_JOB_SET_EP_SEQNO('bakfull',0); ## 设置指定作业的作业执行节点(见参数设置DMDCR_SEQNO设置值)
call SP_ADD_JOB_STEP('bakfull', 'bak01', 6, '01000000/dmbackup/fullbak', 1, 2, 0, 0, NULL, 0); # 这串数字与前一个值6有关01000000,用来设置备份方式,详解如下:
第一部分:表示备份模式,0 完全备份,1 差异增量备份,3 归档备份,4累计增量备份。
第二部分:表示是否进行压缩。取值0-9,0表示不压缩,其他表示压缩级别。
第三部分:表示是否备份日志。 0 备份,1 不备份。
第四部分:表示并行备份并行数。取值0-9,0表示不并行,其他数字表示并行数。
第五部分:表示并行备份时,是否使用USE PWR优化增量备份。0不使用,1使用。
第六部分:表示备份片大小的上线(maxpiecesize)。0表示默认值(64为系统默认4G),1表示128M,2表示256M,3表示512M,4表示1G,5表示2G,6表示4G,7表示8G,8表示16G,9表示32G。
第七部分:表示是否在备份完归档后,删除备份的归档文件。0表示不删除,1 删除。
第八部分:保留字符,用0 填充。
第九部分:是一个文件路径,表示备份文件的路径。路径命令有具体格式如下:
1、对于增量备份,因他必须要制定一个或者多个基础备份路径,每个路径之间需要用逗号隔开,之后接着是备份路径。基础备份路径与备份路径需要用“|” 隔开:例如:01000000:\base_bakdir1,base_bakdir2|bakdir.
2、对于完全备份,不需要“|” 符合了,可以直接在第八个自己开始指定备份路径即可:01000000E:bakdir.
14:55:00调整这列, 1, 1, 1, 0, 0, 为每天天备份,具体参考官方文档
call SP_ADD_JOB_SCHEDULE('bakfull', 'bak01', 1, 1, 1, 0, 0, CURTIME, NULL,CURTIME, NULL, '');

增加调度通过调度系统过程 SP_ADD_JOB_SCHEDULE 实现【1、作业名,2、调度名,3、是否启动,4、类型(1表示按天的频率执行),5、1表示每天一次 6、0或者1表示不做检查,7、表示一天内每隔多少分钟执行一次。 有效值范围 0~1439,单位分钟, 0 表示一天内执行一次。8、起始时间,9、结束时间,10,其实时间,11、结束时间】。

##############################
select * from v$backupset;(该视图能查询到数据的迁移是备份目录执行了添加:举例:
select SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm/dmbak');
select * from sysjob.sysjobs;
select * from sysjob.sysjobschedules;
select * from sysjob.sysjobsteps;
select * from sysjob.sysjobhistories2 order by start_time limit 20;
##############################

周六全量备份:1000000

call SP_CREATE_JOB ('bakfull',1,0,'',0,0,'',0,'全量备份');
call SP_JOB_CONFIG_START ('bakfull');
call SP_JOB_SET_EP_SEQNO('bakfull',0);
call SP_ADD_JOB_STEP ('bakfull', 'fullstep', 6, '01000000/backup/dmbackup', 0,0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE ('bakfull', 'fullstepschedu', 1, 2, 1, 64, 0, '00:10:00',NULL, '2024-11-27 22:00:00', NULL, '');
call SP_JOB_CONFIG_COMMIT('bakfull');
增量备份(每周除周6外每天23点增量备份)
call SP_CREATE_JOB('bakincr',1,0,'',0,0,'',0,'增量备份');
call SP_JOB_CONFIG_START('bakincr');
call SP_JOB_SET_EP_SEQNO('bakincr',0);
call SP_ADD_JOB_STEP('bakincr', 'incrstep', 6, '11000000/backup/dmbackup|/backup/dmbackup', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('bakincr', 'incrschedu', 1, 2, 1, 63, 0, '00:10:00', NULL, '2024-11-27 14:44:30', NULL, '');
call SP_JOB_CONFIG_COMMIT('bakincr');

归档日志备份(每隔12小时执行一次)
call SP_CREATE_JOB ('bakarch',1,0,'',0,0,'',0,'归档日志备份');
call SP_JOB_CONFIG_START ('bakarch');
call SP_JOB_SET_EP_SEQNO('bakarch',1);
call SP_ADD_JOB_STEP ('bakarch', 'bakarchstp', 6,'31000000/dmbackup/backuparch', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE ('bakarch', 'bakarchschdu', 1, 1, 1, 0, 720,'00:00:00', '23:59:59', '2025-01-20 13:00:00', NULL, '');
call SP_JOB_CONFIG_COMMIT ('bakarch');
删除归档日志备份
call SP_CREATE_JOB ('delbakarch',1,0,'',0,0,'',0,'删除归档备份');
call SP_JOB_CONFIG_START ('delbakarch');
call SP_JOB_SET_EP_SEQNO('delbakarch',1);
call SP_ADD_JOB_STEP ('delbakarch','delbakarchstp',0,'SF_BAKSET_BACKUP_DIR_ADD (''DISK'',''/dmbackup/backuparch'');
call sp_db_bakset_remove_batch (''DISK'',now ()-7);', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE ('delbakarch', 'delbakarchschedu', 1, 1, 1, 0, 0, '23:30:00',NULL, '2025-01-20 14:48:41', NULL, '');
call SP_JOB_CONFIG_COMMIT ('delbakarch');
修改归档删除
call SP_ALTER_JOB ('delbakarch',1,0,'',0,0,'',0,'删除归档备份');
call SP_JOB_CONFIG_START ('delbakarch');
call SP_JOB_SET_EP_SEQNO('delbakarch',1);
call SP_ALTER_JOB_STEP ('delbakarch','delbakarchstp',0,'SF_BAKSET_BACKUP_DIR_ADD (''DISK'',''/dmbackup/backuparch'');call sp_db_bakset_remove_batch (''DISK'',now ()-5);', 1, 2, 0, 0, NULL, 0);
call SP_ALTER_JOB_SCHEDULE ('delbakarch', 'delbakarchschedu', 1, 1, 1, 0, 0, '23:30:00',NULL, '2025-02-10 14:48:41', NULL, '');
call SP_JOB_CONFIG_COMMIT ('delbakarch');

修改作业:
call SP_ALTER_JOB('bakincr',1,0,'',0,0,'',0,'增量备份');
call SP_JOB_CONFIG_START('bakincr');
call SP_JOB_SET_EP_SEQNO('bakincr',1);
call SP_ALTER_JOB_STEP('bakincr', 'incrstep', 6, '11000000/backup/dmbackup|/backup/dmbackup', 1, 2, 0, 0, NULL, 0);
call SP_ALTER_JOB_SCHEDULE('bakincr', 'incrschedu', 1, 2, 1, 63, 0, '00:10:00', NULL, '2024-12-25 14:44:30', NULL, '');
call SP_JOB_CONFIG_COMMIT('bakincr');

备份定期删除(每天23:30删除14天前备份)
SP_INIT_JOB_SYS(1); ## 只需要初始化一次即可
call SP_ALTER_JOB('deldbbackup');
call SP_CREATE_JOB('deldbbackup',1,0,'',0,0,'',0,'数据备份清理');
call SP_JOB_CONFIG_START('deldbbackup');
call SP_ADD_JOB_STEP('deldbbackup','deldbbakstep',0,'SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/backup/dmbackup'');call sp_db_bakset_remove_batch(''DISK'',now()-14);', 1, 2, 0, 0, NULL, 0); ### 注意该语句中没有双引号",而是两个单引号:''
call SP_ADD_JOB_SCHEDULE ('deldbbackup', 'deldbbaksch', 1, 1, 1, 0, 0, '03:00:00',NULL, '2024-11-27 23:00:00', NULL, '');
call SP_JOB_CONFIG_COMMIT('deldbbackup');
删除归档:
call SP_CREATE_JOB('delarch',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('delbak');
call SP_ADD_JOB_STEP('delarch', 'bak1', 0, 'SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/dmbackup/archbak'');call sp_db_bakset_remove_batch(''DISK'',now()-10);', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('delbak', 'del01', 1, 1, 1, 0, 0, '23:30:00', NULL, '2023-03-05 14:48:41', NULL, '');
call SP_JOB_CONFIG_COMMIT('delbak');
策略调整:
查看有哪些jobs:
select * from sysjob.sysjobs;

--定期删除归档备份(每天 12: 30 删除 10 天前备份)
call SP_CREATE_JOB ('delarchbak',1,0,'',0,0,'',0,'删除归档备份');
call SP_JOB_CONFIG_START ('delarchbak');
call SP_JOB_SET_EP_SEQNO('bakfull',0);
call SP_ADD_JOB_STEP ('delarchbak','delarchbakstep',0,'SF_BAKSET_BACKUP_DIR_ADD (''DISK'',''/dmbackup/archbak'');call SP_ARCH_BAKSET_REMOVE_BATCH (''DISK'',SYSDATE-10);', 1, 2, 0, 0, NULL, 0); ### 注意该语句中没有双引号",而是两个单引号:''
call SP_ADD_JOB_SCHEDULE ('delarchbak', 'delarchbaksch', 1, 1, 1, 0, 0, '12:30:00',NULL, '2023-03-11 12:00:00', NULL, '');
call SP_JOB_CONFIG_COMMIT ('delarchbak');

修改归档备份策略:
call SP_ALTER_JOB('bakarch',1,0,'',0,0,'',0,'归档备份');
call SP_JOB_CONFIG_START('bakarch');
call SP_ALTER_JOB_SCHEDULE ('bakarch', 'bakarch2', 1, 1, 1, 0, 720, '15:10:00',NULL, '2023-11-21 15:10:00', NULL, '每天两次次归档备份');
call SP_JOB_CONFIG_COMMIT('bakarch');
修改删除归档备份策略:
call SP_ALTER_JOB('delarchbak',1,0,'',0,0,'',0,'归档备份清理');
call SP_JOB_CONFIG_START('delarchbak');
call SP_ALTER_JOB_STEP('delarchbak','delarchbakstep',0,'SF_BAKSET_BACKUP_DIR_ADD (''DISK'',''/dmbackup/archbak'');call SP_ARCH_BAKSET_REMOVE_BATCH (''DISK'',now()-3);', 1, 2, 0, 0, NULL, 0); ### 注意该语句中没有双引号",而是两个单引号:''
call SP_ALTER_JOB_SCHEDULE ('delarchbak', 'delarchbaksch', 1, 1, 1, 0, 0, '14:00:00',NULL, '2023-11-02 14:05:00', NULL, '');
call SP_JOB_CONFIG_COMMIT('delarchbak');
修改删除数据备份策略:
call SP_ALTER_JOB('deldbbackup',1,0,'',0,0,'',0,'数据备份清理');
call SP_JOB_CONFIG_START('deldbbackup');
call SP_ALTER_JOB_STEP('deldbbackup','deldbbakstep',0,'SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/dmbackup/fullbak'');call sp_db_bakset_remove_batch(''DISK'',now()-10);', 1, 2, 0, 0, NULL, 0); ### 注意该语句中没有双引号",而是两个单引号:''
call SP_ALTER_JOB_SCHEDULE ('deldbbackup', 'deldbbaksch', 1, 1, 1, 0, 0, '16:00:00',NULL, '2023-10-10 16:00:00', NULL, '');
call SP_JOB_CONFIG_COMMIT('deldbbackup');

删除job:
call SP_DROP_JOB('deldbbackup');
增量备份修改:
call SP_ALTER_JOB('bakincr',1,0,'',0,0,'',0,'增量备份');
call SP_JOB_CONFIG_START('bakincr');
call SP_JOB_CONFIG_COMMIT('bakincr');
全量备份:
call SP_ALTER_JOB('bakfull',1,0,'',0,0,'',0,'全量备份');
call SP_JOB_CONFIG_START('bakfull');
call SP_JOB_CONFIG_COMMIT('bakfull');

归档备份:
call SP_ALTER_JOB('bakarch',1,0,'',0,0,'',0,'归档备份');
call SP_JOB_CONFIG_START('bakarch');
call SP_JOB_CONFIG_COMMIT('bakarch');

手动调用job:
dbms_job.run(jobid);

归档日志备份定期归档备份 (每天13点开始归档备份, 每隔12小时备份一次) :
call SP_CREATE_JOB ('bakarch',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START ('bakarch');
call SP_JOB_SET_EP_SEQNO('bakfull',1);
call SP_ADD_JOB_STEP ('bakarch', 'bakarch1', 6,'31000000/dmbackup/archbak', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE ('bakarch', 'bakarch2', 1, 1, 1, 0, 720,'00:00:00', '23:59:59', '2023-03-05 15:00:00', NULL, '');
call SP_JOB_CONFIG_COMMIT ('bakarch');
修改备份时间
call SP_JOB_CONFIG_START('bakfull');
call SP_ALTER_JOB_SCHEDULE('bakfull', 'bak01', 1, 1, 1, 0, 0, '15:48:00', NULL, '2020-11-02 14:42:15', NULL, '');
call SP_JOB_CONFIG_COMMIT('bakfull');
备份后验证:备份开始时间,备份结束时间,备份状态
select * from dba_jobs;
SQL> select * from dba_jobs;
LINEID JOB LOG_USER PRIV_USER SCHEMA_USER LAST_DATE LAST_SEC THIS_DATE THIS_SEC NEXT_DATE NEXT_SEC TOTAL_TIME BROKEN


INTERVAL FAILURES WHAT NLS_ENV MISC_ENV INSTANCE
----------- -------------------- ------------------- ------- -------- -----------
1 1615186160 SYSDBA SYSDBA SYSDBA NULL NULL NULL NULL 2021-03-12 14:55:00 NULL N
10080 0 01000000/data/dmbak NULL NULL 1
看到第二次备份成功,无错误
select * from sysjob.sysjobhistories2;
LINEID EXEC_ID NAME START_TIME END_TIME ERRCODE ERRINFO HAS_NOTIFIED


1 280625799 bakfull 2021-03-08 15:25:29 2021-03-08 15:25:30 -718 [JOBbakfullbak01] Archive log collected not consecusive 0
2 280625800 bakfull 2021-03-08 15:48:29 2021-03-08 15:53:21 0 NULL 0

设置备份目录后,可以查询到备份目录下面所有备份文件信息
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/data/dmbak');
SELECT * FROM V$BACKUPSET;

################################################################################
job备份数据恢复验证:
V1.0
备份还原 V1.0 指 DM7 早期的备份还原,不是基于备份集组织的备份。V1.0 版本使用dmbackup 工具执行脱机备份,使用 dmrestore 工具执行脱机还原。
V2.0
引入备份片、元数据文件、备份集等概念,提供第三方备份(TAPE 类型)接口,支持RAC 备份。使用 DMRMAN 工具进行脱机备份还原。

################################################################################
################################################################################
作业存储过程详解:
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
)
参数详解
 JOB_NAME
作 业 的 名 称 。 表 示 正 在 给 哪 一 个 作 业 增 加 步 骤 , 这 个 参 数 必 须 为 上 面 调 用SP_JOB_CONFIG_START 函数时指定的作业名, 否则系统会报错,同时系统会检测这个作业是否存在,不存在也会报错。
 STEP_NAME
表示增加的步骤名。 必须是有效的标识符,同时不能是 DM 关键字。同一个作业不能有两个同名的步骤,创建时会检测这个步骤是否已经存在,如果存在则报错。
 TYPE
步骤的类型。取值 0、 1、 2、 3、 4、 5 和 6。说明如下:
0 表示执行一段 SQL 语句或者是语句块。
1 表示执行基于 V1.0 版本的备份还原(没有 WITHOUT LOG 和 PARALLEL 选项)。
2 表示重组数据库。
3 表示更新数据库的统计信息。
5 表示执行基于 V1.0 版本的备份还原(有 WITHOUT LOG 和 PARALLEL 选项)。
6 表示执行基于 V2.0 版本的备份还原。
 COMMAND
指定不同步骤类型(TYPE) 下,步骤在运行时所执行的语句。 它不能为空。
当 TYPE=0 时,指定要执行的 SQL 语句或者语句块。 如果要指定多条语句,在语句之间必须用分号隔开。不支持多条 DDL 语句一起执行,否则在执行时可能会报出不可预知的错误
信息。
当 TYPE=1 时,指定的是一个字符串。 该字符串由三个部分组成: [备份模式][备份压缩类型][base_dir,…,base_dir|bakfile_path]。 三部分详细介绍如下:

  1. 第一部分是一个字符, 表示备份模式。 0 完全备份; 1 增量备份。 如果第一个字符不是这二个值中的一个,系统会报错。
  2. 第二部分是一个字符, 表示备份时是否进行压缩。 0 不压缩; 1 压缩。
  3. 第三部分是一个文件路径,表示备份文件的路径。 路径命令有具体的格式, 分以下两种:
  1. 对于增量备份,因为它必须要指定一个或者多个基备份路径,每个路径之间需要用逗号隔开,之后接着是备份路径,基备份路径与备份路径需要用“|”隔开,如果不指定备份路径,则不需要指定“|”,同时系统会自动生成一个备份路径。 例如,
    01E:\base_bakdir1, base_bakdir2|bakdir。
  2. 对于完全备份, 因为不需要指定基备份所以就不需要“|”符号了,可以直接在第三个字节开始指定备份路径即可。 例如, 01E:\bakdir。 如果不指定备份路径,则
    系统会自动生成一个备份路径。
    当 TYPE 是 2、 3 或 4 时,要执行的语句就是由系统内部根据不同类型生成的不同语句或者过程。
    当 TYPE=5 时,指定的是一个字符串。该字符串由六个部分组成: [备份模式][备份压缩 类 型 ][ 备 份 日 志 类 型 ][ 备 份 并 行 类 型 ][ 预 留 ][base_dir,…,base_dir | bakfile_path | parallel_file]。六部分详细介绍如下:
  1. 第一部分是一个字符,表示备份模式。 0 完全备份; 1 增量备份。如果第一个字符不是这二个值中的一个,系统会报错。
  2. 第三部分是一个字符,表示是否备份日志。 0 备份; 1 不备份。
  3. 第四部分是一个字符,表示是否并行备份。 0 普通备份; 1 并行备份,并行备份映射放到最后,以“|”分割。
  4. 第五部分是一个保留字符,用 0 填充。
  5. 第六部分是一个文件路径,表示备份文件的路径。路径命令有具体的格式,分以下两种:
  1. 对于增量备份,因为它必须要指定一个或者多个基础备份路径,每个路径之间需要用逗号隔开,之后接着是备份路径,最后并行备份映射文件;并行映射文件,基础备份路径与备份路径需要用“|”隔开,如果不指定备份路径与并行映射文件,则 不 需 要 指 定 “|” , 例 如 01000E:\base_bakdir1,base_bakdir2|bakdir|parallel_file_path 就是一个合法的增量备份命令。
  2. 对于完全备份, 因为不需要指定基备份所以就不需要“|”符号了,可以直接在第三个字节开始指定备份路径即可; 例如, 01000E:\bakdir。 如果不指定备份路径,系统会自动生成备份路径。
    当 TYPE=6 时,指定的是一个字符串。该字符串由九个部分组成: [备份模式][备份压缩类型][备份日志类型][备份并行数][USEPWR][MAXPIECESIZE][RESV1][RESV2][base_dir,…,base_dir | bakfile_dir]。
    九部分详细介绍如下:
  1. 第一部分是一个字符,表示备份模式。 0 完全备份; 1 差异增量备份; 3 归档备份;4 累计增量备份。 如果第一个字符不是这四个值中的一个,系统会报错。
  2. 第二部分是一个字符,表示备份时是否进行压缩。 取值范围为 0~9。 0 表示不压缩,1 表示 1 级压缩, 2 表示 2 级压缩,以此类推, 9 表示 9 级压缩。
  3. 第三部分是一个字符,表示是否备份日志。 0 备份; 1 不备份。
  4. 第四部分是一个字符,表示并行备份并行数。取值 0 到 9。 其中, 0 表示不进行并行备份; 1 表示使用并行数默认值 4; 2~9 表示并行数。
  5. 第五部分为一个字符, 表示并行备份时,是否使用 USE PWR 优化增量备份。 0 不使用; 1 使用。(只是语法支持,没有实际作用)
  6. 第六部分为一个字符,表示备份片大小的上限(MAXPIECESIZE)。 0 表示采用默认值(32 位系统默认为 2G, 64 位系统默认为 4G); 1 表示 128M; 2 表示 256M; 3 表示 512M; 4 表示 1G; 5 表示 2G; 6 表示 4G; 7 表示 8G; 8 表示 16G; 9 表示 32G。
  7. 第七部分为一个字符, 表示是否在备份完归档后,删除备份的归档文件。 0 不删除;1 删除。
  8. 第八部分是一个保留字符,用 0 填充。
  9. 第九部分是一个文件路径,表示备份文件的路径。路径命令有具体的格式,分以下两种:
  1. 对于增量备份,因为它必须要指定一个或者多个基础备份路径,每个路径之间需要用逗号隔开,之后接着是备份路径。 基础备份路径与备份路径需要用“|”隔开,例如, 01000000E:\base_bakdir1, base_bakdir2|bakdir 就是一个合法的增量备份命令。
  2. 对于完全备份,就不需要“|”符号了,可以直接在第八个字节开始指定备份路径即可。 例如, 01000000E:\bakdir。如果不指定备份路径,系统会自动生成一个备份路径。
     SUCC_ACTION
    指定步骤执行成功后,下一步该做什么事。取值 0、 1、 2、 3。说明如下:
    0 表示不报告步骤执行成功,并结束作业。
    1 表示报告步骤执行成功,并结束作业。
    2 表示不报告步骤执行成功,并执行下一步。
    3 表示报告步骤执行成功,并执行下一步。
    SUCC_ACTION 的值用两位二进制数来表示,低位为 0 表示不报告步骤结果, 1 表示报告步骤结果;高位为 0 表示不执行下一步, 1 表示执行下一步。
     FAIL_ACTION
    指定步骤执行失败后,下一步该做什么事。取值 0、 1、 2、 3。说明如下:
    0 表示不报告步骤执行失败,并结束作业。
    1 表示报告步骤执行失败,并结束作业。
    2 表示不报告步骤执行失败,并执行下一步。
    3 表示报告步骤执行失败,并执行下一步。
    FAIL_ACTION 的值用两位二进制数来表示,低位为 0 表示不报告步骤结果, 1 表示报告步骤结果;高位为 0 表示不执行下一步, 1 表示执行下一步。
     RETRY_ATTEMPTS
    表示当步骤执行失败后,需要重试的次数。 取值范围 0~100 次。
     RETRY_INTERVAL
    表示在每两次步骤执行重试之间的间隔时间。 不能大于 10 秒钟。
     OUTPUT_FILE_PATH
    表示步骤执行时输出文件的路径。 该参数已废弃,没有实际意义。
     APPEND_FLAG
    输出文件的追写方式。 如果指定输出文件,那么这个参数表示在写入文件时是否从文件末尾开始追写。 1 是; 0 否。如果是 0,那么从文件指针当前指向的位置开始追写。例如, 下面的语句为作业 TEST 增加了步骤 STEP1。
    SP_ADD_JOB_STEP('TEST', 'STEP1', 0, 'INSERT INTO MYINFO VALUES(1000, ''HELLO WORLD''); ', 0, 0, 2, 1, NULL, 0);
    STEP1 指定的是执行 SQL 语句,其 COMMAND 参数指定的是向 MYINFO 表中插入一条记录,执行成功和失败的下一步动作都是不报告步骤执行结果并结束作业,同时指定了失败后
    只重试两次,时间间隔为 1 秒钟。

#####################

SP_ADD_JOB_SCHEDULE (
JOB_NAME VARCHAR(128),
SCHEDULE_NAME VARCHAR(128),
ENABLE INT,
TYPE INT,
FREQ_INTERVAL INT,
FREQ_SUB_INTERVAL INT,
FREQ_MINUTE_INTERVAL INT,
STARTTIME VARCHAR(128),
ENDTIME VARCHAR(128),
DURING_START_DATE VARCHAR(128),
DURING_END_DATE VARCHAR(128),
DESCRIBE VARCHAR(500)
)
call SP_ADD_JOB_SCHEDULE('bakfull', 'bak01', 1, 1, 1, 0, 0, '14:53:00', NULL, '2020-11-02 14:42:15', NULL, '');
1、作业名,2、调度名,3、是否启动,4、类型(1表示按天的频率执行),5、1表示每天一次 6、0或者1表示不做检查,7、表示一天内每隔多少分钟执行一次。 有效值范围 0~1439,单位分钟, 0 表示一天内执行一次。8、起始时间,9、结束时间,10,其实时间,11、结束时间
参数详解
 JOB_NAME
作业名称。 指定要给该作业增加调度,这个参数必须是配置作业开始时指定的作业名,否则报错,同时系统还会检测这个作业是否存在,如果不存在也会报错。
 SCHEDULE_NAME
待创建的调度名称。 必须是有效的标识符,同时不能是 DM 关键字。指定的作业不能创建两个同名的调度,创建时会检测这个调度是否已经存在,如果存在则报错。
 ENABLE
表示调度是否启用,布尔类型。 1 启用; 0 不启用。
 TYPE
指定调度类型。取值 0、 1、 2、 3、 4、 5、 6、 7、 8。 分别介绍如下:
0 表示指定作业只执行一次。
1 按天的频率来执行。
2 按周的频率来执行。
3 在一个月的某一天执行。
4 在一个月的第一周第几天执行。
5 在一个月的第二周的第几天执行。
6 在一个月的第三周的第几天执行。
7 在一个月的第四周的第几天执行。
8 在一个月的最后一周的第几天执行。
当 TYPE=0 时,其执行时间由下面的参数 DURING_START_DATE 指定。
 FREQ_INTERVAL
与 TYPE 有关。 表示不同调度类型下的发生频率。说明如下:
当 TYPE=0 时,这个值无效,系统不做检查。
当 TYPE=1 时,表示每几天执行, 取值范围为 1~100。
当 TYPE=2 时,表示的是每几个星期执行, 取值范围没有限制。
当 TYPE=3 时,表示每几个月中的某一天执行, 取值范围没有限制。
当 TYPE=4 时,表示每几个月的第一周执行, 取值范围没有限制。
当 TYPE=5 时,表示每几个月的第二周执行,取值范围没有限制。
当 TYPE=6 时,表示每几个月的第三周执行, 取值范围没有限制。
当 TYPE=7 时,表示每几个月的第四周执行,取值范围没有限制。
当 TYPE=8 时,表示每几个月的最后一周执行, 取值范围没有限制。
 FREQ_SUB_INTERVAL
与 TYPE 和 FREQ_INTERVAL 有关。 表示不同 TYPE 的执行频率,在 FREQ_INTERVAL基础上,继续指定更为精准的频率。说明如下:
当 TYPE=0 或 1 时,这个值无效,系统不做检查。
当 TYPE=2 时, 表示的是某一个星期的星期几执行,可以同时选中七天中的任意几天。取值范围 1~127。 具体如何取值,请用户参考如下规则。因为每周有七天, 所以 DM 数据库系统内部用七位二进制来表示选中的日子。 从最低位开始算起, 依次表示周日、周一...周五、周六。选中周几,就将该位置 1,否则 0。例如, 选中周二和周六, 7 位二进制就是 1000100,(63:0111111)
转化成十进制就是 68,所以 FREQ_SUB_INTERVAL 就取值 68。
当 TYPE=3 时,表示将在一个月的第几天执行。取值范围 1~31。
当 TYPE 为 4、 5、 6、 7 或 8 时,都表示将在某一周内第几天执行。取值范围 1~7,分别表示从周一到周日。
 FREQ_MINUTE_INTERVAL
表示一天内每隔多少分钟执行一次。 有效值范围 0~1439,单位分钟, 0 表示一天内执行一次。
 STARTTIME
定义作业被调度的起始时间。 必须是有效的时间字符串,不可以为空。
 ENDTIME
定义作业被调度的结束时间。 可以为空。 但如果不为空,指定的必须是有效的时间字符串,同时必须要在 STARTTIME 时间之后。
 DURING_START_DATE
指定作业被调度的起始日期。 必须是有效的日期字符串,不可以为空。
 DURING_END_DATE
指定作业被调度的结束日期。 可以为空, DURING_END_DATE 和 ENDTIME 都为空,调度活动会一直持续下去。 但如果不为空,必须是有效的日期字符串,同时必须是在DURING_START_DATE 日期之后。
 DESCRIBE
表示调度的注释信息,最大长度为 500 个字节。
例如, 下面的语句为作业 TEST 增加名为 SCHEDULE3 的调度。
SP_ADD_JOB_SCHEDULE('TEST', 'SCHEDULE3', 1, 1, 1, 0, 1, CURTIME, '23:59:59',CURDATE, NULL, '一个测试调度');
上面的例子中,为作业 TEST 创建一个新的调度,调度名为 SCHEDULE3; ENABLE 为 1,即启用这个调度; 其调度类型 TYPE 为 1,表示按天的频率来执行; FREQ_INTERVAL 为 1,说明每天都要执行; 在这种类型下 FREQ_SUB_INTERVAL 参数就不会检查,随机写 0;FREQ_MINUTE_INTERVAL 指定的是 1,说明每隔一分钟就执行一次; STARTTIME 指定是从当前时间开始, CURTIME 表示系统当前时间; ENDTIME 指定 23:59:59,表示每天都是执行到这个时间为止; DURING_START_DATE 为调度的起始日期,表示系统当前日期;
DURING_END_DATE 指定的为 NULL,表示这个调度指定的日期范围为从开始执行那刻起,永不停止; DESCRIBE 指定为‘一个测试调度’ ,这是对这个调度的注释。

查看备份集信息
select * from v$backupset;(该视图能查询到数据的迁移是备份目录执行了添加:举例:select SF_BAKSET_BACKUP_DIR_ADD('DISK','/dmdata/dmbak');
select * from sysjob.sysjobs;
select * from sysjob.sysjobschedules;
select * from sysjob.sysjobsteps;
select * from sysjob.sysjobhistories2 order by start_time;

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服