分享更有价值
被信任是一种快乐

Oracle 11g无法自动收集统计信息怎么办

文章页正文上

这篇文章给大家分享的是有关Oracle 11g无法自动收集统计信息怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。SQL> select client_name,task_name,operation_name,status from
dba_autotask_task;
— 查询dba_autotask_task视图根本没有结果返回。 no rows selectedSQL> select job_name,actual_start_date,status from (select * from
dba_scheduler_job_run_details where job_name like ‘ORA$AT_OS_OPT%’ order by
log_date desc ) where rownum
–最近一次执行成功的自动收集统计信息的时间如下 JOB_NAME ACTUAL_START_DATE STATUS—————————- —————————————- ————-ORA$AT_OS_OPT_SY_260626-SEP-12 10.00.07.902100 PM PRC SUCCEEDEDORA$AT_OS_OPT_SY_258625-SEP-12
10.00.07.829792 PM PRC
SUCCEEDEDORA$AT_OS_OPT_SY_256624-SEP-12
10.00.07.154019 PM PRC
SUCCEEDEDSQL> select WINDOW_NAME, WINDOW_NEXT_TIME ,
WINDOW_ACTIVE,OPTIMIZER_STATS from DBA_AUTOTASK_WINDOW_CLIENTS order by
WINDOW_NEXT_TIME ;
–各个窗口的状态也都一切正常。WINDOW_NAME
WINDOW_NEXT_TIME WINDO OPTIMIZE——————————
————————————- —– ——–TUESDAY_WINDOW
30-JAN-18 10.00.00.000000 PM PRC FALSE免费主机域名 ENABLEDWEDNESDAY_WINDOW
31-JAN-18 10.00.00.000000 PM PRC FALSE ENABLEDTHURSDAY_WINDOW
01-FEB-18 10.00.00.000000 PM PRC FALSE ENABLEDFRIDAY_WINDOW
02-FEB-18 10.00.00.000000 PM PRC FALSE ENABLEDSATURDAY_WINDOW
03-FEB-18 06.00.00.000000 AM PRC FALSE ENABLEDSUNDAY_WINDOW 04-FEB-18 06.00.00.000000 AM PRC FALSE ENABLEDMONDAY_WINDOW
05-FEB-18 03.00.00.000000 PM PRC FALSE ENABLEDSQL> select client_name,status from dba_autotask_client; –奇怪的是查询这个视图,确实是自动打开收集统计信息的设置。 CLIENT_NAME STATUS————————————— ——–auto optimizer stats collection ENABLEDauto space advisor ENABLEDsql tuning advisor ENABLEDSQL> select window_name,autotask_status from
DBA_AUTOTASK_WINDOW_CLIENTS
–自动调用窗口也是正常的。 WINDOW_NAME
AUTOTASK—————————— ——–MONDAY_WINDOW
ENABLEDTUESDAY_WINDOW
ENABLEDWEDNESDAY_WINDOW
ENABLEDTHURSDAY_WINDOW
ENABLEDFRIDAY_WINDOW ENABLEDSATURDAY_WINDOW
ENABLEDSUNDAY_WINDOW
ENABLED至此,问题较为清晰。11g中我的自动收集统计信息的相关设置都正常,但为什么不会自动收集统计信息了呢?也就是说为什么查询dba_autotask_task这个视图没有task在执行呢?最后,通过各方求助终于解决了问题。原因如下:SQL> select window_name,active from DBA_SCHEDULER_WINDOWS; WINDOW_NAME
ACTIV—————————— —–MONDAY_WINDOW
FALSETUESDAY_WINDOW
FALSEWEDNESDAY_WINDOW
FALSETHURSDAY_WINDOW TRUE FRIDAY_WINDOW
FALSESATURDAY_WINDOW
FALSESUNDAY_WINDOW
FALSEWEEKNIGHT_WINDOW
FALSEWEEKEND_WINDOW
FALSE正常来说所有的窗口都应该是 false的状态。但是 我们现有有一个是true,或许有可能是因为这个原因。这个窗口是周四的窗口,然后找一下最近一次自动收集统计信息的时间。SQL> select job_name,actual_start_date,status from (select * from
dba_scheduler_job_run_details where job_name like ‘ORA$AT_OS_OPT%’ order by
log_date desc ) where rownum
JOB_NAME ACTUAL_START_DATE STATUS—————————- ——————–免费主机域名———————————ORA$AT_OS_OPT_SY_260626-SEP-12 10.00.07.902100 PM PRC SUCCEEDEDORA$AT_OS_OPT_SY_2586 25-SEP-12
10.00.07.829792 PM PRC
SUCCEEDEDORA$AT_OS_OPT_SY_256624-SEP-12
10.00.07.154019 PM PRC
SUCCEEDED发现是12年9月26号。查询了一下万年历。26号正好是周三。而周四变成了true,可能是因为在收集统计信息的时候数据库不正常关闭导致的吧!现在将这个true改变为false。这里注意,如果你的生产环境很久很久没有自动收集统计信息了的状态下,请先在测试环境收集统计信息最好做个spa报告,不然很有可能影响生产。SQL> EXECUTE DBMS_SCHEDULER.CLOSE_WINDOW (‘THURSDAY_WINDOW’); 再次查询SQL> select window_name,active from DBA_SCHEDULER_WINDOWS; WINDOW_NAME ACTIV—————————— —–MONDAY_WINDOW
FALSETUESDAY_WINDOW
FALSEWEDNESDAY_WINDOW
FALSETHURSDAY_WINDOW FALSE FRIDAY_WINDOW
FALSESATURDAY_WINDOW
FALSESUNDAY_WINDOW
FALSEWEEKNIGHT_WINDOW
FALSEWEEKEND_WINDOW
FALSE都变为flase了。今天是周一。现在将周一的收集统计信息的时间变更一下。SQL> select WINDOW_NAME, WINDOW_NEXT_TIME ,
WINDOW_ACTIVE,OPTIMIZER_STATS from DBA_AUTOTASK_WINDOW_CLIENTS order by
WINDOW_NEXT_TIME ;
WINDOW_NAME
WINDOW_NEXT_TIME WINDO OPTIMIZE——————————
————————————– —– ——–MONDAY_WINDOW
29-JAN-18 10.00.00.000000 PM PRC FALSE ENABLEDTUESDAY_WINDOW
30-JAN-18 10.00.00.000000 PM PRC FALSE ENABLEDWEDNESDAY_WINDOW
31-JAN-18 10.00.00.000000 PM PRC FALSE ENABLEDTHURSDAY_WINDOW
01-FEB-18 10.00.00.000000 PM PRC FALSE ENABLEDFRIDAY_WINDOW
02-FEB-18 10.00.00.000000 PM PRC FALSE ENABLEDSATURDAY_WINDOW
03-FEB-18 06.00.00.000000 AM PRC FALSE
ENABLEDSUNDAY_WINDOW
04-FEB-18 06.00.00.000000 AM PRC FALSE ENABLED7 rows selected.修改自动收集时间窗口。SQL> begin 2
dbms_scheduler.disable( name =>
‘”SYS”.”MONDAY_WINDOW”‘, force => true);
3 end; 4 / PL/SQL procedure successfully completed.SQL> begin 2
dbms_scheduler.set_attribute( name=>
‘”SYS”.”MONDAY_WINDOW”‘,attribute =>
‘repeat_interval’,value=>’freq=daily;byday=mon;byhour=15;byminute=0;bysecond=0′);
3 end; 4 / PL/SQL procedure successfully completed.SQL> begin 2
dbms_scheduler.enable( name =>
‘”SYS”.”MONDAY_WINDOW”‘);
3 end; 4 / PL/SQL procedure successfully completed.修改成功SQL> select WINDOW_NAME,
WINDOW_NEXT_TIME , WINDOW_ACTIVE,OPTIMIZER_STATS from
DBA_AUTOTASK_WINDOW_CLIENTS order by WINDOW_NEXT_TIME ;
WINDOW_NAME
WINDOW_NEXT_TIME WINDO OPTIMIZE——————————
————————————— —– ——–MONDAY_WINDOW
29-JAN-18 03.00.00.000000 PM PRC FALSE ENABLEDTUESDAY_WINDOW
30-JAN-18 10.00.00.000000 PM PRC FALSE ENABLEDWEDNESDAY_WINDOW
31-JAN-18 10.00.00.000000 PM PRC FALSE ENABLEDTHURSDAY_WINDOW
01-FEB-18 10.00.00.000000 PM PRC FALSE ENABLEDFRIDAY_WINDOW
02-FEB-18 10.00.00.000000 PM PRC FALSE ENABLEDSATURDAY_WINDOW
03-FEB-18 06.00.00.000000 AM PRC FALSE
ENABLEDSUNDAY_WINDOW
04-FEB-18 06.00.00.000000 AM PRC FALSE ENABLED7 rows selected.跑完之后再次查询。SQL> select job_name,actual_start_date,status from (select * from
dba_scheduler_job_run_details where job_name like ‘ORA$AT_OS_OPT%’ order by
log_date desc ) where rownum
JOB_NAME ACTUAL_START_DATE STATUS—————————- —————————————— ————–ORA$AT_OS_OPT_SY_262629-JAN-18
03.00.00.732062 PM PRC
STOPPEDORA$AT_OS_OPT_SY_2606 26-SEP-12
10.00.07.902100 PM PRC SUCCEEDEDORA$AT_OS_OPT_SY_2586 25-SEP-12
10.00.07.829792 PM PRC SUCCEEDED果然,是因为这个窗口的问题。这个DBA_SCHEDULER_WINDOWS 正常的状态应该是false的状态,当系统调用时变为true的状态,现在因为数据库不正常关闭,导致了这个窗口并没有改变过来。所以数据库所有的收集作业都断了。再次查询
:SQL> select client_name,task_name,operation_name,status from
dba_autotask_task;
CLIENT_NAME TASK_NAME OPERATION_NAME STATUS——————————— —————————————————————————– ——–sql tuning advisor AUTO_SQL_TUNING_PROG automatic sql tuning task ENABLEDauto space advisor auto_space_advisor_prog auto
space advisor job ENABLEDauto optimizer stats collection gather_stats_prog auto optimizer stats job ENABLED通过在网上查询相关资料【http://blog.itpub.net/235507/viewspace-1137629/】,写到Oracle 11g统计信息自动收集任务运行任务调用的流程: 1、首先是dba_autotask_task–>dba_autotask_client建立自动执行任务2、再根据时间窗口及资源组建立自动执行作业dba_autotask_client–>dba_scheduler_window_groups–>dba_scheduler_windows–>dba_scheduler_jobsdba_autotask_client–>dba_scheduler_job_classes感谢各位的阅读!关于“Oracle 11g无法自动收集统计信息怎么办”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

相关推荐: 如何查看mysql默认读取my.cnf的目录

这篇文章给大家分享的是有关如何查看mysql默认读取my.cnf的目录的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。查看mysql默认读取my.cnf的目录如果没有设置使用指定目录的my.cnf,mysql启动时会读取安装目录根目录…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册