love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

Phone:18180207355 提供专业Oracle/MySQL/PostgreSQL数据恢复、性能优化、迁移升级、紧急救援等服务

关于outline的一点测试和总结

本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

本文链接地址: 关于outline的一点测试和总结

我们知道 outlines 特性在oracle 8i就引入了,不过我用的很少,今天同事问到了,
我也就再回顾温习一下,如下是做的简单测试。

首先来看看2个跟outline相关的参数:

create_stored_outlines — 控制是否自动创建outline
use_stored_outlines — 控制是否启用outline

使用outline的方式有很多种,列出如下几种方式:

1. 针对sql语句或sqlid

这里需要说明一下的是alter session set create_stored_outlines = true;这是由于bug5454975的缘故(10204已经修复)
虽然我这里是10204,不过我还是设置了一下,列出来说明,以提醒大家。详见metalink ID 445126.1

最后再补充一下,如果不用outline,那么可以将其删除,可以通过如下的几种方式:


关于outlines的使用,有几个需要注意的地方:


1. 参数cursor_sharing设置为force时,outlines将无效;
2. literial sql的共享程度不高的情况下,使用outline会生产很多个执行计划,可能会有一些问题;
3. 一般情况我们在使用outline的时候,也是发现某个sql的执行计划不稳定的时候,由于执行计划是基于
统计信息的,那么由于生产系统中统计信息可能是在不断的变化,那么使用outline固定的执行计划不见得
一定就是最好的,这一点需要考虑。
4. 由于outlines信息的存放在用户outln下,那么该用户就显得尤为重要,维护的时候需要注意,不能随便给drop了。
5. outline创建以后,不是说就一层不变了,可以进行编辑,至于什么时候编辑,怎么编辑,大家可以参考
metalink文档 730062.1 How to Edit a Stored Outline to Use the Plan from Another Stored Outline。

Leave a Reply

You must be logged in to post a comment.