微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

查询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;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐