查詢oracle被鎖對象并解鎖
1、查詢oracle被鎖對象及其語句
SELECT a_s.owner, a_s.object_name, a_s.object_type, VN.SID, VN.SERIAL#, VS.SPID "OS_PID" , VN.PROCESS "CLIENT_PID" , VN.USERNAME, VN.OSUSER, VN.MACHINE "HOSTNAME" , VN.TERMINAL, VN.PROGRAM, TO_CHAR(VN.LOGON_TIME, 'YYYY-MM-DD HH24:MI:SS' ) "LOGIN_TIME" , 'alter system kill session ' '' ||vn.sid|| ',' ||vn.serial#|| '' ';' "ORACKE_KILL" , 'kill -9 ' || VS.SPID "OS_KILL" FROM ALL_OBJECTS A_S, V$LOCKED_OBJECT V_T, V$SESSION VN, V$PROCESS VS WHERE A_S.OBJECT_ID=V_T.OBJECT_ID AND V_T.SESSION_ID =VN.SID AND VS.ADDR=VN.PADDR AND VN.USERNAME NOT IN ( 'SYSMAN' , 'SYS' ); |
2、查詢該sid的sql語句
select * from v$sql vl,v$session vn where vl.ADDRESS= decode(vn.SQL_ADDRESS, null ,vn.PREV_SQL_ADDR,VN.SQL_ADDRESS) and vn.sid=&sid; |
3、解鎖
alter system kill session 'sid,serial#' ; --note:不能kill自身 |
4、查詢被鎖對象增強版
SELECT DDL.OWNER AS 用戶, DDL. NAME AS 對象, DDL.type AS 類型, VS.OSUSER AS OS_USER, VS.MACHINE, VS.STATUS, VS.PROGRAM, VS.LOGON_TIME AS "LOGIN_TIME" , VP.SPID, 'kill -9 ' || VP.SPID AS OS_KILL, vs.sid, vs.SERIAL#, 'alter system kill session ' '' || vs.sid || ',' || vs.serial# || '' ';' "ORACKE_KILL" FROM DBA_DDL_LOCKS DDL, V$SESSION VS, V$PROCESS VP WHERE DDL.SESSION_ID = VS.SID AND VS.PADDR = VP.ADDR; |
posted on 2013-10-09 16:59 gdufo 閱讀(4566) 評論(0) 編輯 收藏 所屬分類: Database (oracle, sqlser,MYSQL)