前端之家收集整理的这篇文章主要介绍了
查询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#'
;
|
4、查询被锁对象增强版
@H_403_2@SELECT
DDL.OWNER
@H_403_2@AS
用户,
DDL.
@H_403_2@NAME
@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;
|