1、建立job
variable
number;
begin
sys.dbms_job.submit(job => :jobno,
'your_procedure1;
your_procedure2;',
next_date => to_date(
'20080918 18:50:00'
'yyyymmdd hh24:mi:ss'),
interval
'sysdate+1/24');
commit;
end;
/ 2、刪除job
print jobno;
begin
dbms_job.remove(:jobno);
commit;
end;
/ 3、其他操作:
修改要執行的操作:dbms_job.what(jobno,what);
停止job:dbms.broken(job,broken,nextdate);
啟動job:dbms_job.run(jobno);
修改job_queue_processes的值:
可通過select * from v$parameter;檢視其值;
或者直接用show parameter job_queue_processes;檢視如下:
name type value
--------------- ----------- ------------
job_queue_processes integer 10
方法1.startup pfile='c: oracleora90databaseinitorcl.ora';
//這個方法用來修改initorcl.ora檔案的job_queue_processes引數,然後重新啟動資料庫
方法2.alter system set job_queue_processes=10
//這個方法不用重啟資料庫就可以生效,系統自動修改init.ora檔案以後即可生效 。
注意:保證引數不為0,否則job不自動執行
4、時間間隔偏移的問題:
sql> create table t10 (a int ,b date);
table created
sql> create or replace procedure k
2 as
3 i int := 0;
4 begin
5 insert into t10 values(i,sysdate);
6 commit;
7 end;
8 /
procedure created
sql> begin
2 sys.dbms_job.submit(job => :jobno,
3 what => 'k;',
4 next_date => to_date(sysdate),
5 interval => 'sysdate+1/1440');
6 commit;
7 end;
8 /
pl/sql procedure successfully completed
jobno
---------47
sql> column b format a30
sql> column a
發現雖然設定了每分鐘執行一次,但是每次執行時間是在向後偏移
所以需要進行調整,將job建為如下:
sql> begin
2 dbms_job.remove(:jobno);
3 commit;
4 end;
5 /
pl/sql procedure successfully completed
jobno
---------
47sql> begin
2 sys.dbms_job.submit(job => :jobno,
3 what => 'k;',
4 next_date => to_date(sysdate),
5 interval => 'trunc(sysdate,''mi'')+1/1440');
6 commit;
7 end;
8 /
pl/sql procedure successfully completed
jobno
---------
48sql> truncate table t10;
table truncated
sql> select * from t10;
a b----- ------------------------------
0 2008-9-18 17:19:02
0 2008-9-18 17:20:03
0 2008-9-18 17:21:04
0 2008-9-18 17:22:01
0 2008-9-18 17:23:02
雖然秒數還是有稍微的不同,這是由於每次job的執行時間所致
但是不會像之前一樣一直往後偏移。
Job特性及解決時間偏移
1 建立job variable number begin sys.dbms job.submit job jobno,your procedure1 your procedure2 next date to date 20080918 18 50 00 yyyymmdd hh24 mi ss in...
PL SQL中job建立及刪除
plsql中學習job 學習job 建表 create table test job para date date commit insert into test job values sysdate commit select from test job 建立存貯過程 create orrepla...
設定Sql Agent執行Job時的執行賬戶
相信使用過sql server的人都應該知道,使用sql agent可以建立一些自動化job來幫我們周期性地執行一些任務,其中執行ssis包就是其中乙個任務。而在ssis包中有時候會去做讀取檔案等一些本地化操作,如果執行sql agent任務的執行賬戶許可權不夠有可能造成ssis包無法讀取檔案執行失...