修改Oracle10g、11g系统自动统计Job的运行时间属性
- 格式:doc
- 大小:31.50 KB
- 文档页数:4
oracle中job的interval设置方法一、oracle中job设置interval方法1.简介:Oracle job调度功能是Oracle数据库中一种基本功能,它使数据库空闲期间可以自动执行各种类型的数据库任务,比如自动执行一些存储过程、自动执行一些脚本文件、每天时刻自动归档、每周时刻自动备份等,而interval是job功能的主要设定参数,它可以指定一些job功能的调度间隔、时间、频率等。
2.interval的设置方法:(1)使用scheduler_job_run_details视图Oracle数据库提供了scheduler_job_run_details视图,它可以获取未来执行一些任务的间隔时间信息,以及一些任务未来的执行时间等信息。
这个视图中有几个字段,比如next_run_date(下一次执行时间)、interval_value(间隔数值)、interval_unit(间隔单位)等,使用者可以根据这些字段的信息来确定一些任务的调度设置。
例如,下面一段sql查询语句可以获取job_name为test_job的间隔设置:SELECT job_name, interval_value, interval_unit,next_run_date FROM scheduler_job_run_details WHERE job_name = 'test_job';(2)使用dbms_scheduler.set_interval_in_seconds函数Oracle数据库也提供了一个内置函数dbms_scheduler.set_interval_in_seconds,这个函数可以设置job的interval,它接收3个参数,即job的名称、间隔的数值(以秒为单位)以及间隔的单位,使用者只需要按照上述要求定义即可。
例如,下面一段sql语句可以设置job_name为test_job的运行间隔时间为每天60秒:。
oracle数据库定时任务dbms_job的⽤法详解⼀、dbms_job涉及到的知识点1、创建job:variable jobno number;dbms_job.submit(:jobno, —-job号'your_procedure;',—-执⾏的存储过程, ';'不能省略next_date, —-下次执⾏时间'interval' —-每次间隔时间,interval以天为单位);–系统会⾃动分配⼀个任务号jobno。
2、删除job: dbms_job.remove(jobno);3、修改要执⾏的操作: job:dbms_job.what(jobno, what);4、修改下次执⾏时间:dbms_job.next_date(jobno, next_date);5、修改间隔时间:dbms_job.interval(jobno, interval);6、启动job: dbms_job.run(jobno);7、停⽌job: dbms.broken(jobno, broken, nextdate); –broken为boolean值⼆、初始化相关参数job_queue_processes1、job_queue_process表⽰oracle能够并发的job的数量,当job_queue_process值为0时表⽰全部停⽌oracle的job。
2、查看job_queue_processes参数⽅法⼀:show parameter job_queue_process;⽅法⼆:select * from v$parameter where name='job_queue_processes';3、修改job_queue_processes参数alter system set job_queue_processes = 10;三、user_jobs表结构字段(列)类型描述job number 任务的唯⼀标⽰号log_user varchar2(30) 提交任务的⽤户priv_user varchar2(30) 赋予任务权限的⽤户schema_user varchar2(30) 对任务作语法分析的⽤户模式last_date date 最后⼀次成功运⾏任务的时间last_sec varchar2(8) 如hh24:mm:ss格式的last_date⽇期的⼩时,分钟和秒this_date date 正在运⾏任务的开始时间,如果没有运⾏任务则为nullthis_sec varchar2(8) 如hh24:mm:ss格式的this_date⽇期的⼩时,分钟和秒next_date date 下⼀次定时运⾏任务的时间以下使⽤⼀个案例来演⽰dbms_job的使⽤⼀、在plsql中创建表:create table t(id varchar2(30),name varchar2(30));⼆、在plsql中创建存储过程:create or replace procedure proce_t isbegininsert into t(id, name) values('1', to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'));commit;end proce_t;/三、创建job任务(1分钟执⾏⼀次):在sql>后执⾏:variable jobno number;begindbms_job.submit(:jobno,'proce_t;', sysdate, 'sysdate+1/24/60');commit;end;/提交后提⽰:pl/sql procedure successfully completedjobno---------25四、跟踪任务的情况(查看任务队列):sql> select job, next_date, next_sec, failures, broken from user_jobs;job next_date next_sec failures broken---------- ----------- ---------------- ---------- ------25 2012/9/14 1 10:59:46 0 n说明任务已创建成功。
oracle如何使用作业Oracle可以使用作业来自动执行重复性任务,如定期备份数据库、生成报表等。
以下是Oracle使用作业的步骤:1. 创建作业:使用CREATE_JOB语句来创建作业。
可以指定作业的名称、调度时间表、执行程序、参数等信息。
2. 创建程序:使用CREATE_PROGRAM语句来创建程序。
程序是作业执行的实际任务,可以是存储过程、PL/SQL块、SQL脚本等。
3. 创建调度时间表:使用DBMS_SCHEDULER包中的CREATE_SCHEDULE语句或在Oracle Enterprise Manager工具中创建调度时间表。
调度时间表定义了作业的执行计划,可以指定作业的执行频率和时间范围。
4. 链接作业、程序和时间表:使用DBMS_SCHEDULER包中的CREATE_JOB语句,将作业与程序和时间表进行关联。
5. 启用作业:使用DBMS_SCHEDULER包中的ENABLE函数启用作业。
只有处于启用状态的作业才能被调度执行。
6. 监控作业执行:可以使用DBA_SCHEDULER_JOBS视图来监控作业的执行情况。
可以查看作业的状态、执行次数、最后执行时间等信息。
7. 管理作业:使用DBMS_SCHEDULER包中的ALTER_JOB函数可以修改作业的属性,如修改作业的执行时间、禁用作业等。
使用DROP_JOB函数可以删除作业。
8. 取消作业:使用DBMS_SCHEDULER包中的DISABLE函数可以取消作业的调度。
需要注意的是,Oracle的作业管理功能在某些版本中可能会有所差异,具体使用方法可以参考相关版本的文档。
数据库job的启用及参数设置2010-07-06 20:20:36| 分类:oracle | 标签: |举报 |字号大中小订阅众所周知,一般操作系统会提供定时执行任务的方法,例如:Unix平台上提供了让系统定时执行任务的命令Crontab。
但是,对于某些需求,例如:一些对数据库表的操作,最为典型的是证券交易所每日收盘后的结算,它涉及大量的数据库表操作,如果仍然利用操作系统去定时执行,不仅需要大量的编程工作,而且还会出现用户不一致等运行错误,甚至导致程序无法执行。
一、分析问题事实上,对于以上需求,我们可以利用数据库本身拥有的功能Job Queue(任务队列管理器)去实现。
任务队列管理器允许用户提前调度和安排某一任务,使其能在指定的时间点或时间段内自动执行一次或多次,由于任务在数据库中被执行,所以执行效率很高。
任务队列管理器允许我们定制任务的执行时间,并提供了灵活的处理方式,还可以通过配置,安排任务在系统用户访问量少的时段内执行,极大地提高了工作效率。
例如,对于数据库日常的备份、更新、删除和复制等耗时长、重复性强的工作,我们就可以利用任务队列管理器去自动执行以减少工作量。
目前,拥有此项功能的数据库有许多,最有代表性的是SQL Server 7.0、Oracle 8.0.5等。
但是,要让任务队列管理器工作,还需要我们加以配置才能实现。
SQL Server的功能配置是在一个图形化界面(GUI)中实现的,非常简单。
利用OEM客户端管理工具,Oracle的配置也可以在一个图形界面中完成。
然而大多数的用户更习惯于命令行的方式去操纵数据库。
本文介绍如何通过命令行实现这种配置。
二、实现步骤1.确保Oracle的工作模式允许启动任务队列管理器Oracle定时执行“Job Queue”的后台程序是SNP进程,而要启动SNP进程,首先要确保整个系统的模式是可以启动SNP进程的,这需要以DBA的身份去执行如下命令:svrmgrl> alter system enable restricted session;或sql> alter system disenable restricted session;利用如上命令更改系统的会话方式为disenable restricted,为SNP的启动创造条件。
第一部分:概述1. 介绍oracle dbms_jobs的概念和作用欢迎阅读本文,今天我们将来讨论oracle dbms_jobs的sql语句。
在Oracle数据库中,dbms_jobs是一种用来管理作业的工具,它可以帮助我们在数据库中定期执行特定的任务。
通过使用dbms_jobs,我们可以轻松地设置和管理数据库中的作业,以便在需要的时候自动运行。
第二部分:dbms_jobs的常用sql语句2. 创建一个作业如果我们想要在数据库中创建一个新的作业,可以使用以下SQL语句:```sqlDECLAREjobno number;BEGINdbms_job.submit(job => jobno,what => 'your_job_procedure;', -- 作业的具体内容next_date => SYSDATE, -- 下一次运行的时间interval => 'SYSDATE + 1', -- 作业的运行间隔no_parse => TRUE);COMMIT;END;```3. 查看作业的状态如果我们想要查看数据库中的作业状态,可以使用以下SQL语句: ```sqlSELECT job, what, next_date, intervalFROM dba_jobs;```4. 修改作业的运行时间如果我们需要修改一个作业的下一次运行时间,可以使用以下SQL 语句:```sqlBEGINdbms_job.BROKEN(jobno, TRUE, SYSDATE + 1);COMMIT;END;```5. 删除一个作业如果我们需要删除数据库中的某个作业,可以使用以下SQL语句:```sqlBEGINdbms_job.remove(jobno);COMMIT;END;```第三部分:结语6. 总结oracle dbms_jobs的sql语句通过本文的介绍,我们了解了Oracle数据库中管理作业的重要工具dbms_jobs,并学习了一些常用的SQL语句。
Oracle Job定时任务oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务。
一、查询系统中的job,可以查询视图--相关视图select * from dba_jobs;select * from all_jobs;select * from user_jobs;-- 查询字段描述/*字段(列)类型描述JOB NUMBER 任务的唯一标示号LOG_USER VARCHAR2(30) 提交任务的用户PRIV_USER VARCHAR2(30) 赋予任务权限的用户SCHEMA_USER VARCHAR2(30) 对任务作语法分析的用户模式LAST_DATE DATE 最后一次成功运行任务的时间LAST_SEC VARCHAR2(8) 如HH24:MM:SS格式的last_date日期的小时,分钟和秒THIS_DATE DATE 正在运行任务的开始时间,如果没有运行任务则为nullTHIS_SEC VARCHAR2(8) 如HH24:MM:SS格式的this_date日期的小时,分钟和秒NEXT_DATE DATE 下一次定时运行任务的时间NEXT_SEC VARCHAR2(8) 如HH24:MM:SS格式的next_date日期的小时,分钟和秒TOTAL_TIME NUMBER 该任务运行所需要的总时间,单位为秒BROKEN VARCHAR2(1) 标志参数,Y标示任务中断,以后不会运行INTERVAL VARCHAR2(200) 用于计算下一运行时间的表达式FAILURES NUMBER 任务运行连续没有成功的次数WHAT VARCHAR2(2000) 执行任务的PL/SQL块CURRENT_SESSION_LABEL RAW MLSLABEL 该任务的信任Oracle会话符CLEARANCE_HI RAW MLSLABEL 该任务可信任的Oracle最大间隙CLEARANCE_LO RAW MLSLABEL 该任务可信任的Oracle最小间隙NLS_ENV VARCHAR2(2000) 任务运行的NLS会话设置MISC_ENV RAW(32) 任务运行的其他一些会话参数*/-- 正在运行jobselect * from dba_jobs_running;其中最重要的字段就是job 这个值就是我们操作job的id号,what 操作存储过程的名称,next_date 执行的时间,interval执行间隔二、执行间隔interval 运行频率描述INTERVAL参数值每天午夜12点TRUNC(SYSDATE + 1)每天早上8点30分TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)每星期二中午12点NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24每个月第一天的午夜12点TRUNC(LAST_DAY(SYSDATE ) + 1)每个季度最后一天的晚上11点TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' )-1/24每星期六和日早上6点10分TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)每秒钟执行次Interval => sysdate + 1/(24 * 60 * 60)如果改成sysdate + 10/(24 * 60 * 60)就是10秒钟执行次每分钟执行Interval => TRUNC(sysdate,'mi') + 1/ (24*60)如果改成TRUNC(sysdate,'mi') + 10/ (24*60) 就是每10分钟执行次每天定时执行例如:每天的凌晨1点执行Interval => TRUNC(sysdate) + 1 +1/ (24)每周定时执行例如:每周一凌晨1点执行Interval => TRUNC(next_day(sysdate,'星期一'))+1/24每月定时执行例如:每月1日凌晨1点执行Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24每季度定时执行例如每季度的第一天凌晨1点执行Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24每半年定时执行例如:每年7月1日和1月1日凌晨1点Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24每年定时执行例如:每年1月1日凌晨1点执行Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24三、创建job方法创建job,基本语法:declarevariable job number;beginsys.dbms_job.submit(job => :job,what => 'prc_name;',next_date => to_date('22-11-2013 09:09:41', 'dd-mm-yyyy hh24:mi:ss'),interval => 'sysdate+1/86400');--每天86400秒钟,即一秒钟运行prc_name过程一次commit;end;使用dbms_job.submit方法过程,这个过程有五个参数:job、what、next_date、interval 与no_parse。
Oracle统计信息1. 统计信息的作用在CBO(基于代价的优化器模式)条件下,SQL语句的执行计划由统计信息来决定,若没有统计信息则会采取动态采样的方式决定执行计划。
可以说统计信息关乎SQL的执行计划是否正确,属于SQL执行的指导思想。
优化器统计范围:表统计--行数,块数,行平均长度;all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN列统计--列中唯一值的数量(NDV),NULL值的数量,数据分布--DBA_TAB_COLUMNS:NUM_DISTINCT,NUM_NULLS,HISTOGRAM索引统计--叶块数量,等级,聚簇因子;--DBA_INDEXES:LEAF_BLOCKS,CLUSTERING_FACTOR,BLEVEL系统统计--I/O性能与使用率--CPU性能与使用率--存储在aux_stats$中,需要使用dbms_stats收集,I/O统计在X$KCFIO中2. 统计信息的内容①行统计信息(user_tables)行数(NUM_ROWS),块数(BLOCKS),行平均长度(AVG_ROW_LEN)②列统计信息(user_tab_columns)列中唯一值的数量(NUM_DISTINCT),NULL值的数量(NUM_NULLS),数据分布(HISTOGRAM)③索引统计(user_index)叶块数量(LEAF_BLOCKS),等级(BLEVEL),聚簇因子(CLUSTERING_FACTOR)④系统统计系统统计描述系统硬件的特征,包括I/O和CPU。
在选择执行计划时,优化器考虑查询所需的CPU和I/O代价。
系统统计允许优化器更加精确的评价CPU和IO代价,选择更好的查询计划。
使用DBMS_STATS.GATHER_SYSTEM_STATS收集系统统计,Oracle推荐收集系统统计。
收集系统统计需要DBA权限。
3. 统计信息的收集3.1 统计信息收集相关Oracle的初始化参数statistics_level控制收集统计信息的级别,有三个参数值:BASIC:收集基本的统计信息TYPICAL:收集大部分统计信息(数据库的默认设置)ALL:收集全部统计信息由于自动统计收集在夜间进行,因此对于一些更新频繁的对象其统计可能已经过期。
oracle中job任务常见时间设置语句1、每分钟执行TRUNC(sysdate,'mi')+1/(24*60)2、每天定时执行例如:每天凌晨0点执行TRUNC(sysdate+1)每天凌晨1点执行TRUNC(sysdate+1)+1/24每天早上8点30分执行TRUNC(SYSDATE+1)+(8*60+30)/(24*60)3、每周定时执行例如:每周一凌晨2点执行TRUNC(next_day(sysdate,1))+2/24TRUNC(next_day(sysdate,'星期一'))+2/24每周二中午12点执行TRUNC(next_day(sysdate,2))+12/24TRUNC(next_day(sysdate,'星期二'))+12/244、每月定时执行例如:每月1日凌晨0点执行TRUNC(LAST_DAY(SYSDATE)+1)每月1日凌晨1点执行TRUNC(LAST_DAY(SYSDATE)+1)+1/245、每季度定时执行每季度的第一天凌晨0点执行TRUNC(ADD_MONTHS(SYSDATE,3),'q')每季度的第一天凌晨2点执行TRUNC(ADD_MONTHS(SYSDATE,3),'q')+2/24每季度的最后一天的晚上11点执行TRUNC(ADD_MONTHS(SYSDATE+ 2/24,3),'q')-1/246、每半年定时执行例如:每年7月1日和1月1日凌晨1点执行ADD_MONTHS(TRUNC(sysdate,'yyyy'),6)+1/247、每年定时执行例如:每年1月1日凌晨2点执行ADD_MONTHS(TRUNC(sysdate,'yyyy'),12)+2/24。
Oracle数据库的SCHEDULE(调度程序)很多情况下,数据库管理员或用户需要自动调度和运行很多类型的作业,例如,执行维护工作(如数据库备份);数据加载和验证例程;生成报表;收集优化程序统计信息或执行业务流程。
可以使用调度程序功能指定任务在将来某个时间点运行。
作业可以在数据库中、在驻留数据库实例的机器上甚至在远程机器上运行。
可以结合使用调度程序和Resource Manager(资源管理器)。
调度程序可以激活Resource Manager计划,并按照为各种Resource Manager使用者组指定的优先级来运行作业。
调度程序是在Oracle 10g版本中引入的,在11g版本中得到了大大增强。
较早的数据库版本通过DBMS_JOB功能提供作业调度功能。
为了达达到向后兼容的目的,当前版本依然支持此功能,但它的功能多样性远不及调度程度。
1、调度程序体系结构数据字典包含一个作为所有调度程序作业的存储点的表。
可以通过DBA_SCHEDULER_JOBS视图查询此表。
作业队列协调器后台进程CJQ0监视此表,根据需要启动作业队列进程Jnnn来运行作业。
如果在任何定义的、活动的调度程序作业,就自动启动CJBQ0进程。
根据需要启动Jnnn进程,但是最大数量受JOB_QUEUE_PROCESSES实例参数限制,该参数可以是0-1000(默认值)的任何值。
如果将值设为0,那么将不会运行调程。
作业队列协调器从作业队列表中选取作业,将它们传递给作业队列进程执行。
它还根据需要启动和终止作业队列进程。
要查看当前正在运行的进程,可查询V$PROCESS视图。
select program from v$process where program like '%J%';定义为过程的作业在数据库中运行。
作业也可以定义为操作系统命令或shell脚本:这些将作为外部操作系统任务运行。
作业的触发因素可以是时间或事件。
Oracle计算工作日的方法是使用函数`to_char(calendar_date, 'dy')`,这个函数会返回一个字符串,表示指定日期是工作日还是休息日。
其中,如果这一天是工作日,返回值为'Work';如果是休息日,返回值为'Rest'。
但是有时候需要自定义节假日并应用到calendar表中,这时可以按照以下步骤操作:
1. 创建一张表,用来存储自定义的节假日,格式如下:
```sql
CREATE TABLE holiday_table ( id NUMBER, dates DATE );
```
2. 然后,可以使用以下SQL语句,将自定义的节假日更新到calendar表中:
```sql
MERGE INTO calendar cal USING (
SELECT ht.dates, 'N' is_working_day FROM holiday_table ht
) tmp ON (cal.calendar_date = tmp.dates)
WHEN MATCHED THEN UPDATE SET cal.is_working_day = tmp.is_working_day;
```
这样就可以将自定义的节假日应用到calendar表中,从而计算出准确的工作日。
修改Oracle10g、11g系统自动统计Job的运行时间属性Oracle 10g和11g,都有自动收集数据库统计信息的任务(10G和11G的JOB名不同),但是任务的执行时间可能与我们期望的不同,比如:周末两个全天都要运行,会影响系统性能,下面的方式可修改:一.修改10g自动统计的时间属性--GATHER_STATS_JOB--查看SCHEDULER_JOBSselect job_name from dba_scheduler_running_jobs;SELECT job_name , SCHEDULE_NAME FROM DBA_SCHEDULER_JOBS;select * from dba_scheduler_wingroup_members wherewindow_group_name='MAINTENANCE_WINDOW_GROUP';/* WINDOW_GROUP_NAME WINDOW_NAME1 MAINTENANCE_WINDOW_GROUP WEEKNIGHT_WINDOW2 MAINTENANCE_WINDOW_GROUP WEEKEND_WINDOW*/select t1.window_name,t1.repeat_interval,t1.duration fromdba_scheduler_windows t1,dba_scheduler_wingroup_members t2where t1.window_name=t2.window_name andt2.window_group_name='MAINTENANCE_WINDOW_GROUP';/*WINDOW_NAME REPEAT_INTERVAL DURATION1 WEEKNIGHT_WINDOW freq=daily;byday=MON,TUE,WED,THU,FRI ;byhour=22;byminute=0; bysecond=0 +000 08:00:002 WEEKEND_WINDOW freq=daily;byday=SAT;byhour=0;byminute =0;bysecond=0 +002 00:00:00*/--下面修改配置(使用sys用户登录oracle执行)sqlplus sys/xxx@xxxdb as sysdbaset linesize 120--修改WEEKEND_WINDOW的配置 (改成和WEEKNIGHT_WINDOW相同,即周一~周五,每日的22:00向后8小时,至次日凌晨6点)begindbms_scheduler.set_attribute('WEEKEND_WINDOW','REPEAT_INTERVAL','freq =daily;byday=SAT,SUN;byhour=22;byminute=0;bysecond=0');dbms_scheduler.set_attribute('WEEKEND_WINDOW','DURATION','+00008:00:00');end;/--查看修改结果:select t1.window_name,t1.repeat_interval,t1.duration fromdba_scheduler_windows t1,dba_scheduler_wingroup_members t2where t1.window_name=t2.window_name andt2.window_group_name='MAINTENANCE_WINDOW_GROUP';/*WINDOW_NAME REPEAT_INTERVAL DURATION1 WEEKNIGHT_WINDOW freq=daily;byday=MON,TUE,WED,THU,FRI ;byhour=22;byminute=0; bysecond=0 +000 08:00:002 WEEKEND_WINDOW freq=daily;byday=SAT,SUN;byhour=22;bym inute=0;bysecond=0 +000 08:00:00*/--若要还原成以前默认设置,可执行如下--周末两天都是全天:begindbms_scheduler.set_attribute('WEEKEND_WINDOW','REPEAT_INTERVAL','freq =daily;byday=SAT;byhour=0;byminute=0;bysecond=0');dbms_scheduler.set_attribute('WEEKEND_WINDOW','DURATION','+00200:00:00');end;/二.修改11g自动统计时间属性--查看SCHEDULER_JOBSselect job_name from dba_scheduler_running_jobs;SELECT * FROM DBA_SCHEDULER_JOBS;select * from dba_scheduler_wingroup_members wherewindow_group_name='MAINTENANCE_WINDOW_GROUP';/*WINDOW_GROUP_NAME WINDOW_NAMEMAINTENANCE_WINDOW_GROUP MONDAY_WINDOWMAINTENANCE_WINDOW_GROUP TUESDAY_WINDOWMAINTENANCE_WINDOW_GROUP WEDNESDAY_WINDOWMAINTENANCE_WINDOW_GROUP THURSDAY_WINDOWMAINTENANCE_WINDOW_GROUP FRIDAY_WINDOWMAINTENANCE_WINDOW_GROUP SATURDAY_WINDOWMAINTENANCE_WINDOW_GROUP SUNDAY_WINDOW*/select t1.window_name,t1.repeat_interval,t1.duration fromdba_scheduler_windows t1,dba_scheduler_wingroup_members t2where t1.window_name=t2.window_name and t2.window_group_name in ('MAINTENANCE_WINDOW_GROUP','BSLN_MAINTAIN_STATS_SCHED');/*WINDOW_NAME REPEAT_INTERVAL DURATION1 MONDAY_WINDOW freq=daily;byday=MON;byhour=22;byminute =0; bysecond=0 +000 04:00:002 TUESDAY_WINDOW freq=daily;byday=TUE;byhour=22;byminut e=0; bysecond=0 +000 04:00:003 WEDNESDAY_WINDOW freq=daily;byday=WED;byhour=22;bymin ute=0; bysecond=0 +000 04:00:004 THURSDAY_WINDOW freq=daily;byday=THU;byhour=22;byminu te=0; bysecond=0 +000 04:00:005 FRIDAY_WINDOW freq=daily;byday=FRI;byhour=22;byminute =0; bysecond=0 +000 04:00:006 SATURDAY_WINDOW freq=daily;byday=SAT;byhour=6;byminut e=0; bysecond=0 +000 20:00:007 SUNDAY_WINDOW freq=daily;byday=SUN;byhour=6;byminute= 0; bysecond=0 +000 20:00:00*/--下面修改配置(使用sys用户登录oracle执行)sqlplus sys/xxx@xxxdb as sysdba--修改SATURDAY_WINDOW、SUNDAY_WINDOW的配置 (改成和平常相同,即每日都是22:00向后4小时,至次日凌晨2点)--下面的方式也可修改周六、周日的时间Windowbeginsys.dbms_scheduler.set_attribute(name => 'SYS.SATURDAY_WINDOW', attribute => 'repeat_interval', value =>'Freq=daily;ByDay=SAT;ByHour=22;ByMinute=0;BySecond=0');sys.dbms_scheduler.set_attribute(name => 'SYS.SATURDAY_WINDOW', attribute => 'duration', value => '0 04:00:00');end;/beginsys.dbms_scheduler.set_attribute(name => 'SYS.SUNDAY_WINDOW', attribute => 'repeat_interval', value =>'Freq=daily;ByDay=SUN;ByHour=22;ByMinute=0;BySecond=0');sys.dbms_scheduler.set_attribute(name => 'SYS.SUNDAY_WINDOW', attribute => 'duration', value => '0 04:00:00');end;/--查看修改结果:select t1.window_name,t1.repeat_interval,t1.duration fromdba_scheduler_windows t1,dba_scheduler_wingroup_members t2where t1.window_name=t2.window_name andt2.window_group_name='MAINTENANCE_WINDOW_GROUP';/* WINDOW_NAME REPEAT_INTERVAL DURATION1 MONDAY_WINDOW freq=daily;byday=MON;byhour=22;byminute =0; bysecond=0 +000 04:00:002 TUESDAY_WINDOW freq=daily;byday=TUE;byhour=22;byminut e=0; bysecond=0 +000 04:00:003 WEDNESDAY_WINDOW freq=daily;byday=WED;byhour=22;bymin ute=0; bysecond=0 +000 04:00:004 THURSDAY_WINDOW freq=daily;byday=THU;byhour=22;byminu te=0; bysecond=0 +000 04:00:005 FRIDAY_WINDOW freq=daily;byday=FRI;byhour=22;byminute =0; bysecond=0 +000 04:00:006 SATURDAY_WINDOW Freq=daily;ByDay=SAT;ByHour=22;ByMinu te=0;BySecond=0 +000 04:00:007 SUNDAY_WINDOW Freq=daily;ByDay=SUN;ByHour=22;ByMinute =0;BySecond=0 +000 04:00:00*/三.相关视图1.SCHEDULER_JOBSselect job_name from dba_scheduler_running_jobs;SELECT * FROM DBA_SCHEDULER_JOBS;2.有关自动数据库维护任务的信息的视图:select * from DBA_AUTOTASK_CLIENT_JOB;select * from DBA_AUTOTASK_CLIENT;select * from DBA_AUTOTASK_JOB_HISTORY;select * from DBA_AUTOTASK_WINDOW_CLIENTS;select * from DBA_AUTOTASK_CLIENT_HISTORY;。