(1)使用jobs之建立jobs
[君三思] 2009-7-31
所謂出於job而勝於job,說的就是oracle 10g後的新特性scheduler啦。在10g環境中,oracle建議使用scheduler替換普通的job,來管理任務的執行。其實,將scheduler描述成管理job的工具已經太過片面了,10g版本中新增的scheduler絕不僅僅是建立任務這麼簡單。。。。
所謂jobs,其實就是scheduler管理的乙個(或多個)任務的執行排程。
通過dbms_scheduler包來建立jobs,是使用其create_job過程。在建立job時,使用者可以指定要執行的任務,排程資訊(啥時候執行,執行週期,終止日期等)以及其它一些任務相關的屬性。create_job過程呼叫還是比較簡單的,例如:
事實上,有許可權的話,使用者也可以建立其它schema下的job,只需要在指定job_name時,按照schema.job_name的格式即可。注意喲,這種情況下建立的job,其created與owner有可能並不相同的喲。
當使用create_job過程建立job時,可指定的引數值很多,只不過多數情況下使用者僅指定部分引數即可滿足需求。
其中,上例中指定的引數,分別代表的含義如下:
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兩個關鍵字。
例如: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值。
enabled :指定任務是否啟用,預設值為false。false狀態表示該任務並不會被執行,除非被使用者手動呼叫,或者使用者將該任務的狀態修改為true。
auto_drop :當該標誌被置為true時,oracle會在滿足條件時自動刪除建立的任務
該引數的預設值即為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也可以),例如:
ORACLE建立Jobs詳解及示例
標準示例 oracle實現每日零點 或資料庫開啟後判斷為新的一天 重置id序列從1開始 建立序列 create sequence managex.autoidx minvalue 1 maxvalue 9999999 start with 2 increment by 1 cache 20 orde...
Oracle中的JOBS的使用
declare job number begin dbms job.submit job job,what pack dw.pro base to char sysdate,yyyy 執行程式 next date to date 2020 10 1700 00 00 yyyy mm dd hh24 ...
Python爬取51jobs之資料清洗 3
前面已經用get webpage方法獲取 下面說一說如何從 資訊中過濾出我想要的資訊 招聘公司,招聘資訊,薪水 以乙個公司招聘 為例子,ur 我們要獲取這3個地方的文字資訊 首先匯入requests模組,寫上請求頭 import requests import re from bs4 import ...