ORACLE Scheduler特性(11)使用Job Classes
六、使用Job Classes
Job Classes 相當於建立了一個job組,DBA可以將那些具有相同特性的job,統統放到相同的Job Classes中,然後通過對Job Class應用ORACLE中的"資源使用計劃"特性,就可以對這些job執行過程中所需要的資源分配情況進行管理。
1、 建立Job Classes
使用DBMS_SCHEDULER包的CREATE_JOB_CLASS過程建立Job Classes,該過程支援的引數如下:
JSSWEB> desc dbms_scheduler.create_job_class;
Parameter Type Mode Default?
----------------------- -------------- ---- --------
JOB_CLASS_NAME VARCHAR2 IN
RESOURCE_CONSUMER_GROUP VARCHAR2 IN Y
SERVICE VARCHAR2 IN Y
LOGGING_LEVEL BINARY_INTEGER IN Y
LOG_HISTORY BINARY_INTEGER IN Y
COMMENTS VARCHAR2 IN Y其中:
- JOB_CLASS_NAME :要建立的Job Class的名稱,注意指定的長度不要超過30個字元,也不要與現有Job Class同名;
- RESOURCE_CONSUMER_GROUP :指定建立的Job Class所在的RCG;
提示:啥是Resource Consumer Group
你可以將其理解成一個資源分配的方式,處於相同RCG組中的使用者、會話、或者物件共用一組資源,這組資源中可供分配的資源按照DBA指定的方式分配給RCG。如果設計合理,通過這種方式,可以更有效的利用伺服器的資源。- SERVICE :指定建立的Job Class所在Service,本選項常見於RAC環境,我們都知道RAC環境由多例項+資料庫組成,此處所指定的Service實際就是指Job Class會在哪個例項上執行。
- 注意:本引數與RESOURCE_CONSUMER_GROUP引數相互衝突,同一個Job Class只同設定兩個引數中的一個值。
- LOGGING_LEVEL :指定日誌記錄的級別,有下列三種級別:
- n DBMS_SCHEDULER.LOGGING_OFF :關閉日誌記錄功能;
- n DBMS_SCHEDULER.LOGGING_RUNS :對該Job Class下所有任務的執行資訊進行記錄;
- n DBMS_SCHEDULER.LOGGING_FULL :記錄該Job Class下任務的所有相關資訊,不僅有任務的執行情況,甚至連任務的建立、修改等也均將記入日誌。
- LOG_HISTORY :指定日誌記錄的時間,以天為單位,比如指定LOG_HISTORY引數值為90,就表示日誌資訊保留最近90天的內容。
- COMMENTS :指定註釋資訊。
上述各個引數,除了LOG_CLASS_NAME引數為必選參外,其它均為可選引數,例如:
JSSWEB> EXEC DBMS_SCHEDULER.CREATE_JOB_CLASS(¨my_first_jc¨);
PL/SQL procedure successfully completed查詢系統中已經存在的Job Classes,可以通過DBA_SCHEDULER_JOB_CLASSES檢視(或ALL_SCHEDULER_JOB_CLASS檢視),例如:
JSSWEB> select job_class_name,resource_consumer_group,service from dba_scheduler_job_classes;
JOB_CLASS_NAME RESOURCE_CONSUMER_GROUP SERVICE
------------------------------ ------------------------------ -----------------------------
DEFAULT_JOB_CLASS
AUTO_TASKS_JOB_CLASS AUTO_TASK_CONSUMER_GROUP
MY_FIRST_JC當建立Jobs時,可以通過JOB_CLASS引數來指定job所在的Job Class,如果不指定的話,建立的job預設屬於DEFAULT_JOB_CLASS。至於說如何查詢建立的jobs屬於哪個Job Class,還用說嗎,*_SCHEDULER_JOBS檢視中的JOB_CLASS列唄。
2、 管理Job Classes
DBMS_SCHEDULER.SET_ATTRIBUTE 過程大家應當還記的,前面的小節中演示中使用該過程,修改job的屬性,實際上SET_ATTRIBUTE也同樣可以用來修改Job Class的屬性,操作方法與修改job屬性完全相同,只不過作用函概的範圍更廣,修改Job Class後,該Job Class下屬的所有job屬性都會被級聯修改(當前正執行的不會立刻生效,將等到下次執行時生效)。
例如:修改剛剛建立的MY_FIRST_JC的日誌儲存時間:
JSSWEB> EXEC DBMS_SCHEDULER.SET_ATTRIBUTE(¨SYS.MY_FIRST_JC¨,¨LOG_HISTORY¨,¨30¨);
PL/SQL procedure successfully completed.- 提示:Job Class可被修改的屬性,即建立時可選擇指定的那5個屬性。
3、 刪除Job Classes
DBMS_SCHEDULER 包提供了DROP_JOB_CLASS過程,用來刪除Job Classes。該過程呼叫非常簡單,例如,刪除剛剛建立的MY_FIRST_JC,執行命令如下:
JSSWEB> EXEC DBMS_SCHEDULER.DROP_JOB_CLASS(¨MY_FIRST_JC¨);
PL/SQL procedure successfully completed.如果有多個Job Classes需要刪除,並不需要多次執行DROP_JOB_CLASS,只需要在為該過程指定值時,引數值間以逗號分隔即可。
==============================================