WEB开发网
开发学院数据库Oracle 解析Oracle 8i/9i的计划稳定性 阅读

解析Oracle 8i/9i的计划稳定性

 2006-08-05 11:58:19 来源:WEB开发网   
核心提示: update outln.ol$hintsset ol_name =decode(ol_name,'SO_FIX','SYS_OUTLINE_020503165427311','SYS_OUTLINE_020503165427311',

update outln.ol$hints
set ol_name =
decode(
ol_name,
'SO_FIX','SYS_OUTLINE_020503165427311',
'SYS_OUTLINE_020503165427311','SO_FIX'
)
where ol_name in ('SYS_OUTLINE_020503165427311','SO_FIX')
;

对于这样做,你可能感到有点不习惯,特别是根据指南上的建议--不过这个更新在Metalink(译者注:这是Oracle的一个技术支持站点)上是允许的。不过,你还需要做第二次更新来确保和每个存储概要相联系的hints数目保持一致。如果你忽略了这一步,你将会发现你的一些存储概要被损坏,或者在一个导出/导入中的处理中被破坏。

update outln.ol$ ol1
set hintcount = (
select hintcount
from ol$ ol2
where ol2.ol_name in ('SYS_OUTLINE_020503165427311',' SO_FIX')
and ol2.ol_name != ol1.ol_name
)
where
ol1.ol_name in ('SYS_OUTLINE_020503165427311','SO_FIX')
;

一旦完成上面的语句,你就可以发起一个新的连接,告诉它使用存储概要,重新运行该过程然后退出;同样地,你可以使用sql_trace来确认Oracle确实是这样做的。要告诉Oracle使用修改后的存储概要,你可以使用以下的命令:

alter session set use_stored_outline = demo;

检查trace文件,你将会发现该SQL现在使用and_equal的路径(如果你使用tkprof来处理和解释trace文件,你将会发现输出显示了两个矛盾的路径。第一个将展示使用的and_equal路径,第二个将可能是一个全表搜索,这是因为在tkprof在跟踪的SQL上执行explain plan时,该存储概要可能没有被调用)。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:解析 Oracle 计划

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