Use DBMS_SHARED_POOL.purge
exec DBMS_SHARED_POOL.purge('ADRESS,HASH_VALUE','C',1);
Example :
select address,hash_value, executions, loads, version_count,
invalidations, parse_calls
from v$sqlarea
where sql_text like 'UPDATE OTPL_BASVURU_KULLANICI SET ORDER_ID%';
ADDRESS HASH_VALUE EXECUTIONS LOADS VERSION_COUNT INVALIDATIONS PARSE_CALLS
---------------- ---------- ---------- ---------- ------------- ------------- -----------
070000012EC6FB98 3630826165 1 1 1 0 1
alter session set events '5614566 trace name context forever'; --for 10.2.0.4 or 10.2.0.5
EXEC SYS.DBMS_SHARED_POOL.purge('070000012EC6FB98,3630826165','C',1);
or another flush sql
alter session set events '5614566 trace name context forever';
select ' EXEC SYS.DBMS_SHARED_POOL.purge('''||address||','||to_char(hash_value)||''',''C'',1);'
from v$sqlarea where hash_value=&hash_value;
Note1:Be careful usage of 'ADRESS,HASH_VALUE' not 'ADRESS','HASH_VALUE'
Note2:The create statement for this package can be found in the $ORACLE_HOME/rdbms/admin/dbmspool.sql script
Note3:DBMS_SHARED_POOL.PURGE is available from 11.1. In 10.2.0.4, it is available through the fix for Bug 5614566. However, the fix is event protected. You need to set the event 5614566 to make use of purge. Unless the event is set, dbms_shared_pool.purge will have no effect.
event="5614566 trace name context forever" #in init.ora for 10.2.0.4 or 10.2.0.5
or
alter session set events '5614566 trace name context forever';
Thursday, November 17, 2011
Subscribe to:
Posts (Atom)