久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

ORACLE如何創建jobs

145次閱讀
沒有評論

共計 3186 個字符,預計需要花費 8 分鐘才能閱讀完成。

這篇文章主要介紹了 ORACLE 如何創建 jobs,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。

一、使用 Jobs

所謂 JOBS,其實就是 Scheduler 管理的一個 (或多個) 任務的執行調度。

1.1  創建 Jobs

通過 DBMS_SCHEDULER 包來創建 Jobs,是使用其 CREATE_JOB 過程。在創建 Job 時,用戶可以指定要執行的任務,調度信息 (啥時候執行,執行周期,終止日期等) 以及其它一些任務相關的屬性。CREATE_JOB 過程調用還是比較簡單的,例如:

SQL  BEGIN

  2  DBMS_SCHEDULER.CREATE_JOB (

 3 job_name =   INSERT_TEST_TBL ,

 4 job_type =   STORED_PROCEDURE ,

 5 job_action =   P_ INSERT INTOTEST ,

 6 start_date =  sysdate,

 7 repeat_interval =   FREQ=DAILY;INTERVAL=1

 8 END;

 9 /

PL/SQL  過程已成功完成。

事實上,有權限的話,用戶也可以創建其它 SCHEMA 下的 JOB,只需要在指定 JOB_NAME 時,按照 schema.job_name 的格式即可。注意喲,這種情況下創建的 JOB,其 CREATED 與 OWNER 有可能并不相同的喲。

當使用 CREATE_JOB 過程創建 JOB 時,可指定的參數值很多,只不過多數情況下用戶僅指定部分參數即可滿足需求。

其中,上例中指定的參數,分別代表的含義如下:

JOB_NAME:指定任務的名稱,必選值,注意要確保指定的名稱唯一。

JOB_TYPE:任務執行的操作類型,必選值,有下列幾個可選值:

PLSQL_BLOCK:表示任務執行的是一個 PL/SQL 匿名塊。

STORED_PROCEDURE:表示任務執行的是 ORACLE 過程(含 PL/SQL PROCEDURE 和 JAVA PROCEDURE),本例中正是指定這一參數值。

EXECUTABLE:表示任務執行的是一個外部程序,比如說操作系統命令。

CHAIN:表示任務執行的是一個 CHAIN。

JOB_ACTION:任務執行的操作,必選值,應與 JOB_TYPE 類型中指定的參數相匹配。

比如說對于 PL/SQL 匿名塊,此處就可以放置 PL/SQL 塊的具體代表,類似 DECLARE .. BEGIN ..END 這類;如果是 ORACLE 過程,那么此處應該指定具體的過程名,注意由于任務執行,即使過程中有 OUT 之類參數,實際執行時也不會有輸出的。

START_DATE:指定任務初次執行的時間,本參數可為空,當為空時,表示任務立刻執行,效果等同于指定該參數值為 SYSDATE。

REPEAT_INTERVAL
:指定任務執行的頻率,比如多長時間會被觸發再次執行。本參數也可以為空,如果為空的話,就表示當前設定的任務只執行一次。REPEAT_INTERVAL 參數需要好好說說,因為這一參數與標準 JOB 中的 INTERVAL 參數有很大區別,相比之下,REPEAT_INTERVAL 參數的語法結構要復雜的多。其中最重要的是 FREQ 和 INTERVAL 兩個關鍵字。

FREQ 關鍵字用來指定間隔的時間周期,可選參數有:YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, and SECONDLY,分別表示年、月、周、日、時、分、秒等單位。

INTERVAL 關鍵字用來指定間隔的頻繁,可指定的值的范圍從 1 -99。

例如:REPEAT_INTERVAL= FREQ=DAILY;INTERVAL=1 表示每天執行一次,如果將 INTERVAL 改為 7 就表示每 7 天執行一次,效果等同于 FREQ=WEEKLY;INTERVAL=1。

一般來說,使用 DBMS_SCHEDULER.CREATE_JOB 創建一個 JOB,至少需要指定上述參數中的前 3 項。除此之外,還可以在 CREATE_JOB 時,指定下列參數:

NUMBER_OF_ARGUMENTS:指定該 JOB 執行時需要附帶的參數的數量,默認值為 0,注意當 JOB_TYPE 列值為 PLSQL_BLOCK 或 CHAIN 時,本參數必須設置為 0,因為上述兩種情況下不支持附帶參數。

END_DATE
:指定任務的過期時間,默認值為 NULL。任務過期后,任務的 STATE 將自動被修改為 COMPLETED,ENABLED 被置為 FALSE。如果該參數設置為空的話,表示該任務永不過期,將一直按照 REPEAT_INTERVAL 參數設置的周期重復執行,直到達到設置的 MAX_RUNS 或 MAX_FAILURES 值。

JOB_CLASS:指定任務關聯的 CLASS,默認值為 DEFAULT_JOB_CLASS。關于 JOB CLASS 的信息就關注本系列的后續文章。

ENABLED:指定任務是否啟用,默認值為 FALSE。FALSE 狀態表示該任務并不會被執行,除非被用戶手動調用,或者用戶將該任務的狀態修改為 TRUE。

AUTO_DROP:當該標志被置為 TRUE 時,ORACLE 會在滿足條件時自動刪除創建的任務

任務已過期;

任務最大運行次數已達 MAX_RUNS 的設置值;

任務未指定 REPEAT_INTERVAL 參數,僅運行一次;

該參數的默認值即為 TRUE。用戶在執行 CREATE_JOB 過程時可以手動將該標志指定為 FALSE,當參數值設置為 FALSE 時,即使滿足上述提到的條件任務也不會被自動刪除,這種情況下,唯一能夠導致任務被刪除的情況,就是用戶主動調用 DROP_JOB 過程。

COMMENTS:設置任務的注釋信息,默認值為 NULL。

上面的例子創建了一個新的 JOB,不過這個 JOB 與普通 JOB 不同,此時查詢 USER_JOBS 視圖是查不到剛剛創建的 JOB 的信息,因為這個 JOB 是 SCHEDULER 管理的 JOB。要查詢 SCHEDULER 管理的 JOS,應該通過 USER_SCHEDULER_JOBS(當然 ALL_SCHEDULER_JOBS 和 DBA_SCHEDULER_JOBS 也可以),例如:

SQL  select job_name,job_type,job_action,to_char(start_date, yyyy-mm-dd hh34:mi:ss),repeat_interval,enabled,state from user_scheduler_jobs;

JOB_NAME JOB_TYPE JOB_ACTION TO_CHAR(START_DATE, REPEAT_INTERVAL ENABL STATE

——————– —————- ————————- ——————- —————————— —– —————

INSERT_TEST_TBL STORED_PROCEDURE P_INSERTINTOTEST 2009-07-27 13:46:50 FREQ=DAILY;INTERVAL=1 FALSE DISABLED

不過,細心的盆友可能會發現,JOB 雖然成功創建了,但卻并未執行,這是怎么回事?其實原因很簡單,還記的前面介紹 CREATE_JOB 過程時提到的 ENABLED 參數嗎,當不顯式指定時,該參數的默認值為 false,JOB 自然不會運行了。如果遇到這類情形,如何修改呢?

感謝你能夠認真閱讀完這篇文章,希望丸趣 TV 小編分享的“ORACLE 如何創建 jobs”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關注丸趣 TV 行業資訊頻道,更多相關知識等著你來學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-24發表,共計3186字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 自治县| 庆元县| 九龙县| 遂宁市| 阜城县| 揭西县| 中方县| 新巴尔虎右旗| 沐川县| 武冈市| 瓮安县| 民丰县| 漯河市| 繁昌县| 南丹县| 自贡市| 道真| 太湖县| SHOW| 深圳市| 湘阴县| 乐都县| 佳木斯市| 咸阳市| 诸城市| 丹寨县| 通道| 明水县| 开原市| 革吉县| 昌江| 天全县| 龙州县| 洪泽县| 农安县| 饶阳县| 张家川| 陆川县| 峡江县| 南京市| 祥云县|