日期:2011-03-21 00:21:00 来源:本站整理
<b>解析Oracle 8i/9i的筹划安定性</b>[Oracle防范]
本文“<b>解析Oracle 8i/9i的筹划安定性</b>[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
由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 ) as begin select v1 into io_v1 from so_demo where n1 = i_n1 and n2 = i_n2 ; end; / |
当然,也可以直接履行这个脚本来成立该历程--不过,为了更有效果,转到操作系统的号令行并且履行以下号令:
wrap iname=c_proc.sql
呼应是:
Processing c_proc.sql to c_proc.plb
这里不是通过履行c_proc.sql脚本来产生该历程,而是履行看不到源码的c_proc.plb脚本,你将会发目前user_source的视图中找不到我们的SQL语句.
以上是“<b>解析Oracle 8i/9i的筹划安定性</b>[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论