统计信息自动执行需要以下条件满足杏彩源码搭建QQ2952777280:
dba_autotask_task 字段status值ENABLED
dba_autotask_client 字段status值ENABLED
dba_autotask_window_clients 字段AUTOTASK_STATUS值ENABLED OPTIMIZER_STATS值ENABLED WINDOW_ACTIVE值FALSE
dba_scheduler_windows 字段ENABLED值TRUE 字段ACTIVE值FALSE 字段DURATION值大于10分钟
dba_scheduler_jobs 字段ENABLED值TRUE
总结一下统计信息自动收集任务运行的步骤:
首先是dba_autotask_task-->dba_autotask_client建立自动执行任务
再根据时间窗口及资源组建立自动执行作业
dba_autotask_client-->dba_scheduler_window_groups-->dba_scheduler_windows-->dba_scheduler_jobs
dba_autotask_client-->dba_scheduler_job_classes
1、统计信息执行总任务查看视图dba_autotask_task
2、统计信息调用总过程查看视图dba_scheduler_programs
3、统计信息执行状态dba_autotask_client,可以通过如下进行修改,执行 DBMS_AUTO_TASK_ADMIN包,会更新dba_autotask_client的status字段和dba_autotask_window_clients的OPTIMIZER_STATS,SEGMENT_ADVISOR,SQL_TUNE_ADVISOR字段。
1BEGIN 2DBMS_AUTO_TASK_ADMIN.enable(client_name=>'auto optimizer stats collection', 3operation=>NULL, 4window_name=>'MONDAY_WINDOW'); 5END; 6 7BEGIN 8DBMS_AUTO_TASK_ADMIN.disable(client_name=>'auto optimizer stats collection', 9operation=>NULL,10window_name=>NULL);11END;
4、如果执行DBMS_AUTO_TASK_ADMIN包不加参数,则更改dba_autotask_window_clients的AUTOTASK_STATUS字段
1BEGIN2 DBMS_AUTO_TASK_ADMIN.enable();3END;4BEGIN5 DBMS_AUTO_TASK_ADMIN.disable();6END;
5、视图dba_scheduler_windows是统计信息执行的各种细节属性如(执行时间,执行时长等),可以通过如下进行设置
1--设置开始时间 2BEGIN 3DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."WEDNESDAY_WINDOW"', 4attribute=>'REPEAT_INTERVAL', 5value=>'freq=daily;byday=WED;byhour=07;byminute=46;bysecond=0'); 6END; 7--设置执行时长,如果设置值小于10分钟,统计信息貌似不能搜集 8BEGIN 9DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."WEDNESDAY_WINDOW"',10attribute=>'DURATION',11VALUE=>'+000 00:20:00');12END;13--禁用窗口,禁用后dba_autotask_window_clients视图相关信息消失14BEGIN15dbms_scheduler.disable(name=>'WEDNESDAY_WINDOW', force=> TRUE);16END;17--启用窗口18BEGIN19dbms_scheduler.enable(name=>'WEDNESDAY_WINDOW');20END;21--停止JOB22BEGIN23dbms_scheduler.stop_job('ORA$AUTOTASK_CLEAN');24END;25--手动打开窗口26BEGIN27dbms_scheduler.open_window('WEDNESDAY_WINDOW');28END;29--关闭窗口30BEGIN31dbms_scheduler.close_window('WEDNESDAY_WINDOW');32END;
注:在窗口执行的过程中dba_scheduler_windows视图ACTIVE字段是true状态,dba_autotask_window_clients视图WINDOW_ACTIVE字段也只true状态
表统计信息收集标识:
一个表中被修改的行数超过stale_percent(缺省值10%)时就会认为这个表的统计数据过时了。oracle会监控所有表的DML活动并在SGA中进行记录。监控的信息会定时的刷新到磁盘且可以通过*_tab_modifications视图来查看。
也可以调用dbms_stats.flush_database_monitoring_info过程来手动刷新这些数据.如果想在查询时得到最新信息(在所有统计数据收集之前内部监控数据会被刷新).可以通过查询user_tab_statistics视图中的stale_stats列来查看哪个表的统计数据过时了。 表的stale_stats被设置为NO,统计数据是最新的.表的stale_stats被设置为YES,统计数据是过时的.表的stale_stats没有被设置说明丢失统计数据.