由oralce8.1开始,oracle增加了一个新的特性就是stored outlines,或者称为plan stability(计划稳定性)。这个特性带来三个好处。首先,你可以优化开销很大的语句的处理。第二,如果有一些语句oracle需要花费长时间来优化(而不是执行),你可以节省时间并且减少优化阶段的竞争。最后,它可以让你选择使用新的cursor_sharing参数而无需要担心因此而不采用优化的执行路径。
要知道如何使用存储概要才是最优的,我们首先运行一些极度没有效率的sql的存储过程开始,要注意的是,我们不能修改源代码(理论上)。
【相关文章:一步一步教你加密解密技术——压缩与脱壳(】 【扩展阅读:一步一步教你加密解密技术——压缩与脱壳(】我们将看一下如何跟踪sql语句,并且查看它当前在数据库中的执行计划,找出一些提示来改进sql语句的性能,然后再重新执行该sql语句时,让oracle使用我们的提示。 【扩展信息:一步一步教你加密解密技术——软件保护技术】在这个示例中,我们将创建一个用户,在该用户的模式中建一个表格,并且创建一个存储过程访问该表格,我们将在这个存储过程上使用wrap工具,这样我们就不能通过反向方式得到源代码。然后我们将通过该存储过程来调试sql的执行。
例子中我们将假定存储慨要已经在数据库创建的时候被自动安装。
准备工作
创建一个用户,他的权限有:create session, create table, create procedure, create any outline, and alter session。以该用户连接并且运行以下的脚本来创建一个表格: create table so_demo ( n1 number, n2 number, v1 varchar2(10) ) ; insert into so_demo values (1,1,one); create index sd_i1 on so_demo(n1); create index sd_i2 on so_demo(n2); analyze table so_demo compute statistics; 接着需要编码来创建一个存储过程访问该表格。创建一个称为c_proc.sql的脚本,如下: create or replace procedure get_value ( i_n1 in number, i_n2 in number, io_v1 out varchar2 ) ... 下一页