Oracle作业队列入门图文解说
? ? 在 Oracle 中,是使用 “作業隊列協調進程(CJQ0)” 這個協調數據庫實例的作業隊列的后臺進程,來監視作業隊列中的作業表(JOB$),并啟動作業隊列進程(Jnnn)。而當需要執行作業的時候,作業隊列Jnnn 將會執行由 DBMS_JOBS 包創建的作業請求。
1 首先查看一下作業相關的信息;
? ? 當前沒有作業,select * from user_jobs顯示為空;
2 在sql developer中創建一個存儲過程,用于插入一條數據到emp表;
create or replace procedure insert_emp as?
begin
insert into emp(empno,ename) values('8000','Simth');
end insert_emp;
3 在sql plus中,連接到scott用戶,查看一下存儲過程; 新建的存儲過程insert_emp已經出來了;
4 根據網上資料,用系統包dbms_job的submit來提交一個作業,調度執行insert_emp;?
輸入錯誤一次;
5 再次輸入,爭取;
job1為作業編號;insert_emp是要執行的過程名;
按網上資料,sysdate+1/1440 為每分鐘執行一次,那么sysdate+2/1440為每2分鐘執行一次;
函數包DBMS_JOB介紹
該包包含的過程有SUBMIT、REMOVE、CHANGE、WHAT、NEXT_DATE、INTERVAL、BROKEN、RUN
參數介紹
job是作業號,標識一個作業在數據庫中具有唯一性質
broken表示該作業是否被標記為無效,true無效,false有效
next_date表示下一次執行該作業的時間,默認為當前日期和時間
what表示該作業要運行的一塊PL/SQL代碼塊、存儲過程
interval表示該作業重復執行的時間間隔
no_parse表示作業在提交或者執行時是否應進行語法分析,true不分析,false立即分析
my_call表示在當前狀態下重新提交此作業的代碼
過程介紹:
SUBMIT:正常提交一個作業,有五個參數:job、what、next_date、interval、no_parse
REMOVE:刪除一個已計劃運行的作業,有一個參數:job、what、next_date、interval、no_parse
CHANGE:用于改變作業的執行計劃,有四個參數:job、what、next_date、interval
WHAT:重新設置作業的執行代碼,有兩個參數:job、what
NEXT_DATE:用于設置作用下一次被執行的時間,有兩個參數:job、next_date
INTERVAL:用于設置作用下一次執行的時間間隔,有兩個參數:job、interval
BROKEN:用于設置一個已提交的左右有效或無效,有三個參數:job、broken、next_date
RUN:強制執行一個作業,不管該作業是否有效,有一個參數:job
USER_EXPORT:返回一個命令,此命令用來安排一個存在的作業以便此作業重新提交,有兩個參數:job、my_call
6 現在作業提交了,查看一下user_jobs表的情況,有東西了;23是系統分配的作業號;
7 執行該作業;
8 過一會看emp表;果然加入了一條數據;如下圖第一條;
9 但是過一段時間再看emp表,并沒有2分鐘插入一條記錄;為啥呢;
看一下user_jobs表的情況,如下圖,執行失敗次數16,broken為y - 即停止;
那么是因為每次插入相同的數據,數據庫約束的原因,除了第一次,其他插入失敗,達到16次Oracle就停止了該作業;
? ? 移除該作業,退出,休息去。
總結
以上是生活随笔為你收集整理的Oracle作业队列入门图文解说的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图文解说oracle视图
- 下一篇: Python入门图文解说