注册
作业管理
专栏/技术分享/ 文章详情 /

作业管理

醉酒方知浓 2026/06/04 86 0 0
摘要

作业管理:

  1. 普通用户没有操作作业的权限,为了让普通用户可以创建、配置和调度作业,需要赋予普通用户管理作业权限:ADMIN JOB。
    GRANT ADMIN JOB TO user_name;

注释:
默认 DBA 拥有全部的作业权限;ADMIN JOB 权限可以添加、配置、调度和删除作业等,
但没有作业环境初始化 SP_INIT_JOB_SYS(1)和作业环境销毁 SP_INIT_JOB_SYS(0)的权限。

  1. 和作业有关的系统表
    系统表:
    SYSJOBS :存储用户定义的作业信息,JOB不能重名
    查看数据库中的JOB:select * from SYSJOB.sysjobs;

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

  1. 操作员的使用
    创建操作员:创建一个名为 TOM 的操作员。
    SP_CREATE_OPERATOR(‘TOM’, 1, ‘tom111@dameng.shanghai’, ‘192.168.40.10’);

修改操作员:
SP_ALTER_OPERATOR(‘TOM’, 1, ‘tom123@dameng.shanghai’, ‘192.168.40.10’);

删除操作员
SP_DROP_OPERATOR(‘TOM’);

  1. 创建作业
    图形界面创建数据库备份作业时备份片大小:
    0:无限制
    1:128MB
    2:256MB
    3:512MB
    4:1024MB
    5:2048MB
    6:4096MB
    7:8192MB
    8:16384MB
    9:32768MB

创建备份恢复的作业:
完全备份
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’);

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服