一次ORA-4030问题诊断及解决(二)
2008-09-08 12:51:16 来源:WEB开发网这是现在目标数据库的相关统计信息,在看源数据库的统计信息:
SQL>SELECT*FROMGLOBAL_NAME;
GLOBAL_NAME
--------------------------------------------------------------------------
ORCL
SQL>SELECTCOLUMN_NAME,NUM_DISTINCT,NUM_NULLS,DENSITY,NUM_BUCKETS
2FROMUSER_TAB_COLUMNS
3WHERETABLE_NAME='ORD_HIT_COMM'
4ANDCOLUMN_NAME='ENABLE_FLAG';
COLUMN_NAMENUM_DISTINCTNUM_NULLSDENSITYNUM_BUCKETS
-------------------------------------------------------
ENABLE_FLAG202.9971E-071
SQL>SELECT*FROMUSER_TAB_HISTOGRAMS
2WHERETABLE_NAME='ORD_HIT_COMM'
3ANDCOLUMN_NAME='ENABLE_FLAG';
TABLE_NAMECOLUMN_NAMEENDPOINT_NUMBERENDPOINT_VALUEENDPOINT_ACTUAL_VALUE
----------------------------------------------------------------------------
ORD_HIT_COMMENABLE_FLAG02.4988E+35
ORD_HIT_COMMENABLE_FLAG12.5507E+35
从上面的查询上看,所有的统计信息完全一致。既然统计信息完全一致,为什么Oracle认为SQL语句的返回记录会有这么大的差别呢,从而导致了SQL执行计划的不同。
看来前面推断迁移过程中的错误导致问题的产生是不正确的,因为现在看到这个列上的统计信息是完全一致的。那么完全相同的统计信息如何产生不同的结果呢,莫非真的是9204和9201版本之间的差异,看来只能通过10053事件来进行分析了。
在目标数据库9204上设置10053事件,并检查得到的trace文件:
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接