WEB开发网
开发学院数据库Oracle 一次ORA-4030问题诊断及解决(二) 阅读

一次ORA-4030问题诊断及解决(二)

 2008-09-08 12:51:16 来源:WEB开发网   
核心提示: 这是现在目标数据库的相关统计信息,在看源数据库的统计信息:SQL>SELECT*FROMGLOBAL_NAME;GLOBAL_NAME--ORCLSQL>SELECTCOLUMN_NAME,NUM_DISTINCT,NUM_NULLS,DENSITY,NUM_BUCKETS2F

这是现在目标数据库的相关统计信息,在看源数据库的统计信息: 

   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文件:

上一页  1 2 3 4 5  下一页

Tags:一次 ORA 问题

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接