存储过程DBMS_SHARED_POOL.PURGE说明
Oracle 11g在DBMS_SHARED_POOL包中引入了一个名为PURGE的新存储过程,可将如下类型的具体对象从pool中清除掉
- 游标
- 包
- 序列
- 触发器
参数说明
DBMS_SHARED_POOL.PURGE (name VARCHAR2, flag CHAR DEFAULT 'P', heaps NUMBER DEFAULT 1);
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
NAME VARCHAR2 IN
FLAG CHAR IN DEFAULT
HEAPS NUMBER IN DEFAULT
- 参数flag
c : cursor
p/P :package/procedure/function.
t/T :type
r/R :trigger
q/Q : sequence
- name
若要清除的对象类型为cursor,则通过如下方法
- 确定要清除的SQL,并找出对应的SQL_ID
- 用SQL_ID从v$sqlarea中查出address和hash_value
- SELECT a."ADDRESS",a."HASH_VALUE",a."SQL_FULLTEXT" FROM v$sqlarea a WHERE a.sql_id = 'd06r9341vzuah';
- 将address,hash_value组合成参数name
- 执行过程exec dbms_shared_pool.purge('0000000B3A6551F8,62908752','C');