2013年(350)
分类: Oracle
2013-04-27 09:53:49
Job Classes 相当于创建了一个job组,DBA可以将那些具有相同特性的job,统统放到相同的Job Classes中,然后通过对Job Class应用ORACLE中的"资源使用计划"特性,就可以对这些job执行过程中所需要的资源分配情况进行。
使用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其中:
提示:啥是Resource Consumer Group
你可以将其理解成一个资源分配的方式,处于相同RCG组中的用户、会话、或者对象共用一组资源,这组资源中可供分配的资源按照DBA指定的方式分配给RCG。如果设计合理,通过这种方式,可以更有效的利用服务器的资源。上述各个参数,除了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列呗。
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.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,只需要在为该过程指定值时,参数值间以逗号分隔即可。
==============================================