乙個簡單例子:
建立測試表
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檔案
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...
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 過程已建立。建立job sql ...