1、创建Job
1.1、查询当前用户是否有创建Job权限
--查询是否有Job权限
select * from session_privs where PRIVILEGE like '%JOB%';
--授予当前用户创建Job权限
GRANT create any job to 用户名;
1.2、创建Job
创建测试表
create table demo (demo_time date);
创建job
-- 使用DBMS_SCHEDULER创建JOB
BEGIN
sys.dbms_scheduler.create_job (
--job名称
job_name => 'QUERY_DUAL',
--job类型
job_type => 'PLSQL_BLOCK',
-- 存储过程名
job_action => 'begin
insert into demo values (SYSDATE);
end;',
-- 开始执行时间
start_date => SYSDATE,
--下次执行时间:每天15点30、35 执行
repeat_interval => 'Freq=Daily;Interval=1;ByHour=15;ByMinute=30,35;BySecond=00',
end_date => TO_DATE (NULL),
job_class => 'DEFAULT_JOB_CLASS',
enabled => TRUE,
-- job禁用后是否自动删除
auto_drop => FALSE,
comments => '查询当前时间'
) ;
END ;
/
-- 启用job
BEGIN
dbms_scheduler. ENABLE (
'QUERY_DUAL'
) ;
END ;
/
2、使用Job
-- 手动运行job
begin
dbms_scheduler.run_job('QUERY_DUAL');
end;
/
-- 手动启动job
begin
dbms_scheduler.enable('QUERY_DUAL');
end;
/
-- 禁用job
begin
dbms_scheduler.disable('QUERY_DUAL');
end;
/
-- 删除job
begin
dbms_scheduler.drop_job('QUERY_DUAL');
end;
3、查看Job
-- 查看job信息
select * from user_scheduler_jobs;
-- 查看job日志
SELECT * from user_scheduler_job_log where job_name = 'QUERY_DUAL';
--查看job运行日志
SELECT * from user_scheduler_job_run_details;