在11g中,自动分析跟10g或者以前的版本有明显区别,查询的方式不一样。在10g中,优化统计信息的收集是通过scheduler job来自动完成的,dba可以通过dbms_scheduler package的enable procedure与disable procedure来启动与关闭,在11g中,oracle提供了全新的package dbms_auto_task_admin来完成统计信息的收集工作。最直观的方法还是通过OEM查看调度中心,里面可以看到有哪些调度。
oracle的自动分析,默认是每天晚上10:00到第二天早上6:00以及周六全天运行,对于某些应用的系统,如果晚上和周末也并不是空闲时候,那么自动分析功能也许会影响业务系统的性能,我们的系统前端时间就是每天晚上22:30左右以及有时的周六严重受影响,后来我关掉自动分析后,业务系统有很明显改善,在以前那些时段几乎一样正常工作。
至于关闭11g 自动分析的方法,可以通过oem关闭,也可以通过plsql关闭,通过oem关闭的方法我就不说了,我下面主要说下通过plsql关闭的方法:
BEGIN DBMS_AUTO_TASK_ADMIN.DISABLE( client_name => 'auto optimizer stats collection', operation => NULL, window_name => NULL); END; /
自动分析每次运行的时间很长,所以要查看它运行的状态和job名,按照之前的10g的方法是查询不到的。因为每次通过自动分析产出的过程名都不一样,都是类似于 '"SYS"."ORA$AT_SA_SPC_SY_7644"'这样的,另外跟自动分析一起运行的调度还有一个auto space advisor 这个也是可以关闭的。关闭的方法跟上面一样,只需修改下名称即可。
BEGIN DBMS_AUTO_TASK_ADMIN.DISABLE( client_name => 'auto space advisor', operation => NULL, window_name => NULL); END; /
对于11g版本的oracle 有三个自动维护定时任务。
1: 自动优化器统计收集:为所有方案对象收集陈旧的或缺少的统计数据,所收集的统计信息将被用来提高sql的执行的性能,任务名是“auto optimizer stats collection”
2 :自动分段顾问:标识数据库中的段是否有可以回收的空间,并以此信息统计为基础做出怎样整理段的碎片以节约空间。你也可以手动的执行此job来获取最新的建议信息,或者获取自动段advisor 不检测的但又可以回收的段的信息,任务名是“auto space advisor”
3 :自动SQL调整顾问:自动标识并尝试调整高负载的SQL,任务名是“sql tuning advisor”
s
ys@RAC> select client_name ,status from DBA_AUTOTASK_CLIENT; CLIENT_NAME STATUS ---------------------------------------------------------------- -------- auto optimizer stats collection ENABLED auto space advisor ENABLED sql tuning advisor ENABLED
管理自动维护的job
在oracle 10g中这些job被分别创建并且以DBA_SCHEDULER_JOBS.JOB_NAME的名称出现
然而在11g中则有所改变,通过视图DBA_AUTOTASK_WINDOW_CLIENTS可以查看他们一周七天的执行情况,包括
时间窗口,下次执行时间,job的名称,健康检查
sys@RAC> select * from DBA_AUTOTASK_WINDOW_CLIENTS;
WINDOW_NAME WINDOW_NEXT_TIME WINDO AUTOTASK OPTIMIZE SEGMENT_ADVISOR SQL_TUNE HEALTH_M
------------------ ---------------------------------- ----- -------- -------- --------------- -------- --------
WEDNESDAY_WINDOW 28-SEP-11 10.00.00.000000 PM PRC FALSE DISABLED ENABLED ENABLED ENABLED DISABLED
SATURDAY_WINDOW 01-OCT-11 06.00.00.000000 AM PRC FALSE DISABLED ENABLED ENABLED ENABLED DISABLED
THURSDAY_WINDOW 29-SEP-11 10.00.00.000000 PM PRC FALSE DISABLED ENABLED ENABLED ENABLED DISABLED
TUESDAY_WINDOW 27-SEP-11 10.00.00.000000 PM PRC FALSE DISABLED ENABLED ENABLED ENABLED DISABLED
SUNDAY_WINDOW 02-OCT-11 06.00.00.000000 AM PRC FALSE DISABLED ENABLED ENABLED ENABLED DISABLED
MONDAY_WINDOW 03-OCT-11 10.00.00.000000 PM PRC FALSE DISABLED ENABLED ENABLED ENABLED DISABLED
FRIDAY_WINDOW 30-SEP-11 10.00.00.000000 PM PRC FALSE DISABLED ENABLED ENABLED ENABLED DISABLED
7 rows selected.
DBMS_AUTO_TASK_ADMIN包的ENABLE和DISABLE存储过程能够实现关闭或者开启的三种job(不要任何参数):
execute DBMS_AUTO_TASK_ADMIN.DISABLE; execute DBMS_AUTO_TASK_ADMIN.ENABLE;
关闭指定的job
BEGIN dbms_auto_task_admin.disable( client_name => 'sql tuning advisor', peration => NULL, window_name => NULL); END; /
开启指定的job:
BEGIN dbms_auto_task_admin.enable( client_name => 'sql tuning advisor', peration => NULL, window_name => NULL); END; /
关闭周三sql优化器顾问的执行窗口
sys@RAC> BEGIN dbms_auto_task_admin.disable( client_name => 'sql tuning advisor', peration => NULL, window_name => 'MONDAY_WINDOW'); END; / PL/SQL procedure successfully completed.
sys@RAC> select * from DBA_AUTOTASK_WINDOW_CLIENTS;
WINDOW_NAME WINDOW_NEXT_TIME WINDO AUTOTASK OPTIMIZE SEGMENT_ADVISOR SQL_TUNE HEALTH_M
------------------ ---------------------------------- ----- -------- -------- -------------------- -------- --------
WEDNESDAY_WINDOW 28-SEP-11 10.00.00.000000 PM PRC FALSE ENABLED ENABLED ENABLED ENABLED DISABLED
SATURDAY_WINDOW 01-OCT-11 06.00.00.000000 AM PRC FALSE ENABLED ENABLED ENABLED ENABLED DISABLED
THURSDAY_WINDOW 29-SEP-11 10.00.00.000000 PM PRC FALSE ENABLED ENABLED ENABLED ENABLED DISABLED
TUESDAY_WINDOW 27-SEP-11 10.00.00.000000 PM PRC FALSE ENABLED ENABLED ENABLED ENABLED DISABLED
SUNDAY_WINDOW 02-OCT-11 06.00.00.000000 AM PRC FALSE ENABLED ENABLED ENABLED ENABLED DISABLED
MONDAY_WINDOW 03-OCT-11 10.00.00.000000 PM PRC FALSE ENABLED ENABLED ENABLED DISABLED DISABLED
FRIDAY_WINDOW 30-SEP-11 10.00.00.000000 PM PRC FALSE ENABLED ENABLED ENABLED ENABLED DISABLED
7 rows selected.
关闭星期天的自动段顾问job的时间窗口:
sys@RAC> BEGIN dbms_auto_task_admin.disable( client_name => 'auto space advisor', peration => NULL, window_name => 'SUNDAY_WINDOW'); END; / PL/SQL procedure successfully completed.
sys@RAC> select * from DBA_AUTOTASK_WINDOW_CLIENTS;
WINDOW_NAME WINDOW_NEXT_TIME WINDO AUTOTASK OPTIMIZE SEGMENT_ADVISOR SQL_TUNE HEALTH_M
------------------ ---------------------------------- ----- -------- -------- -------------------- -------- --------
WEDNESDAY_WINDOW 28-SEP-11 10.00.00.000000 PM PRC FALSE ENABLED ENABLED ENABLED ENABLED DISABLED
SATURDAY_WINDOW 01-OCT-11 06.00.00.000000 AM PRC FALSE ENABLED ENABLED ENABLED ENABLED DISABLED
THURSDAY_WINDOW 29-SEP-11 10.00.00.000000 PM PRC FALSE ENABLED ENABLED ENABLED ENABLED DISABLED
TUESDAY_WINDOW 27-SEP-11 10.00.00.000000 PM PRC FALSE ENABLED ENABLED ENABLED ENABLED DISABLED
SUNDAY_WINDOW 02-OCT-11 06.00.00.000000 AM PRC FALSE ENABLED ENABLED DISABLED ENABLED DISABLED
MONDAY_WINDOW 03-OCT-11 10.00.00.000000 PM PRC FALSE ENABLED ENABLED ENABLED DISABLED DISABLED
FRIDAY_WINDOW 30-SEP-11 10.00.00.000000 PM PRC FALSE ENABLED ENABLED ENABLED ENABLED DISABLED
7 rows selected.
sys@RAC>
10g 和 11g 中的对比信息 :
Subject 10g 11g
Jobs 以不同的job显示在 自动维护进程有一个'ORA$AT'前缀并且
DBA_SCHEDULER_JOBS中 一旦执行,则只是显示一个job而非多个!
Maintenance 10g有两个维护窗口
Window WEEKNIGHT and WEEKEND 每天有自己的时间窗口
Resource 默认不启用 为每周的窗口预定义资源计划
manager
原文链接:关于11G R2的自动分析,转载请注明来源!