解析Oracle 8i/9i的计划稳定性
2006-08-05 11:58:19 来源:WEB开发网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语句。
这个应用的作用是什么?
现在我们已经产生了一个模拟的应用,我们就可以运行它,打开sql_trace,看看有什么事情发生。我们将会发现这个SQL执行一个全表搜索来得到请求的数据。
在这个测试中,全表检索或许是最有效的方式--不过让我们假定已经证明使用一个单列的索引和and-equal选项才是最佳的执行路径时,我们可以怎样修改呢(无需在代码中加入提示)?
通过存储概要,答案是简单的。要达到我下面所做的事情实际上有好几种方法,因此不要认为这是唯一的做法。Oracle一直改进它的特性以方便使用,这里所讲的技术或许在未来的一个版本中就会消失。
你想该应用做什么?
要令Oracle如我们所想的那样运作,有三个阶段:
. 启动一个新的session(连接),然后重新运行该过程,首先告诉Oracle我们要跟踪将要运行的SQL语句和该SQL使用的路径。这里说的"路径"就是我们存储概要的第一个例子。
. 为有问题的SQL语句创建更好的存储概要,然后用好的代替有问题的。
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接