oracle数据库统计信息的重要性

昨天接到前同事的电话,他们做了数据迁移:业务数据由老服务器迁移到新服务器中。
老服务器上用oracle 9i,新服务器上用oracle 10g
迁移方法是:停止业务,按照每个schema进行exp imp的。

imp完之后,他们做业务测试,看业务功能是否运行正常。结果有一个功能菜单的结果始终出不来,于是就找到我。

我是这么问的:你是什么时间做的imp?他们说就是今天白天。听到这句话,我就明白了:十有八九是缺少统计信息。

于是,我让他们在数据库服务器上这么做:

sqlplus / as sysdba
exec dbms_stats.gather_schema_stats(ownname=> 'USER_A',degree=>4);
---注意:USER_A务必用大写!!!

然后,再次测试那个功能菜单,他们反馈说能运行成功了。