REM Author: Clive Bostock (Oracle Advanced Customer Services)
REM Date: Nov 2007 REM Script: UNPIN_SQL.SQL REM REM Description: REM REM Script to unpin SQL statements into the shared pool based on REM a specified SQL_ID and SQL Address REM REM Usage: REM REM From SQL Plus: REM REM SQL> @unpin_sql REM REM You will be prompted for a SQL_ID and SQL Address REM accept p_sql_id prompt 'Please enter SQL_ID of SQL to unpin: ' accept p_sql_addr prompt 'Please enter the Address of SQL to unpin: ' set linesize 100 set serverout on size 1000000 set verify off DECLARE CURSOR C_Sel(p_sqlid VARCHAR2, p_sqladdr VARCHAR2) IS SELECT sql_id, address, hash_value, substr(sql_text,1,40) as sql_text FROM v$sqlarea WHERE sql_id = p_sqlid AND address = p_sqladdr; BEGIN dbms_output.put_line('Pinning SQL:'); dbms_output.put_line('.'); dbms_output.put_line('SQL_ID Address Hash Value SQL Text'); dbms_output.put('============ ========= =========='); dbms_output.put_line(' ========================================'); FOR R_Sel in C_Sel('&&P_SQL_ID', '&&P_SQL_ADDR') LOOP dbms_output.put_line(R_Sel.SQL_ID ||' ' || R_Sel.Address||' ' || R_Sel.Hash_Value || ' ' || R_Sel.sql_text); dbms_shared_pool.unkeep(R_Sel.address ||','||R_Sel.hash_value,'C'); END LOOP; END; /