该包提供了访问共享池的方法。通过执行@?/rdbms/admin/dbmspool.sql创建。能展示在共享池中的对象的大小,将对象keep或unkeep在共享池里,目的是减少碎片。
该存储过程对于加载大的pl/sql对象的时候很有用,当加载大pl/sql对象的时候,因为大量的小对象需要被交换出共享区来为大对象腾空间,所以用户的响应时间也是受影响。
dbms_shared_pool也对于频繁执行的触发器有影响。你也许回想要keep在频繁使用的表上的触发器在共享池中。另外dbms_shared_pool支持序列号。sequence在被交换出共享池的时候会中断。dbms_shared_pool将序号保存在共享池中,这样阻止了丢失序列号的问题。
下面是保存对象的例子
DBMS_SHARED_POOL.KEEP('scott.hispackage')
下面是显示一定大小对象的例子,这个方法显示了共享池中的大于指定尺寸的对象,在sqlplus中执行的时候,需要设置'SET SERVEROUTPUT
ON
SIZE
XXXXX'
来显示返回的结果
DBMS_SHARED_POOL.SIZES (
minsize NUMBER);
下面是unkeep的语法
DBMS_SHARED_POOL.UNKEEP (
name VARCHAR2,
flag CHAR DEFAULT 'P');