文章目录
1 概述
1. dbms_scheduler 包概念: "分而治之"
(1) 替代了之前的 dbms_job 包,功能更加强大,可以将 job 需要的 '各种资源分开再进行组合'
(2) 核心三要素:'schedule', 'program' 和 'job' 其它都是围绕它们来的
(3) 除了单个 job,还能设置 job 组
2. 主要视图
(1) 基础信息查询
select * from dba_scheduler_programs t;
select * from dba_scheduler_program_args t; -- 过程参数
select * from dba_scheduler_schedules t;
select * from dba_scheduler_jobs t;
(2) 执行信息查询
select * from dba_scheduler_running_jobs t;
select * from dba_scheduler_job_log t;
select * from dba_scheduler_job_run_details t;
3. 说明:目前仅整理自己用过的,后续有有用到再继续补充 ^_^
基础数据:记录定时任务执行结果
create table scott.dbms_scheduler_test (
message varchar2(100),
create_date date);
create or replace procedure scott.p_dbms_scheduler_test as
begin
insert into scott.dbms_scheduler_test
(message, create_date)
values
('dbms_scheduler', sysdate);
commit;
end;
1.1 思维导图
dbms_scheduler 包头中有全部的过程和方法及说明:
2 语法
2.1 核心三要素
2.1.1 program 程序
-- 项目管理程序 Program Administration Procedures
procedure create_program(
program_name in varchar2, -- 程序名称
program_type in varchar2, -- 类型,详见 "核心属性"
program_action in varchar2, -- 动作,详见 "核心属性"
number_of_arguments in pls_integer default 0, -- 参数个数
enabled in boolean default false, -- 是否立即启用
comments in varchar2 default null); -- 备注
-- 备注信息特别说明 enabled = true 立即启用,false 不立即启用 以下同理
(1) false: 如果创建的程序需要输入参数(number_of_arguments >= 1),则必须定义完参数后在激活(enabled => false)
(2) true : 如果创建的程序不需要参数,则均可
创建程序:create_program
begin
dbms_scheduler.create_program(
program_name => 'DBMS_SCHEDULER_PROGRAM_TEST',
program_type => 'STORED_PROCEDURE',
program_action => 'SCOTT.P_DBMS_SCHEDULER_TEST',
comments => '调用过程测试');
end;
删除程序:drop_program
begin
dbms_scheduler.drop_program(
program_name => 'DBMS_SCHEDULER_PROGRAM_TEST'