欢迎光临
我们一直在努力

修改Oracle的Job Scheduler 日志级别及删除运行日志

Job 运行久了会产生大量运行日志,这些信息可通过下面的方式清除:

1、创建job:

Create job links to previous job class.
  DBMS_SCHEDULER.create_job (
    job_name        => 'test_log_job',
    job_type        => 'PLSQL_BLOCK',
    job_action      => 'BEGIN NULL; END;',
    job_class       => 'no_logging_class',
    enabled         => FALSE,
    auto_drop       => FALSE,
    comments        => 'Job used to job logs.');

 

2、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.

— 重新建立无日志job class:

 begin
  DBMS_SCHEDULER.create_job_class (
    job_class_name          => 'no_logging_class',
    resource_consumer_group => 'default_consumer_group',
    logging_level           => DBMS_SCHEDULER.LOGGING_OFF);
end;

 –禁止job自身日志,修改日志级别LOGGING_LEVEL属性:

BEGIN
     dbms_scheduler.set_attribute('JOB_NAME','LOGGING_LEVEL',DBMS_SCHEDULER.LOGGING_OFF);
END;

–1)DBMS_SCHEDULER.LOGGING_OFF:关闭日志记录功能;
–2)DBMS_SCHEDULER.LOGGING_RUNS:对任务的运行信息进行记录;
–3)DBMS_SCHEDULER.LOGGING_FULL:记录任务所有相关信息,不仅有任务的运行情况,甚至连任务的创建、修改等也均将记入日志。

 

3、查询和删除Job Log:
–在当前普通用户和SYS用户中都可以查看SCHEDULER_JOBS生成的日志(名称全用大写)

 select * from all_scheduler_job_log where owner='USERNAME' and job_name='XXX'
select * from all_scheduler_job_run_details where owner='USERNAME' and job_name='XXX'and job_name='XXX'

–以SYS用户登录,删除某用户下的某个job的运行信息:

 delete from all_scheduler_job_run_details where owner='USERNAME' and job_name='XXX'

 

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。