Oracle 11g统计信息收集
2013-11-01 21:26
288 查看
ORACLE 11G 统计信息新增了很多新特性,相对于10G自动收集部分有也很大改变。
2.延时发布功能 PUBLISH
可控制收集完统计信息是否立即发布到数据字典,还是挂起,由初始化参数控制
OPTIMIZER_USE_PENDING_STATISTICS ,默认为FALSE 立即发布,可以在SESSION基本设置,测试
新的统计信息对SQL 执行计划的影响,进而判断是否使用DBMS_STAT.PUBLISH_PRIVATE_STATS发布新
的统计信息。
新增此特性后,可以避免因假设产生错误执行计划的风险。
分区不再扫描,只扫描有变更的分区,然后加上静态分区的统计信息合并出global 统计信息,这样能
大大提高分区表统计信息收集的速度。
CLIENT_NAME LIKE '%stats%';
aa.OPTIMIZER_STATS
from dba_autotask_window_clients aa
order by window_next_time
a.client_name,
a.WINDOW_NAME,
a.JOBS_CREATED,
a.JOBS_STARTED,
a.JOBS_COMPLETED
from dba_autotask_client_history a
where a.client_name like '%stats%'
order by a.WINDOW_START_TIME ;
SELECT * FROM DBA_AUTOTASK_JOB_HISTORY A
WHERE A.CLIENT_NAME='auto optimizer stats collection'
ORDER BY JOB_START_TIME;
from dba_autotask_client_job j
where j.CLIENT_NAME like '%stats%'
设置收集统计信息选项
设置global的统计信息收集选项
EXEC DBMS_STATS.SET_PARAM('DEGREE',4);
获取global的统计信息收集设置选项
select dbms_stats.get_perfs() FROM DUAL;
select dbms_stats.get_prefs('method_opt') from dual
select dbms_stats.get_prefs('concurrent') from dual
select dbms_stats.get_prefs('GRANULARITY') from dual
设置对象级别的收集统计信息选项
exec dbms_stats.set_table_prefs('XHL','TABLENAME','INCREMENTAL','TRUE');
获取对象级别的统计信息设置选型
SELECT * FROM DBA_TAB_STAT_PREFS
新特性:
1. 可分级设置统计信息收集参数
由高到底分为:global级别、数据库级别、schema级别、表级别,低级别的设置覆盖高级别的设置2.延时发布功能 PUBLISH
可控制收集完统计信息是否立即发布到数据字典,还是挂起,由初始化参数控制OPTIMIZER_USE_PENDING_STATISTICS ,默认为FALSE 立即发布,可以在SESSION基本设置,测试
新的统计信息对SQL 执行计划的影响,进而判断是否使用DBMS_STAT.PUBLISH_PRIVATE_STATS发布新
的统计信息。
3.对表达式收集统计信息
因为ORACLE 优化器假设WHERE FUCTION(COL) 的selectivity为1%,这样可能产生错误的执行计划。新增此特性后,可以避免因假设产生错误执行计划的风险。
4.STALE_PERCENT
设置某个对象的统计信息过期期限,缺省为10,变化数据为总记录的1/10 。5.INCREMENTAL
增量收集分区表的统计信息,此选项为TRUE时,收集分区表统计信息时,对数据没有产生变化的静态分区不再扫描,只扫描有变更的分区,然后加上静态分区的统计信息合并出global 统计信息,这样能
大大提高分区表统计信息收集的速度。
统计信息自动收集:
查询自动任务是否开启
SELECT OPERATION_NAME,STATUS FROM DBA_AUTOTASK_OPERATION WHERECLIENT_NAME LIKE '%stats%';
查看自动收集任务执行时间窗口
select window_name,window_next_time,optimizer_stats ,aa.WINDOW_ACTIVE,aa.SEGMENT_ADVISOR,aa.AUTOTASK_STATUS,aa.OPTIMIZER_STATS
from dba_autotask_window_clients aa
order by window_next_time
查看自动任务执行情况
select a.WINDOW_START_TIME,a.WINDOW_END_TIME,a.client_name,
a.WINDOW_NAME,
a.JOBS_CREATED,
a.JOBS_STARTED,
a.JOBS_COMPLETED
from dba_autotask_client_history a
where a.client_name like '%stats%'
order by a.WINDOW_START_TIME ;
SELECT * FROM DBA_AUTOTASK_JOB_HISTORY A
WHERE A.CLIENT_NAME='auto optimizer stats collection'
ORDER BY JOB_START_TIME;
开启自动任务
exec dbms_auto_task_admin.ENABLE(client_name => 'auto optimizer stats collection',operation =>'auto optimizer stats job',window_name=> null);关闭自动任务
exec dbms_auto_task_admin.DISABLE();查看正在执行JOB
select *from dba_autotask_client_job j
where j.CLIENT_NAME like '%stats%'
手动执行全量收集任务
exec dbms_auto_task_immediate.gather_optimizer_stats;设置收集统计信息选项
设置global的统计信息收集选项EXEC DBMS_STATS.SET_PARAM('DEGREE',4);
获取global的统计信息收集设置选项
select dbms_stats.get_perfs() FROM DUAL;
select dbms_stats.get_prefs('method_opt') from dual
select dbms_stats.get_prefs('concurrent') from dual
select dbms_stats.get_prefs('GRANULARITY') from dual
设置对象级别的收集统计信息选项
exec dbms_stats.set_table_prefs('XHL','TABLENAME','INCREMENTAL','TRUE');
获取对象级别的统计信息设置选型
SELECT * FROM DBA_TAB_STAT_PREFS
相关文章推荐
- Oracle 收集统计信息11g和12C在差异
- Oracle 11g系统自动收集统计信息的一些知识
- 启用oracle 11g自动收集统计信息
- Oracle 11g收集多列统计信息详解
- Oracle 11G统计信息自动收集及调整
- Oracle 收集统计信息在11g和12C下的区别
- 启用oracle 11g自己主动收集统计信息
- oracle 11g 自动收集统计信息 导致IO过大
- Oracle 11G自动收集统计信息
- Oracle 11g 之自动收集统计信息
- Oracle 11g系统自动收集统计信息的一些知识
- [Oracle] 11G自动收集统计信息
- [Oracle] 11G自己主动收集统计信息
- Oracle 11g统计信息收集--多列统计信息的收集
- Oracle 11g系统自己主动收集统计信息的一些知识
- Oracle 11g统计信息方面增强(二)
- 收集oracle统计信息2
- Oracle之自动收集统计信息
- oracle 10g如何关闭和打开自动收集统计信息
- oracle重新收集了schema的统计信息