ORACLE的Job Classes设置管理job日志

转自:https://www.linuxidc.com/Linux/2014-11/109596.htm

          http://www.blogjava.net/javaex/articles/303634.html

          http://blog.sina.com.cn/s/blog_c0be477d0102vicm.html

一、查看job调用的class

    -->select job_name,job_class from dba_scheduler_jobs  where job_name in ( 'JOB_ZTCK_JHCMD', upper('job_autogen_zkyhrecord') );
      job_name   job_class
      ---------------------------------------
        JOB_AUTOGEN_ZKYHRECORD    DEFAULT_JOB_CLASS
        JOB_ZTCK_JHCMD    DEFAULT_JOB_CLASS

二、了解一下job日志的保存设置
    *job的日志级别:
     --job日志级别由两个因素决定,一个是job自己日志级别,别一个是使用的job cloass的日志级别,取两者中的最高值。
    --job创建时日志级别默认是DBMS_SCHEDULER.LOGGING_RUNS,
    --创建的job时,如果不指定job class,默认为DEFAULT_JOB_CLASS,而DEFAULT_JOB_CLASS默认logging level是DBMS_SCHEDULER.LOGGING_RUNS,
    --所以创建的job的logging level至少是LOGGING_RUNS。
    --如果不产生日志,必须禁止job自己日志级别,同时不能使用默认的默认为DEFAULT_JOB_CLASS.

三、

EXEC  DBMS_SCHEDULER.SET_ATTRIBUTE('SYS.DEFAULT_JOB_CLASS','LOGGING_LEVEL',DBMS_SCHEDULER.LOGGING_OFF) ;

     EXEC DBMS_SCHEDULER.SET_ATTRIBUTE('SYS.DEFAULT_JOB_CLASS','LOGGING_LEVEL',DBMS_SCHEDULER.LOGGING_RUNS) ;    
     EXEC DBMS_SCHEDULER.SET_ATTRIBUTE('SYS.DEFAULT_JOB_CLASS','LOG_HISTORY','3') ;     

四、清除日志
    EXECUTE DBMS_SCHEDULER.PURGE_LOG
                        
六、使用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,只需要在为该过程指定值时,参数值间以逗号分隔即可。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值