【DB笔试面试630】在Oracle中,怎样收集表的统计信息?怎样收集分区表的统计信息?...
♣
题目部分
在Oracle中,怎样收集表的统计信息?怎样收集分区表的统计信息?
♣
答案部分
主要采用DBMS_STATS.GATHER_TABLE_STATS包进行统计信息的收集,如下所示:
1DBMS_STATS.GATHER_TABLE_STATS(USER,'TB_NAME',CASCADE=>TRUE);--普通表
2DBMS_STATS.GATHER_TABLE_STATS(USER,'TB_NAME',PARTNAME=>'PT_PART_NAME',GRANULARITY=>'PARTITION',CASCADE=>TRUE);--针对分区表的单个分区进行收集统计信息
除此之外,还有一些其它的用法,如下所示:
l EXEC DBMS_STATS.GATHER_DATABASE_STATS();--收集当前数据库下所有用户的统计信息
l EXEC DBMS_STATS.GATHER_SCHEMA_STATS(USER);--收集用户下所有对象的统计信息
当系统的分区表数据量很大时,如果每次都收集全部的分区必然会导致统计信息的收集非常慢,在Oracle 11g之后可以通过设置INCREMENTAL来只针对数据有变动的分区做收集:
1EXEC DBMS_STATS.SET_TABLE_PREFS(USER,'TABLE_NAME','INCREMENTAL','TRUE');--只收集数据变动的分区
2SELECT DBMS_STATS.GET_PREFS('INCREMENTAL',NULL,'TABLE_NAME') FROM DUAL;--查看分区表INCREMENTAL的值
本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗

---------------优质麦课------------
详细内容可以添加麦老师微信或QQ私聊。
About Me:小麦苗
● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● QQ:646634621 QQ群:618766405
● 提供OCP、OCM和高可用部分最实用的技能培训
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
DBA宝典
长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。