当前位置: 首页 > Oracle, oracle 10g, oracle 11g > 正文

DBMS_STATS.GATHER_SCHEMA_STATS收集信息不准确

今天在做数据库试迁移的时候,利用DBMS_STATS.GATHER_SCHEMA_STATS收集信息后,发现新数据库(linux+oracle11gR2)和老数据库(Windows server2003+oracle10gR2)有6张表的数据对不上,比老系统的数据库表行数要少。

SQL> exec dbms_stats.gather_schema_stats(user);
PL/SQL procedure successfully completed.
SQL> select table_name,num_rows from user_tables where table_name='LOG';

TABLE_NAME                       NUM_ROWS
------------------------------ ----------
LOG                               3176994

查看EXPDP和IMPDP日志,导出和导入的数据是吻合的。

. . 导出了 "THAMS"."LOG"                        274.2 MB 3204300 行
. . imported "THAMS"."LOG"                    274.2 MB 3204300 rows

直接查看LOG表的行数,也是对的。

SQL> select count(*) from log;

  COUNT(*)
----------
   3204300

由于数据量对不上的6张表都超过了百万条记录,DBMS_STATS.GATHER_SCHEMA_STATS只是能良好的估量统计信息,并不是绝对的准确,在老系统数据库查询之后,除了LOG表,其他表的数据也都对。

SQL> select count(*) from log;

  COUNT(*)
----------
   3206132

可是为什么3206132条记录EXPDP只导出了3204300条记录,通过查看LOG表后得出结论,由于是试迁移,老系统程序并未停止,一直有用户在使用,LOG表一直在记录这些用户的操作信息,所以LOG表数据一直在增长,在做EXPDP操作之后,LOG表从3204300条记录增长到3206132条。

本文固定链接: http://www.dbdream.com.cn/2011/11/dbms_stats-gather_schema_stats%e6%94%b6%e9%9b%86%e4%bf%a1%e6%81%af%e4%b8%8d%e5%87%86%e7%a1%ae/ | 信春哥,系统稳,闭眼上线不回滚!

该日志由 dbdream 于2011年11月02日发表在 Oracle, oracle 10g, oracle 11g 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: DBMS_STATS.GATHER_SCHEMA_STATS收集信息不准确 | 信春哥,系统稳,闭眼上线不回滚!
关键字: ,

DBMS_STATS.GATHER_SCHEMA_STATS收集信息不准确:等您坐沙发呢!

发表评论

快捷键:Ctrl+Enter