dbms_の使用shared_义齿

3168 ワード

10 gで新しいdbms_が提供されましたshared_poolパッケージはこの機能を実現することができます(パッケージがインストールされていない場合は?/rdbms/admin/dbmspool.sqlでインストールできますが、11 gではインストールする必要はありません.
スクリプト:
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