查询oracle被锁对象并解锁

前端之家收集整理的这篇文章主要介绍了查询oracle被锁对象并解锁前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

@H_403_2@1、查询oracle被锁对象及其语句

@H_403_2@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"
@H_403_2@FROM ALL_OBJECTS A_S,
V$LOCKED_OBJECT V_T,
V$SESSION VN,
V$PROCESS VS
@H_403_2@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' );

@H_403_2@2、查询该sid的sql语句

@H_403_2@select * @H_403_2@from v$sql vl,v$session vn
@H_403_2@where vl.ADDRESS= decode(vn.sql_ADDRESS, null ,vn.PREV_sql_ADDR,VN.sql_ADDRESS)
and vn.sid=&sid;

@H_403_2@3、解锁

@H_403_2@alter system kill session 'sid,serial#' ;
--note:不能kill自身

4、查询被锁对象增强版

@H_403_2@SELECT DDL.OWNER @H_403_2@AS 用户,
DDL. @H_403_2@NAME @H_403_2@AS 对象,
DDL.type @H_403_2@AS 类型,
VS.OSUSER @H_403_2@AS OS_USER,
VS.MACHINE,
VS.STATUS,
VS.PROGRAM,
VS.logoN_TIME @H_403_2@AS "LOGIN_TIME" ,
VP.SPID,
'kill -9 ' || VP.SPID @H_403_2@AS OS_KILL,
vs.sid,
vs.SERIAL#,
'alter system kill session ''' || vs.sid || ',' || vs.serial# ||
''';' "ORACKE_KILL"
@H_403_2@FROM DBA_DDL_LOCKS DDL,V$SESSION VS,V$PROCESS VP
@H_403_2@WHERE DDL.SESSION_ID = VS.SID
AND VS.PADDR = VP.ADDR;

猜你在找的Oracle相关文章