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;