oracle實現每天定時執行乙個計畫任務

2021-08-27 06:05:31 字數 2384 閱讀 2757

建立測試表

sql> create table a(a date);

表已建立。

建立乙個自定義過程

sql> create or replace procedure test as

2 begin

3 insert into a values(sysdate);

4 end;

5 /過程已建立。

建立job

sql> variable job1 number;

sql>

sql> begin

2 dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/1440');  --每天1440分鐘,即一分鐘執行test過程一次

3 end;

4 /pl/sql 過程已成功完成。

執行job

sql> begin

2 dbms_job.run(:job1);

3 end;

4 /pl/sql 過程已成功完成。

sql> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 時間 from a;

時間-------------------

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 過程已成功完成。

select job,to_char(next_date,'yyyy-mm-dd hh24:mi:ss') from all_jobs;

----------job的使用:

dbms_job.submit(:jobno,//job號

'your_procedure;',//要執行的過程

trunc(sysdate)+1/24,//下次執行時間

'trunc(sysdate)+1/24+1'//每次間隔時間

);刪除job:dbms_job.remove(jobno);

修改要執行的操作:job:dbms_job.what(jobno,what);

停止job:dbms.broken(job,broken,nextdate);

啟動job:dbms_job.run(jobno);

例子:variable jobno number;

begin

dbms_job.submit(:jobno,

'procdemo;',//procdemo為過程名稱

sysdate, 'sysdate + 1/720');

commit;

end;

-----修改job_queue_processes的值(保證其不為0否則job不自動執行)

可通過select * from v$parameter;檢視其值;

方法1,startup pfile='c:/oracle/ora90/database/initorcl.ora';

需要修改initorcl.ora檔案的job_queue_processes引數,然後重新啟動資料庫以後才能生效

方法2,alter system set job_queue_processes=10

不需要重新啟動資料庫就能生效,系統自動修改init.ora檔案

1)、 每分鐘執行

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

2)、 每天定時執行

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

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

3)、 每週定時執行

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

interval => trunc(next_day(sysdate,2))+2/24 --星期一,一周的第二天

4)、 每月定時執行

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

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

5)、 每季度定時執行

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

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

6)、 每半年定時執行

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

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

7)、 每年定時執行

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

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

oracle怎麼實現每天定時執行乙個計畫任務

乙個簡單例子 建立測試表 sql create table a a date 表已建立。建立乙個自定義過程 sql create or replace procedure test as 2 begin 3 insert into a values sysdate 4 end 5 過程已建立。建立j...

oracle怎麼實現每天定時執行乙個計畫任務

可以在儲存過程裡判斷一下當前的時間 select sysdate into sys date from dual 如果在8 00 18 00範圍內就做,如果不在就null 然後提交乙個作業,每一小時做一次。乙個簡單例子 建立測試表 sql create table a a date 表已建立。建立乙...

python定時執行 每天

以下 實現了python的每天定時執行 import datetime import time import pymysql def dosth print test conn pymysql.connect host 192.0.9.169 port 5507,user writer passwd...