Oracle定時任務之Job和Dbms job

2022-05-18 19:59:48 字數 2598 閱讀 9521

感謝老哥,解決了我的疑惑

oralce中的任務有2種:job和dbms_job,兩者的區別有:

1. jobs是oracle資料庫的物件, dbms_jobs只是jobs物件的乙個例項, 就像對於tables, emp和dept都是表的例項。

2. 建立方式也有差異,job是通過呼叫dbms_scheduler.create_job包建立的,dbms_job則是通過呼叫dbms_job.submit包建立的。

3. 兩種任務的查詢檢視都分為dba和普通使用者的,job對應的查詢檢視是dba_scheduler_jobs和user_scheduler_jobs,dbms_jobs對應的查詢檢視為dba_jobs和user_jobs。

這裡主要是介紹dbms_job。

1、 建立job:

begin

dbms_job.submit(

job out binary_interger,--輸出變數,是此任務在任務佇列中的編號,也可以自定義,一般不傳

what in varchar2,--執行的任務的名稱及其輸入引數

next_date in date default sysdate,--任務執行的時間

interval in varchar2 default null,--任務執行的時間間隔

no_parse in boolean default false,--用於指定是否需要解析與作業相關的過程

instance in binary_integer default any_instance,--用於指定哪個例程可以執行作業

force in boolean default false--用於指定是否強制執行與作業相關的例程

);end

例項,注意,這裡執行的儲存過程後面需要有 ';'結尾
jobnum number;

begin

dbms_job.submit(jobnum,'refresh_clinic_vs_insurance;',sysdate,'sysdate+30/1440',false);

end;

新手可以使用視窗建立:

2、刪除job: dbms_job.remove(jobno); -- jobno任務號

3、修改要執行的操作: job:dbms_job.what(jobno, what); --指定任務號以及儲存過程

6、改變與作業相關的所有資訊,包括作業操作,作業執行日期以及執行時間間隔等.

dbms_job.change(

job in binary_integer,

what in varchar2,

next_date in date,

interval in varchar2,

instance in binary_integer default null,

force in boolean default false

);

例子:dbms_job.change(2,null,null,'sysdate+2');

6、啟動job: dbms_job.run(jobno); --指定任務號啟動

7、停止job: dbms.broken(jobno, broken, nextdate); –broken為boolean值 n代表啟動,y代表沒啟動(stop)

間隔/interval是指上一次執行結束到下一次開始執行的時間間隔,當interval設定為null時,該job執行結束後,就被從佇列中刪除。假如我們需要該job周期性地執行,則要用『sysdate+m』表示。

(1)每分鐘執行

interval => trunc(sysdate,'mi') + 1/ (24*60) –或sysdate+1/1440

(2)每天定時執行

例如:每天的凌晨1點執行

interval => trunc(sysdate+ 1) +1/ (24)

(3)每週定時執行

例如:每週一凌晨1點執行

interval => trunc(next_day(sysdate,'星期一'))+1/24

(4)每月定時執行

例如:每月1日凌晨1點執行

interval =>trunc(last_day(sysdate))+1+1/24

(5)每季度定時執行

例如每季度的第一天凌晨1點執行

interval => trunc(add_months(sysdate,3),'q') + 1/24

(6)每半年定時執行

例如:每年7月1日和1月1日凌晨1點

interval => add_months(trunc(sysdate,'yyyy'),6)+1/24

(7)每年定時執行

例如:每年1月1日凌晨1點執行

Oracle定時任務Job

建立測試用表 create table tb job job name varchar2 5 update dt varchar2 20 新增多個oracle job來併發執行 declare job name varchar2 20 begin dbms output.put line curre...

oracle中定時任務job

oracle中的job能為你做的就是 在你規定的時間格式裡定時執行儲存過程,定時執行乙個任務 建立job及執行 variable job2010 number begin dbms job.submit job2010,spgenchanneluseroneday sysdate,sysdate 1...

Oracle中的job定時任務

1.plsql中學習job 學習job 建表 create table test job para date date commit insert into test job values sysdate commit select from test job 建立存貯過程 create orrep...