Oracle 根據SQL_ID查詢並殺會話,清空執行計划緩沖池
2018年09月06日 10:31:40 小學生湯米 閱讀數:473
1. 查詢最近五分鍾內最高頻次SQL,查看event
select t.SQL_OPNAME,t.SQL_ID,count(*) from v$active_session_history t where t.SAMPLE_TIME>to_timestamp('20180906-09:55:00','YYYYMMDD-hh24:mi:ss') and t.SESSION_TYPE='FOREGROUND'
group by t.SQL_OPNAME,t.SQL_ID order by count(*) desc;
2、 根據SQL 查詢到操作用戶
select s.username from v$active_session_history t,dba_users s where t.USER_ID=s.user_id and t.SQL_ID='0nx7fbv1w5xg2';
3、查詢並獲取當前sql的殺會話語句
select 'alter system kill session '''|| t.SID||','||t.SERIAL#||''';' from v$session t where t.SQL_ID='0nx7fbv1w5xg2';
4、查詢並獲取當前會話的執行計划清空過程語句
select SQL_TEXT,sql_id, address, hash_value, executions, loads, parse_calls, invalidations
from v$sqlarea where sql_id='0nx7fbv1w5xg2';
call sys.dbms_shared_pool.purge('0000000816530A98,3284334050','c');