1. 程式人生 > >ORACLE Scheduler特性(11)使用Job Classes

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,只需要在為該過程指定值時,引數值間以逗號分隔即可。

==============================================