日期:2014-05-16  浏览次数:20485 次

使用DBMS_SHARED_POOL包将PL/SQL大对象保存到Shared Pool

当系统在加载PL/SQL大对象时,有可能遭遇由于SharedPool中存在大量碎片导致没有足够空间加载的问题。
我们可以将那些经常被使用的PL/SQL大对象预先保存到Shared Pool中,防止加载失败以及经常被换出,提高系统运行效率。

1.创建存储过程初始化测试环境
这里使用文章《【PL/SQL】向表中插入连续数字之PL/SQL方法》(http://space.itpub.net/519536/viewspace-696181)中提供的方法创建一个简单的存储过程用于测试。
注:实际生产环境中,该方法用于保存PL/SQL大对象,而非本例中给出的样例存储过程。
sys@ora10g> conn sec/sec
Connected.
sec@ora10g> create or replaceprocedurep_insert
2 is
3 begin
4 for i in 1..10 loop
5 insert into t values(i);
6 end loop;
7 commit;
8 end;
9 /

Procedure created.

2.创建DBMS_SHARED_POOL包
系统默认情况下不会创建dbms_shared_pool这个包。我们可以使用dbmspool.sql脚本进行手工创建。
1)验证默认情况下DBMS_SHARED_POOL包未创建
sys@ora10g> desc dbms_shared_pool
ERROR:
ORA-04043: object dbms_shared_pool does not exist

2)执行创建DBMS_SHARED_POOL包脚本
sys@ora10g> @?/rdbms/admin/dbmspool.sql

Package created.


Grant succeeded.


View created.


Package body created.

3)查看创建成功的DBMS_SHARED_POOL包
sys@ora10g> desc dbms_shared_pool