使用dbms_shared_pool清除cursor

在10g中提供了新的dbms_shared_pool包可以實現該功能(如果該包沒有安裝,可以通過?/rdbms/admin/dbmspool.sql安裝,11g中不需要安裝;

腳本:


set echo off
set verify off
set serveroutput on
set lines 170
set pages 10
PROMPT
PROMPT +------------------------------------------------------------------------+
PROMPT | display one object type,owner,time,status                              |
PROMPT +------------------------------------------------------------------------+
PROMPT
ACCEPT sql_id prompt 'Enter Search Object Name (i.e. a6wbhyug5tand) : '
ACCEPT plan prompt 'Enter Heap 0(all info) or Heap 6(only plan) (i.e 1 or 6) : '
COL address  NEW_V address;
COL hash_value NEW_V hashvalue;
select address from v$sqlarea where sql_id='&sql_id'
/
select hash_value from v$sqlarea where sql_id='&sql_id'
/
alter session set events '5614566 trace name context forever';
exec dbms_shared_pool.purge ('&address,&hashvalue','C',&plan);
clear    breaks
set verify on
set serveroutput off
set feedback on
set linesize 78 termout on feedback 6 heading on;
set echo on
/

測試:

SQL> select sql_id,sql_text from v$sql where sql_text like '%+dw%';


SQL_ID

-------------

SQL_TEXT

------------------------------------------------------------------------------

1q3rx1rjj4xab

select sql_id from v$sql where sql_text like '%*+dw*%'


gkhyn9s0uj9q5

select sql_id,sql_text from v$sql where sql_text like '%*+dw*%'


SQL_ID

-------------

SQL_TEXT

------------------------------------------------------------------------------


cp9b3u7q0vdk2

select /* +dw*/ count(*) from t2


29b4zc69u7x32


SQL_ID

-------------

SQL_TEXT

------------------------------------------------------------------------------

select sql_id,sql_text from v$sql where sql_text like '%+dw%'



SQL> @cursor_purge

SQL> set echo off


+------------------------------------------------------------------------+

| display one object type,owner,time,status                              |

+------------------------------------------------------------------------+


Enter Search Object Name (i.e. a6wbhyug5tand) : cp9b3u7q0vdk2                                                

Enter Heap 0(all info) or Heap 6(only plan) (i.e 1 or 6) : 1


ADDRESS

----------------

00000000691C3F40



HASH_VALUE

----------

3960321602



Session altered.



PL/SQL procedure successfully completed.


SQL>

SQL> select sql_id,sql_text from v$sql where sql_text like '%+dw%'

 2  ;


SQL_ID

-------------

SQL_TEXT

------------------------------------------------------------------------------

5b7tntxrfwna4

select sql_id,sql_text from v$sql where sql_text like '%+dw%'


1q3rx1rjj4xab

select sql_id from v$sql where sql_text like '%*+dw


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章