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