【DB筆試面試479】Oracle JOB分為哪幾類?
- 2019 年 10 月 11 日
- 筆記
Oracle JOB分為哪幾類?
答案部分
Oracle的JOB分為兩類,DBMS_JOB和DBMS_SCHEDULER,二者都可以完成定時任務。
1、DBMS_JOB
DBMS_JOB的SUBMIT過程參數如下所示:
SQL> DESC DBMS_JOB.SUBMIT Parameter Type Mode Default? --------- -------------- ---- -------- JOB BINARY_INTEGER OUT WHAT VARCHAR2 IN NEXT_DATE DATE IN Y INTERVAL VARCHAR2 IN Y NO_PARSE BOOLEAN IN Y INSTANCE BINARY_INTEGER IN Y FORCE BOOLEAN IN Y
其中,各個參數的說明如下所示:
(1) 參數JOB是由SUBMIT()過程返回的BINARY_INEGER。這個值用來唯一標識一個工作,此參數是個變量,在使用前需要被聲明,JOB號在DBA_JOBS視圖裡可以查到。
(2) WHAT參數的值是將被JOB執行的PL/SQL代碼塊,一般是存儲過程的名字,記得存儲過程後面一定要加上分號。但是,若WHAT的參數為PL/SQL匿名塊,則需要加上分號,例如,what=> 'begin null; end;'。
(3) NEXT_DATE參數指示何時運行這個JOB,NEXT_DATE需要修改為數據庫第一次執行該JOB的時間,SYSDATE表示立即執行。
(4) INTERVAL參數表示這個JOB什麼時候將被再次執行,指定JOB的運行周期,INTERVAL為空表示只執行一次。
(5) NO_PARSE參數表示此JOB在提交或執行時是否應進行語法分析,TRUE代表此PL/SQL代碼在它第一次執行時應進行語法分析,而FALSE代表本PL/SQL代碼應立即進行語法分析,在創建JOB時進行檢查。默認值為FALSE。
需要注意的是,NEXT_DATE是時間類型,INTERVAL是字符類型,在調用SUBMIT時要指定正確的參數類型。
以下是創建DBMS_JOB的一個例子:
DECLARE V_JOB NUMBER; BEGIN DBMS_JOB.SUBMIT(JOB =>V_JOB, WHAT =>'PRO_TEST_JOB;', NEXT_DATE =>SYSDATE, INTERVAL =>'SYSDATE + 1 / (24 * 60)'); SYS.DBMS_OUTPUT.PUT_LINE('JOB NUMBER IS: ' || V_JOB); COMMIT; END;
2、DBMS_SCHEDULER
DBMS_SCHEDULER是Oracle 10g中新增的一個包,與老版本的DBMS_JOB包相比,DBMS_SCHEDULER有很多新特性。例如,DBMS_SCHEDULER可以執行存儲過程、匿名塊以及OS可執行文件和腳本(包括Linux系統的SHELL腳本),還可以使用DBMS_SCHEDULER更詳細地定義JOB的各類屬性。DBMS_SCHEDULER具有更詳細的作業運行狀態以及故障處理和報告功能。
從Oracle 10g開始,Oracle建議使用SCHEDULER替換普通的JOB來管理任務的執行。
下面的例子展示了如何創建一個DBMS_SCHEDULER類型的JOB:
BEGIN DBMS_SCHEDULER.CREATE_JOB(JOB_NAME => 'AGENT_LIQUIDATION_JOB', --要創建的JOB名稱 JOB_TYPE => 'STORED_PROCEDURE', JOB_ACTION => 'AGENT_LIQUIDATION.LIQUIDATION', --存儲過程名 START_DATE => SYSDATE, REPEAT_INTERVAL => 'FREQ=MONTHLY; INTERVAL=1; BYMONTHDAY=1;BYHOUR=1;BYMINUTE=0;BYSECOND=0', --按月執行,間隔為1個月,每月1號,凌晨1點執行 COMMENTS => 'SECOND');--JOB的注釋 END;
本文選自《Oracle程序員面試筆試寶典》,作者:李華榮。
About Me:小麥苗
● 本文作者:小麥苗,只專註於數據庫的技術,更注重技術的運用
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列題目來源於作者的學習筆記,部分整理自網絡,若有侵權或不當之處還請諒解
● 版權所有,歡迎分享本文,轉載請保留出處
● QQ:646634621 QQ群:618766405
● 提供OCP、OCM和高可用部分最實用的技能培訓
● 題目解答若有不當之處,還望各位朋友批評指正,共同進步