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

2022-04-09 12:05:28 字數 2727 閱讀 3743

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

建立測試表 

sql> create table a(a date); 

www.2cto.com  

表已建立。 

建立乙個自定義過程 

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

www.2cto.com  

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; 

www.2cto.com  

----------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); 

修改下次執行時間:dbms_job.next_date(job,next_date); 

修改間隔時間:dbms_job.interval(job,interval); 

停止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;   www.2cto.com  

-----修改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檔案 

www.2cto.com  

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