SVRMGR> select * from dba_jobs;
初始化相關(guān)參數(shù)job_queue_processes
alter system set job_queue_processes=39 scope=spfile;//最大值不能超過1000 ;job_queue_interval = 10 //調(diào)度作業(yè)刷新頻率秒為單位
DBA_JOBS describes all jobs in the database.
USER_JOBS describes all jobs owned by the current user
1 select job,what,to_char(last_date,'yyyy-mm-dd HH24:mi:ss'),to_char(next_date,'yyyy-mm-dd HH24:m),interval from dba_jobs where job in (325,295)
2 select job,what,last_date,next_date,interval from dba_jobs where job in (1,3);
查詢job的情況。
show paramter background_dump_dest.
看alter.log 和trace
SVRMGR> select * from dba_jobs;
初始化相關(guān)參數(shù)job_queue_processes
alter system set job_queue_processes=39 scope=spfile;//最大值不能超過1000
job_queue_interval = 10 //調(diào)度作業(yè)刷新頻率秒為單位
DBA_JOBS describes all jobs in the database.
USER_JOBS describes all jobs owned by the current user
1 select job,what,to_char(last_date,'yyyy-mm-dd HH24:mi:ss'),to_char(next_date,'yyyy-mm-dd HH24:m),interval from dba_jobs where job in (325,295)
2 select job,what,last_date,next_date,interval from dba_jobs where job in (1,3);
查詢job的情況。
show paramter background_dump_dest.
看alter.log 和trace
請(qǐng)問我如何停止一個(gè)JOB
SQL> exec dbms_job.broken(1,true)
PL/SQL 過程已成功完成。
SQL>commit //必須提交否則無效
啟動(dòng)作業(yè)
SQL> exec dbms_job.broken(1,false)
PL/SQL 過程已成功完成。
停其他用戶的job
SQL>exec sys.dbms_ijob.broken(98,true);
SQL>commit;
============================
exec dbms_job.broken(:job) 停止
exec dbms_job.broken(186,true) //標(biāo)記位broken
exec dbms_job.broken(186,false)//標(biāo)記為非broken
exec dbms_job.broken(186,false,next_day(sysdate,'monday')) //標(biāo)記為非broken,指定執(zhí)行時(shí)間
exec dbms_job.remove(:job);刪除
exec dbms_job.remove(186);
commit;
把一個(gè)broken job重新運(yùn)行
三、查看相關(guān)job信息
1、相關(guān)視圖
dba_jobs
all_jobs
user_jobs
dba_jobs_running 包含正在運(yùn)行job相關(guān)信息
創(chuàng)建JOB
variable jobno number;
begin
dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);
commit;
end;
print jobno
例如,我們已經(jīng)建立了一個(gè)存儲(chǔ)過程,其名稱為my_job,在sql/plus中以scott用戶身份登錄,執(zhí)行如下命令:
sql> variable n number;
sql> begin
dbms_job.submit(:n‘my_job;’,sysdate,
‘sysdate+1/360’);
commit;
end;
Sql> print :n;
系統(tǒng)提示執(zhí)行成功。
Sql> print :n;
系統(tǒng)打印此任務(wù)的編號(hào),例如結(jié)果為300。
簡單例子
一個(gè)簡單例子:
創(chuàng)建測(cè)試表
SQL> create table TEST(a date);
表已創(chuàng)建。
創(chuàng)建一個(gè)自定義過程
SQL> create or replace procedure MYPROC as
2 begin
3 insert into TEST values(sysdate);
4 end;
5 /
過程已創(chuàng)建。
創(chuàng)建JOB
SQL> variable job1 number;
SQL>
SQL> begin
2 dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440'); --每天1440分鐘,即一分鐘運(yùn)行test過程一次
3 end;
4 /
PL/SQL 過程已成功完成。
運(yùn)行JOB
SQL> begin
2 dbms_job.run(:job1);
3 end;
4 /
PL/SQL 過程已成功完成。
SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 時(shí)間 from TEST;
時(shí)間
-------------------
2001/01/07 23:51:21
2001/01/07 23:52:22
2001/01/07 23:53:24
刪除JOB
SQL> begin
2 dbms_job.remove(:job1);
3 end;
4 /
PL/SQL 過程已成功完成。
=======================================
a、利用dbms_job.run()立即執(zhí)行該job
sql>begin
sql>dbms_job.run(:jobno) 該jobno為submit過程提交時(shí)返回的job number
sql>end;
sql>/
b、利用dbms_job.broken()重新將broken標(biāo)記為false
sql>begin
sql>dbms_job.broken (:job,false,next_date)
sql>end;
sql>/
========================================
SQL> create table a(a date);
Table created
創(chuàng)建一個(gè)過程
SQL> create or replace procedure test as
2 begin
3 insert into a values(sysdate);
4 end;
5 /
Procedure created
提交作業(yè)
SQL> declare
2 job1 number; //定義一個(gè)數(shù)字型變量
3 begin
4 dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/1440'); //按分鐘算一天1440分鐘
5 end;
6 /
PL/SQL procedure successfully completed
job1
---------
4
SQL> commit;
Commit complete
運(yùn)行作業(yè)
SQL> begin
2 dbms_job.run(4);
3 end;
4 /
PL/SQL procedure successfully completed
刪除作業(yè)
SQL> begin
2 dbms_job.remove(4);
3 end;
4 /
PL/SQL procedure successfully completed
SQL> commit;
Commit complete
job change//修改作業(yè)
execute dbms_job.change(186,null,null,'sysdate+3');
execute dbms_job.change(186,'scott.test(update)');
DBA_JOBS
===========================================
字段(列) 類型 描述
JOB NUMBER 任務(wù)的唯一標(biāo)示號(hào)
LOG_USER VARCHAR2(30) 提交任務(wù)的用戶
PRIV_USER VARCHAR2(30) 賦予任務(wù)權(quán)限的用戶
SCHEMA_USER VARCHAR2(30) 對(duì)任務(wù)作語法分析的用戶模式
LAST_DATE DATE 最后一次成功運(yùn)行任務(wù)的時(shí)間
LAST_SEC VARCHAR2(8) 如HH24:MM:SS格式的last_date日期的小時(shí),分鐘和秒
THIS_DATE DATE 正在運(yùn)行任務(wù)的開始時(shí)間,如果沒有運(yùn)行任務(wù)則為null
THIS_SEC VARCHAR2(8) 如HH24:MM:SS格式的this_date日期的小時(shí),分鐘和秒
NEXT_DATE DATE 下一次定時(shí)運(yùn)行任務(wù)的時(shí)間
NEXT_SEC VARCHAR2(8) 如HH24:MM:SS格式的next_date日期的小時(shí),分鐘和秒
TOTAL_TIME NUMBER 該任務(wù)運(yùn)行所需要的總時(shí)間,單位為秒
BROKEN VARCHAR2(1) 標(biāo)志參數(shù),Y標(biāo)示任務(wù)中斷,以后不會(huì)運(yùn)行
INTERVAL VARCHAR2(200) 用于計(jì)算下一運(yùn)行時(shí)間的表達(dá)式
FAILURES NUMBER 任務(wù)運(yùn)行連續(xù)沒有成功的次數(shù)
WHAT VARCHAR2(2000) 執(zhí)行任務(wù)的PL/SQL塊
CURRENT_SESSION_LABEL RAW MLSLABEL 該任務(wù)的信任Oracle會(huì)話符
CLEARANCE_HI RAW MLSLABEL 該任務(wù)可信任的Oracle最大間隙
CLEARANCE_LO RAW MLSLABEL 該任務(wù)可信任的Oracle最小間隙
NLS_ENV VARCHAR2(2000) 任務(wù)運(yùn)行的NLS會(huì)話設(shè)置
MISC_ENV RAW(32) 任務(wù)運(yùn)行的其他一些會(huì)話參數(shù)
描述 INTERVAL參數(shù)值
每天午夜12點(diǎn) 'TRUNC(SYSDATE + 1)'
每天早上8點(diǎn)30分 'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'
每星期二中午12點(diǎn) 'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'
每個(gè)月第一天的午夜12點(diǎn) 'TRUNC(LAST_DAY(SYSDATE ) + 1)'
每個(gè)季度最后一天的晚上11點(diǎn) 'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'
每星期六和日早上6點(diǎn)10分 'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)'