作业管理:
注释:
默认 DBA 拥有全部的作业权限;ADMIN JOB 权限可以添加、配置、调度和删除作业等,
但没有作业环境初始化 SP_INIT_JOB_SYS(1)和作业环境销毁 SP_INIT_JOB_SYS(0)的权限。
SYSJOBSTEPS :存储作业包括的所有步骤信息
查看作业和作业的步骤
select a.name,a.enable,a.username,a.createtime,a.modifytime,b.name,b.type,b.dbname
from sysjob.sysjobs a join SYSJOB.SYSJOBSTEPS b
on a.id=b.jobid
where a.name=‘DAMENG-FULL-BACKUP’;
SYSJOBSCHEDULES :存储作业的调度信息
查看作业/作业步骤/作业调度
select a.name,a.enable,a.username,a.createtime,a.modifytime,b.name,b.type,b.dbname,c.name,c.starttime,c.endtime
from sysjob.sysjobs a join SYSJOB.SYSJOBSTEPS b on a.id=b.jobid
join SYSJOB.SYSJOBSCHEDULES c on a.id=c.jobid
where a.name=‘DAMENG-FULL-BACKUP’;
SYSMAILINFO :存储作业管理系统管理员的信息
select * from SYSJOB.SYSMAILINFO;
SYSJOBHISTORIES2 :存储作业的执行情况的日志。当一个作业执行完成后,会向这个表中插入一条作业执行情况的记录
select * from SYSJOB.SYSJOBHISTORIES2;
SYSSTEPHISTORIES2 : 存储作业步骤的执行情况的日志
select * from SYSJOB.SYSSTEPHISTORIES2;
SYSALERTHISTORIES :存储警报发生的历史记录的日志
SYSOPERATORS :存储作业管理系统中所有已定义操作员的信息
select * from SYSJOB.SYSOPERATORS;
SYSALERTS:存储作业管理系统中所有已定义的警报信息
select * from SYSJOB.SYSALERTS;
SYSALERTNOTIFICATIONS:存储警报需要通知的操作员的信息
select * from SYSJOB.SYSALERTNOTIFICATIONS;
系 统 视 图 有
USER_JOBS_VIEW :
USER_JOBSTEPS_VIEW:
USER_JOBSCHEDULES_VIEW:
USER_JOBHISTORIES_VIEW:
USER_STEPHISTORIES_VIEW:
系统表和试图的创建和删除:数据库安装完成后默认没有启用代理,通过SP_INIT_JOB_SYS(1)来启用代理
SQL> call SP_INIT_JOB_SYS(0); --删除系统表和试图,会将已有的作业一起删除
SQL> select count() from dba_objects where owner=‘SYSJOB’;
行号 count()
1 0
SQL> call SP_INIT_JOB_SYS(1); --创建系统表和试图
SQL> select count(*) from dba_objects where owner=‘SYSJOB’;
行号 count(*)
1 51
修改操作员:
SP_ALTER_OPERATOR(‘TOM’, 1, ‘tom123@dameng.shanghai’, ‘192.168.40.10’);
删除操作员
SP_DROP_OPERATOR(‘TOM’);
创建备份恢复的作业:
完全备份
call SP_CREATE_JOB(‘DAMENG-FULL-BACKUP’,1,1,‘TOM’,0,1,‘TOM’,0,‘Execute full backup’);
call SP_JOB_CONFIG_START(‘DAMENG-FULL-BACKUP’);
call SP_ADD_JOB_STEP_EX(‘DAMENG-FULL-BACKUP’, ‘SETP1-FULLBACKUP’, 0, ‘/* SQL GENERATED BY MANAGER */DECLARE BAKNAME VARCHAR; BAKUPSTR VARCHAR; BEGIN BAKNAME = ‘‘DB_DAMENG_FULL_’’ || TO_CHAR(SYSDATE, ‘‘YYYY_MM_DD_HH24_MI_SS’’); BAKUPSTR = ‘‘BACKUP DATABASE FULL TO "’’ || BAKNAME || ‘’" BACKUPSET ‘’’’/backup/DAMENG/’’ || BAKNAME || ‘’’’’’ MAXPIECESIZE 8192 LIMIT READ SPEED 1024 WRITE SPEED 512 COMPRESSED LEVEL 5 PARALLEL 3’’; EXECUTE IMMEDIATE BAKUPSTR; END;’, 3, 1, 0, 0, NULL, 0, ‘数据库全备步骤’);
call SP_ADD_JOB_STEP_EX(‘DAMENG-FULL-BACKUP’, ‘STEP2-DELETEBACKUP’, 0, ‘SF_BAKSET_BACKUP_DIR_ADD(’‘DISK’’,’’/backup/DAMENG’’);
CALL SP_DB_BAKSET_REMOVE_BATCH(’‘DISK’’,SYSDATE-14);’, 1, 1, 0, 0, NULL, 0, ‘’);
CALL SP_JOB_STEP_SET_NEXT_STEP(‘DAMENG-FULL-BACKUP’, ‘SETP1-FULLBACKUP’, ‘STEP2-DELETEBACKUP’, NULL);
call SP_ADD_JOB_SCHEDULE(‘DAMENG-FULL-BACKUP’, ‘SCHE-FULLBACKUP’, 1, 2, 1, 8, 0, ‘12:54:14’, NULL, ‘2025-03-19 12:54:14’, NULL, ‘每周三执行数据库全备’);
call SP_JOB_CONFIG_COMMIT(‘DAMENG-FULL-BACKUP’);
call SP_JOB_SET_SCHEMA(‘DAMENG-FULL-BACKUP’, ‘SYSDBA’);
增量备份:
call SP_CREATE_JOB(‘DAMENG-INCREMENT-BACKUP’,1,1,‘TOM’,2,1,‘TOM’,2,‘数据库差异增量备份’);
call SP_JOB_CONFIG_START(‘DAMENG-INCREMENT-BACKUP’);
call SP_ADD_JOB_STEP_EX(‘DAMENG-INCREMENT-BACKUP’, ‘STEP2-INCRBACKUP’, 0, ‘/* SQL GENERATED BY MANAGER */DECLARE BAKNAME VARCHAR; BAKUPSTR VARCHAR; BEGIN BAKNAME = ‘‘DB_DAMENG_INCREMENT_’’ || TO_CHAR(SYSDATE, ‘‘YYYY_MM_DD_HH24_MI_SS’’); BAKUPSTR = ‘‘BACKUP DATABASE INCREMENT WITH BACKUPDIR ‘’’’/backup/DAMENG’’’’ TO “’’ || BAKNAME || ‘’” BACKUPSET ‘’’’/backup/INCRBAK/’’ || BAKNAME || ‘’’’’’ MAXPIECESIZE 8192 LIMIT READ SPEED 1024 WRITE SPEED 512 COMPRESSED LEVEL 3 PARALLEL 3’’; EXECUTE IMMEDIATE BAKUPSTR; END;’, 1, 1, 0, 0, NULL, 0, ‘执行增量备份’);
call SP_ADD_JOB_SCHEDULE(‘DAMENG-INCREMENT-BACKUP’, ‘SCH2-INCRBACKUP’, 1, 1, 1, 0, 0, ‘12:59:56’, NULL, ‘2025-03-19 12:59:56’, NULL, ‘数据库增量备份调度’);
call SP_JOB_CONFIG_COMMIT(‘DAMENG-INCREMENT-BACKUP’);
SF_BAKSET_BACKUP_DIR_ADD(‘DISK’,’/backup/DAMENG’);
CALL SP_DB_BAKSET_REMOVE_BATCH(‘DISK’,SYSDATE-14);
立即执行一次 ID 为的作业
SQL> select id,name from sysjob.sysjobs;
行号 id name
1 1742387798 DAMENG-FULL-BACKUP
2 1742387799 DAMENG-INCREMENT-BACKUP
SQL> SP_DBMS_JOB_RUN(1742387798);
停止正在运行的 ID 为 1680153662 的作业。
SQL> SP_STOP_RUNNING_JOB(1742387798);
清除迄今为止作业的所有日志记录
SQL> SP_JOB_CLEAR_HISTORIES (‘DAMENG-FULL-BACKUP’);
清 除 迄 今 为 止 某 个 作 业 的 所 有 日 志 记 录 , 即 删 除 表 SYSJOBHISTORIES2 、SYSSTEPHISTORIES2 中的 相关 记录 。
如果该作业还在继续工作,那么后续会在表SYSJOBHISTORIES2、SYSSTEPHISTORIES2 中产生该作业的新日志。
非SYSDBA用户只能清除属于当前用户创建的作业的日志记录。
清除 2022-08-17 00:00:00 之前作业 TEST 的所有日志记录。
SQL> SP_JOB_CLEAR_HISTORIES (‘DAMENG-FULL-BACKUP’, ‘2025-03-20 13:50:10’);
删除作业:
SQL> SP_DROP_JOB(‘DAMENG-FULL-BACKUP’);
SQL> SP_DROP_JOB(‘DAMENG-INCREMENT-BACKUP’);
文章
阅读量
获赞
