代码一
--- 查看锁以DBA权限登录
select
S.MACHINE as "机器名",
S.SID as "SID",
S.SERIAL# as "Serial#",
O.OWNER as "拥有者",
O.OBJECT_NAME as "对象名",
O.SUBOBJECT_NAME as "子对象名",
O.OBJECT_ID as "对象ID",
O.OBJECT_TYPE as "对象类型",
L.ORACLE_USERNAME as "ORACLE系统用户名",
L.OS_USER_NAME as "操作系统用户名",
L.PROCESS as "进程编号",
S.LOGON_TIME as "登录时间",
S.PROGRAM as "程序名",
S.STATUS as "会话状态",
S.LOCKWAIT as "等待锁",
S.ACTION as "动作",
S.CLIENT_INFO as "客户信息"
from V$LOCKED_OBJECT L
left join DBA_OBJECTS O
on O.OBJECT_ID = L.OBJECT_ID
left join V$SESSION S
on S.SID = L.SESSION_ID
;
--杀死进程
alter system kill session '<SESSION_ID>,<SERIAL#>';
代码二
--- 查看锁以DBA权限登录
select LI.OWNER || '.' || LI.OBJ_NAME as 被锁对象名称,
LI.SUBOBJ_NAME as 被锁子对象名称,
SI.MACHINE as 机器名称,
LI.SESSION_ID as SESSION_ID,
SI.SERIAL# as SERIAL#,
LI.ORA_USERNAME as ORACLE系统用户名,
LI.OS_USERNAME as 操作系统用户名,
LI.PROCESS as 进程编号,
LI.OBJ_ID as 对象ID,
LI.OBJ_TYPE as 对象类型,
SI.LOGON_TIME as 登录时间,
SI.PROGRAM as 程序名,
SI.STATUS as 会话状态,
SI.LOCKWAIT as 等待锁,
SI.ACTION as 动作,
SI.CLIENT_INFO as 客户信息
from (select o.OWNER as OWNER,
o.OBJECT_NAME as OBJ_NAME,
o.SUBOBJECT_NAME as SUBOBJ_NAME,
o.OBJECT_ID as OBJ_ID,
o.OBJECT_TYPE as OBJ_TYPE,
lo.SESSION_ID as SESSION_ID,
lo.ORACLE_USERNAME as ORA_USERNAME,
lo.OS_USER_NAME as OS_USERNAME,
lo.PROCESS as PROCESS
from (select *
from all_objects
where object_id in (select object_id from v$locked_object)) o,
v$locked_object lo
where o.object_id = lo.object_id) LI,
(select SID,
SERIAL#,
LOCKWAIT,
STATUS,
PROGRAM,
ACTION,
CLIENT_INFO,
LOGON_TIME,
MACHINE
from V$SESSION) SI
where LI.SESSION_ID = SI.sid;
--杀死进程
alter system kill session '<SESSION_ID>,<SERIAL#>';