固定表统计
Fixed Table统计信息
两年前的甲骨文
Oracle有大量内部视图供数据库管理员使用。这些视图的基础表以X$开头,固定对象是指以x$(以下称为基表)及其索引开头的表。
许多以v$开头的视图基表都是x$表,包括动态性能视图和管理视图,如dba_free_space等。因此,这些固定对象的统计极其重要。
1. Fixed objects统计信息重要性
当优化器生成执行计划时,它依赖于这些基表的统计信息。如果这些基表的统计信息缺失,与用户对象的统计信息不同,Oracle将使用动态采样,优化器将使用预设的默认值来评估这些缺失统计信息的基表上的执行计划。在这种情况下,实施计划可能会极其糟糕。因此,一些动态性能视图或数据字典可能会被缓慢查询。
例如,X$KTFBUE记录数据文件、范围位图和其他信息。当查询dba_free_space时,将使用这个基表。如果该表的统计信息为0,可能会导致dba_free_space查询速度变慢。当此基表的统计信息缺失时,此表中的默认行数为100,000行。
一个
2
三
四
五
六
七
八
九
列数据库_创建格式a18
列last_analyzed格式a18
选择dbid
,to_char(已创建,' dd.mm.yyyy hh24:mi ')数据库_创建
,版本
,(选择to_char(max(last_analyzed),' DD . mm . yyyy hh 24: mi ')last _ analyzed
来自dba_tab_statistics
其中object_type='FIXED TABLE ')最后分析
来自v $数据库,v $实例;
如何收集
12c之前,Oracle自动任务不收集基表的统计信息。以下过程需要手动执行。用户需要拥有sysdba或ANYWHERE DISCONE权限。
一个
exec DBMS_STATS。聚集_固定_对象_统计;
以上过程与DBMS_STATS的区别。collect _ TABLE _ STATS是它不收集表/索引的块信息,因为基表存储在内存中,随时动态变化,它们的块总是设置为0。
统计信息的采集会消耗资源,所以不建议在业务高峰期采集任何批次对象的统计信息。
12c以后,虽然自动任务窗口会收集基表的统计信息,但其限制在窗口时间内,优先级最低。等到收集到用户对象的统计信息,收集到数据字典的统计信息。同时这些基表的统计信息不存在,也就是说自动窗口不会更新基表的统计信息。因此,建议定期手动收集基表。
虽然基表的生命周期在内存中,但其统计信息将保存在磁盘中。因此,实例重新启动后,除非负载发生很大变化,否则没有必要重新收集统计信息。
2. Fixed tables统计信息对数据库的影响
它对DBA _区段、V $访问、V $ RMAN _备份_作业_详细信息、V $ RMAN _状态、DBA _空闲_空间等视图有很大的影响。很多时候,查询这些视图非常慢,这可能是因为基表的统计数据丢失或错误。
参考:
如何收集“系统”用户拥有的对象和“固定”对象的统计数据(文档号457926.1)
固定对象统计(收集固定对象统计)注意事项(文档编号798257.1)
使用Oracle数据库12c第2版收集优化程序统计信息的最佳实践
ORA-01555由作业“系统”的自动执行引起。PMO _ DEFERRED _ GIDX _ MAINT _ JOB '(单据号2523018.1)
数据库SQL优化指南-收集固定对象的统计信息
文件结束
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/103392.html