第一步:创建作业环境
作业环境是作业系统的基础设施,创建后系统会自动建立SYSJOB模式及所需系统表。
通过命令行方式:
– 创建作业环境
SP_INIT_JOB_SYS(1);
执行后可查询验证:
-- 查看SYSJOB模式下的所有表
SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER='SYSJOB';
二、完整的作业配置流程
创建作业 → 开始配置 → 添加步骤 → 添加调度 → 提交配置
2.1 创建作业
示例:
-- 创建名为JOB_CLEAN_LOG的作业,启用,不开启邮件通知
CALL SP_CREATE_JOB('JOB_CLEAN_LOG', 1, 0, '', 0, 0, '', 0, '清理过期日志表');
创建作业参数(SP_CREATE_JOB):
SP_CREATE_JOB (
JOB_NAME VARCHAR(128), -- 作业名称
ENABLED INT, -- 是否启用
ENABLE_EMAIL INT, -- 是否开启邮件通知
EMAIL_OPTR_NAME VARCHAR(128), -- 邮件通知的操作员
EMAIL_TYPE INT, -- 邮件发送时机
ENABLE_NETSEND INT, -- 是否开启网络发送(仅Windows早期版本)
NETSEND_OPTR_NAME VARCHAR(128),-- 网络发送的操作员
NETSEND_TYPE INT, -- 网络发送时机
DESCRIBE VARCHAR(500) -- 作业描述
)
| 参数 | 取值范围 | 说明 |
|---|---|---|
| JOB_NAME | 字母、数字、_、-、$ | 首字符不能是数字,不能是DM关键字,同一库内唯一 |
| ENABLED | 0或1 | 1=启用,作业按调度执行;0=禁用,需手动触发 |
| ENABLE_EMAIL | 0或1 | 1=开启邮件通知;0=不发送邮件 |
| EMAIL_OPTR_NAME | 已存在的操作员名 | 邮件发给谁,必须先创建操作员 |
| EMAIL_TYPE | 0/1/2 | 0=执行成功时发送;1=执行失败时发送;2=执行完成(无论成败)时发送 |
| ENABLE_NETSEND | 0或1 | 1=开启网络发送;⚠️ 仅Windows 2000/XP支持,Win7/8/10/11已取消Messenger服务,该功能无效 |
| NETSEND_OPTR_NAME | 已存在的操作员名 | 网络消息发给谁 |
| NETSEND_TYPE | 0/1/2 | 同EMAIL_TYPE,控制网络消息发送时机 |
| DESCRIBE | 最长500字节 | 作业注释说明,方便日后维护 |
2.2 开始配置
CALL SP_JOB_CONFIG_START('JOB_CLEAN_LOG');
**2.3 添加作业步骤
**
CALL SP_ADD_JOB_STEP('JOB_CLEAN_LOG', 'STEP_CLEAN', 0,
'DELETE FROM OPER_LOG WHERE OPER_TIME < ADD_MONTHS(SYSDATE, -3); COMMIT;',
0, 0, 0, 0, NULL, 0);
添加作业步骤参数(SP_ADD_JOB_STEP):
步骤是作业的最小执行单元,一个作业可以有多个步骤,按顺序执行。
SP_ADD_JOB_STEP (
JOB_NAME VARCHAR(128), -- 作业名称
STEP_NAME VARCHAR(128), -- 步骤名称
TYPE INT, -- 步骤类型(核心参数)
COMMAND TEXT, -- 要执行的命令(与TYPE关联)
SUCC_ACTION INT, -- 成功后的动作
FAIL_ACTION INT, -- 失败后的动作
RETRY_ATTEMPTS INT, -- 失败重试次数
RETRY_INTERVAL INT, -- 重试间隔(秒)
OUTPUT_FILE_PATH VARCHAR(256), -- ⚠️ 已废弃,无实际意义
APPEND_FLAG INT -- ⚠️ 已废弃,无实际意义
)
步骤参数(TYPE)详解:
这是作业中最关键的参数,7种类型对应不同的操作能力:
| TYPE | 功能 | COMMAND格式 |
|---|---|---|
| 0 | 执行SQL语句/语句块 | 直接写SQL,多条用;分隔。 |
| 1 | V1.0版本备份还原(没有 WITHOUT LOG 和 PARALLEL 选项) | 见下方格式说明 |
| 2 | 重组数据库 | COMMAND无需填写,系统自动生成内部语句 |
| 3 | 更新统计信息 | COMMAND无需填写 |
| 4 | 执行DTS数据迁移 | 指定DTS配置文件路径 |
| 5 | V1.0版本备份还原(有WITHOUT LOG选项) | 见下方格式说明 |
| 6 | V2.0版本备份还原 | 见下方格式说明(推荐使用) |
TYPE=0 的COMMAND格式:
-- 多条语句用分号分隔
COMMAND = 'DELETE FROM T1 WHERE STATUS=0; COMMIT; CALL SP_UPDATE_STATS();'
TYPE=1 的COMMAND格式:
格式:[备份模式][压缩类型][路径]
第1位:0=完全备份,1=增量备份
第2位:0=不压缩,1=压缩
第3位起:备份路径
'01E:\backup\full' -- 完全备份+压缩,指定路径
'10E:\base_bak1,base_bak2|inc_bak' -- 增量备份(逗号分隔基础备份,|后为目标路径)
TYPE=6 的COMMAND格式:
格式:[备份模式][压缩级别][日志][并行数][USE_PWR][MAXPIECESIZE][归档删除][保留][路径]
| 位序 | 参数 | 取值范围 | 说明 |
|---|---|---|---|
| 1 | 备份模式 | 0/1/3/4 | 0=完全,1=差异增量,3=归档备份,4=累积增量 |
| 2 | 压缩级别 | 0~9 | 0=不压缩,数字越大压缩比越高 |
| 3 | 备份日志 | 0/1 | 0=备份日志,1=不备份 |
| 4 | 并行数 | 0~9 | 1=使用默认值4,2-9=指定并行数 |
| 5 | USE_PWR | 0/1 | 并行备份时优化增量备份 |
| 6 | MAXPIECESIZE | 0~9 | 0=默认(32位2G/64位4G),1=128M,2=256M…9=32G |
| 7 | 归档删除 | 0/1 | 0=保留归档,1=备份完成后删除归档 |
| 8 | 保留位 | 0 | 固定填0 |
| 9 | 路径 | 文件路径 | 基础备份路径用逗号隔开,与目标路径用 |
'10000000E:\backup\full' -- 完全备份+不压缩+备份日志+单线程+默认片大小
'11110000E:\base_bak|inc_bak' -- 增量备份+压缩+不备份日志+并行4+自适应增量备份
2.4 添加调度
配置每日凌晨2点执行:
CALL SP_ADD_JOB_SCHEDULE('JOB_CLEAN_LOG', 'SCHED_DAILY', 1, 1, 1, 0, 0,
'02:00:00', NULL, SYSDATE, NULL, '每日凌晨2点执行');
参数说明:TYPE=1表示按天执行,FREQ_INTERVAL=1表示每天,FREQ_MINUTE_INTERVAL=0表示一天执行一次。
添加作业调度参数(SP_ADD_JOB_SCHEDULE):
调度是作业的定时触发器,控制作业何时执行。
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) -- 调度描述
)
调度类型(TYPE)详解:
| TYEPE | 含义 | 配合参数 |
|---|---|---|
| 0 | 执行一次 | 由DURING_START_DATE决定执行日期和时间 |
| 1 | 按天执行 | FREQ_INTERVAL=每N天;FREQ_MINUTE_INTERVAL=日内频率 |
| 2 | 按周执行 | FREQ_INTERVAL=每N周;FREQ_SUB_INTERVAL=周几执行 |
| 3 | 每月某日执行 | FREQ_INTERVAL=每N个月;FREQ_SUB_INTERVAL=每月几号(1-31) |
| 4 | 每月第一周第N天 | FREQ_SUB_INTERVAL=1-7(周日~周六) |
| 5 | 每月第二周第N天 | 同上 |
| 6 | 每月第三周第N天 | 同上 |
| 7 | 每月第四周第N天 | 同上 |
| 8 | 每月最后一周第N天 | 同上 |
FREQ_SUB_INTERVAL 的位运算规则:
每周可同时选多天执行,用7位二进制表示:
位序: 6 5 4 3 2 1 0
含义: 周六 周五 周四 周三 周二 周一 周日
示例:
仅周日:0000001
仅周一:0000010
周一和周三:0001010
周六和周日(周末): 1000001
时间范围参数:
| 参数 | 格式 | 说明 |
|---|---|---|
| STARTTIME | HH:MI:SS | 每日开始时间。TYPE=0时无效 |
| ENDTIME | HH:MI:SS | 每日结束时间。可跨天(如23:00:00开始,01:00:00结束) |
| DURING_START_DATE | YYYY-MM-DD 或 YYYY-MM-DD HH:MI:SS | 调度生效起始日期,必填 |
| DURING_END_DATE | 同上 | 调度生效结束日期,可为空(永久有效) |
2.5 提交配置
CALL SP_JOB_CONFIG_COMMIT('JOB_CLEAN_LOG');
所有配置必须在 START 和 COMMIT 之间完成。
三、作业管理参数速查表
暂停作业:SP_ENABLE_JOB(‘JOB_NAME’, 0) 0=禁用,1=启用
修改作业属性:SP_ALTER_JOB(…) 参数同SP_CREATE_JOB
修改步骤:SP_ALTER_JOB_STEP(…) 参数同SP_ADD_JOB_STEP
修改调度:SP_ALTER_JOB_SCHEDULE(…) 参数同SP_ADD_JOB_SCHEDULE
删除步骤:SP_DROP_JOB_STEP(‘JOB’,‘STEP’) 若其他步骤依赖,需先解除依赖
删除调度:SP_DROP_JOB_SCHEDULE(‘JOB’,‘SCHED’) —
删除作业:SP_DROP_JOB(‘JOB_NAME’) 级联删除所有步骤和调度
立即执行:SP_DBMS_JOB_RUN(JOB_ID) 需先查询作业ID
停止作业:SP_STOP_RUNNING_JOB(JOB_ID) 停止当前运行的作业会话
查看日志:SELECT * FROM SYSJOB.SYSJOBHISTORIES2 作业维度
查看执行日志:SELECT * FROM SYSJOB.SYSSTEPHISTORIES2
清理日志:SP_JOB_CLEAR_HISTORIES(‘JOB’, ‘BEFORE_TIME’) 第二个参数可为空
文章
阅读量
获赞
