日期:2014-05-17  浏览次数:20880 次

10g迁移到11g查询变得很慢
10g是32位的服务器配置为:CPU E5520*2 内存8G win2003

11g是64位的服务器配置为:CPU E5-4607*2 内存32G win2008r2

同样的查询语句
select A.*, B.*, C.*, D.*
  from MTR_RPT_CELL_E      A,
       Mtr_RPT_BASE        B,
       Sys_v_SecurityUsers C,
       Sys_v_District      D
 where A.RptID = B.ID
   And B.UserID = C.EMDID
   And B.DistrictID = D.DistrictID
   And D.Class <= 3
   And B.TemplateID = 21

Sys_v_SecurityUsers,Sys_v_District为视图。
在10g中执行5秒,而在11g中半个小时都查询不出来。
Oracle?11g

------解决方案--------------------
对比执行计划
------解决方案--------------------
奇怪的事情.. 为什么迁移至后很多都是走了索引,但是10G下面,全表扫描的方式反而要快一些?

LZ查询出结果集的大小?

是否有锁资源?

对涉及到的表做一下表分析呢? 
------解决方案--------------------
show parameter optimizer_mode;
看下优化器模式
------解决方案--------------------
这样的情况,我更加不觉得应该是头痛医头脚痛医脚,而是要根据awr等信息,具体分析,对比

优化应该不难