ORACLE建立定時任務及定時任務不執行的原因

2021-09-25 03:05:19 字數 1675 閱讀 6697

1、首先建立一張表 該錶用來執行插入資料。

create table getsysdate(test date);

2、建立儲存過程以插入資料。

create or replace procedure insertsysdate as 

begin 

insert into getsysdate values (sysdate);

end ;

3、建立job設定定時

declare

job1 number;

begin

dbms_job.submit(job1,'insertsysdate;',to_date('2019-07-09 15:55:00','yyyy-mm-dd hh24:mi:ss'),'sysdate+1/1440');

commit;

end;

以上為所建立的job,job1為job名稱 ,insertsysdate為儲存過程名稱,to_date('2019-07-09 15:55:00','yyyy-mm-dd hh24:mi:ss')這段為儲存過程下次執行時間,'sysdate+1/1440' 這段為儲存過程執行時間間隔。

當我把以上所有的步驟都走完之後,發現表中並沒有新的資料,然後我又通過"select * from dba_jobs"該語句檢視新建的job,發現job是已經建立成功了的,不過上次執行時間為空。

4、而後我又通過以下語句執行job,看是否有問題。

begin

dbms_job.run(9);

end;

執行過後發現表中有資料,那就是job沒什麼問題,但是系統中可能有些地方沒設定正確。

5、然後我又通過以下語句修改job下次執行時間,改完當前時間後的幾分鐘,幾分鐘後,發現還是沒有執行成功。

begin

dbms_job.next_date(9, to_date('2019-07-09 16:30:00','yyyy-mm-dd hh24:mi:ss'));

end;

6、最後在網上查詢原因,發現了乙個哥們的部落格,真的是救命。

select value from v$parameter where name like '%job_queue_processes%' 

該語句可以檢視你的當前使用者下執行job的臨界值,當我檢視之後發現為0,也就是說我的job乙個都不能執行。

於是我果斷用以下語句將臨界值修改為100。

alter system set job_queue_processes =100;

然後發現我的job已經開始自動執行了,應該是這個臨界值預設就是0,而後需要自己修改,真的是個大坑,浪費了我一下午的時間。

最近又出現了乙個大坑  就是 我手動執行job的時候 會出現以下的錯誤

而後,我在sys下面建立job,在sys下面執行job,發現執行是成功的,這時候發現可能是許可權的問題,於是又給我當前使用者賦予執行job的許可權。

grant create job to orace_user1;

grant manage scheduler to orace_user1;

grant execute on dbms_job to user;

最主要的是下面的那個 給使用者賦予當前使用者可以執行儲存過程的許可權。

oracle建立定時任務

oracle建立三個定時任務,每個小時呼叫一次report hour,每天呼叫一次report day,每個月呼叫一次report month declare job1 number job2 number job3 number begin sys.dbms job.submit job job1...

Oracle建立定時任務

開啟命令列操作一下步驟 1 sqlplus as sysdba 2 conn 使用者名稱 密碼 3 variable job num 4 begin dbms job.submit job num,testjob trunc sysdate 23 24,trunc sysdate 23 24 end...

Oracle建立定時任務

開啟命令列操作一下步驟 1 sqlplus as sysdba 2 conn 使用者名稱 密碼 3 variable job num 4 begin dbms job.submit job num,testjob trunc sysdate 23 24,trunc sysdate 23 24 end...