ORACLE 建立作業JOB例子

2021-06-27 13:18:28 字數 3223 閱讀 5781

--1.plsql中學習job   

--學習job

--建表

create table test_job(para_date date);

commit;

insert into test_job values(sysdate);

commit;

select * from test_job;

--建立存貯過程

create or replace procedure test_jobproce as

begin

insert into test_job values(sysdate);

end test_jobproce;

--建立job

--建立job後預設是執行的

declare test_job_really number;

begin

dbms_job.submit(test_job_really,'test_jobproce;',sysdate,'sysdate+1/1440');

commit;

end;

---停止job 25是建立的job test_job_really

begin

dbms_job.broken(25,true);

commit;

end;

--啟動job

begin

dbms_job.run(25);

commit;

end;

--刪除job

begin

dbms_job.remove(25);

commit;

end;

--檢視執行結果

select * from test_job order by test_job.para_date desc;

--檢視job

select * from sys.user_jobs

--使用下面的sql查詢是否job還在running,前提是需要job執行時間不能過短

select * from dba_jobs_running

--除了submit引數外,其餘的幾個引數有:

--執行job

dbms_job.run(v_job);

--停止乙個job,裡面引數true也可是false,next_date(某一時刻停止)也可是sysdate(立刻停止)。

dbms_job.broke(v_job,true,next_date);

--刪除某個job

dbms_job.remove(v_job);

dbms_job.what(v_job,'sp_fact_charge_code;');

--修改某個job名 修改下一次執行時間

dbms_job.next_date(v_job,sysdate);

第天1點執行的乙個job示例:

declare

x number;

begin

sys.dbms_job.submit

( job => x

,what => 'syn_rpt_members_relation;'

,next_date => to_date('02-07-2008 01:00:00','dd/mm/yyyy hh24:mi:ss')

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

,no_parse => false

);sys.dbms_output.put_line('job number is: ' || to_char(x));

commit;

end;

/以上是明確指定每天的1點執行此job,如果指定是每天中午12點執行interval需要指定為 'trunc(sysdate)+1+12/24',如果僅僅指定interval為一天,這樣當你手工用dbms_job.run(job)去執行一次時,job每天的執行時間是會改變的,如果你想job每天在固定時間執行,可以參考上面的例子.

描述 interval引數值:

每天午夜12點 'trunc(sysdate + 1)'

每天早上8點30分 'trunc(sysdate + 1) + (8*60+30)/(24*60)'

每星期二中午12點 'next_day(trunc(sysdate ), ''tuesday'' ) + 12/24'

每個月第一天的午夜12點 'trunc(last_day(sysdate ) + 1)'

每個季度最後一天的晚上11點 'trunc(add_months(sysdate + 2/24, 3 ), 'q' ) -1/24'

每星期六和日早上6點10分 'trunc(least(next_day(sysdate, ''saturday"), next_day(sysdate, "sunday"))) + (6×60+10)/(24×60)'

1:每分鐘執行

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

或interval => 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點執行

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

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...

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 or re...

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 or re...