查询oracle被锁对象并解锁

前端之家收集整理的这篇文章主要介绍了查询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;

猜你在找的Oracle相关文章