oracle终止dbms调度,Oracle使用DBMS_JOB创建的数据库作业,遇到数据库关闭状态的调度...
對SQL Server熟悉的朋友,應該都知道,SQL Server的作業是按照固定時刻來設置調度的,比如設置為每日23:00運行,如果此時,恰逢服務器關機,或者SQLServerAgent服務不在運行,則本次作業將不會執行,直到下次滿足調度條件再執行.
而Oracle的JOB是按照調度公式來設置下次執行時刻的.讓我們來測試一下Oracle的JOB遇到關機或者數據庫關閉的情況吧.
----創建表:
create table bak_testJob(runtime date);
----創建存儲過程:
create or replace procedure bak_testJob_Proc
is
begin
insert into bak_testJob values(sysdate);
end ;
----調用存儲過程測試:
begin
bak_testJob_Proc;
end ;
----測試成功(select 有結果),清空表:
delete from bak_testJob;
----創建作業(PL/SQL Developer交互界面創建)下面是相關操作對應的"View SQL"的結果:
begin
sys.dbms_job.submit(job => :job,
what => 'bak_testJob_Proc;',
next_date => to_date('10-10-2011 19:15:00', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'sysdate+5/1440');
commit;
end;
/
----創建的JobID是101
----此時:19:09:45
19:10:00 停服務,模擬關機
19:19:35 開服務(僅啟動主服務,監聽服務,Agent服務,此處說明一下,Oracle9i一定要開啟Agent服務,而Oracle10g則可以不啟動OracleJobSchedule服務)
select * from bak_testJob;
結果:2011-10-10 19:19:38
看101作業:
Last date:2011-10-10 19:19:35
Next date:2011-10-10 19:24:37
----刪除Job(PL/SQL Developer交互界面進行刪除,語句略)
----刪除procedure和table
drop procedure bak_testJob_Proc
select * from bak_testjob
1 2011-10-10 19:24:39
2 2011-10-10 19:19:38
drop table bak_testJob
----結論:Oracle會在數據庫啟動后,馬上將應該調度的Job補充執行,此后按間隔公式定時調度
看來,與SQL Server跳過了本次作業調度不同,Oracle會記得補上.
另外,說明一點,作業是使用的dbms_job來創建的,不是使用Oracle10g新的dbms_schedule來創建的,所以,與OracleJobSchedule$SID服務的狀況是無關的.
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的oracle终止dbms调度,Oracle使用DBMS_JOB创建的数据库作业,遇到数据库关闭状态的调度...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab电话拨号音的合成与识别代码,
- 下一篇: oracle+事务开始+结束,Oracl