【Oracle】11g Oracle自动收集统计信息

在oracle 10g之前并没有自动收集统计信息的机制,对统计信息的收集一般都是由DBA手工编写SHELL脚本来实现。这样就会出现根据表或者其他对象的变更,需要频繁的变更SHELL脚本来适应数据库对象的变更。另外,可能很多DBA没有意识到统计信息对优化器的重要性,导致很多的SQL无法得到正确的执行计划。


基于统计信息对CBO的重要性,所以oracle从10g版本开始引入了自动收集统计信息的功能。自动统计信息收集作业能够每天收集统计信息。默认情况下,该收集作业会自动判断如下方面的内容。

1、需要对哪些对象收集统计信息。

2、需要对哪些统计信息已经过期的对象重复收集统计信息。

3、以估算模式收集统计信息的采样比例(默认是以估算模式进行收集)

4、需要对哪些列收集直方图统计信息以及相应的Bucket 的数量。

5、是否启用并行收集以及相应的并行度。


当然使用oracle自动收集统计信息,必须要确保oracle的参数statistics_level的值为:TYPICAL或者 ALL 
30109892_1455882105dc7z.png

1. 11g的是 周一到周五 22:00-2:00 周六周日 6:00-4:00


SELECT w.window_name, w.repeat_interval, w.duration, w.enabled FROM dba_autotask_window_clients c, dba_scheduler_windows w
WHERE c.window_name = w.window_name AND c.optimizer_stats = 'ENABLED';


2. 查看job


    select client_name,status from dba_autotask_client;


3. 禁用自动收集


    exec DBMS_AUTO_TASK_ADMIN.DISABLE(client_name => 'auto optimizer stats collection',operation => NULL,window_name => NULL);


4. 启用自动收集


    exec DBMS_AUTO_TASK_ADMIN.ENABLE(client_name => 'auto optimizer stats collection',operation => NULL,window_name => NULL);
    
    
查看表的统计信息是否过期
SELECT owner,
       table_name,
       object_type,
       stale_stats,
       last_analyzed
FROM   dba_tab_statistics
WHERE  owner = '&OWNER'
       AND table_name = '&TABLE_NAME';




来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30327022/viewspace-2136048/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30327022/viewspace-2136048/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值