Sei sulla pagina 1di 1

REM

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;
/

Potrebbero piacerti anche