可在pl/sql中用如下sql语句来查询当前数据库中哪些表被锁住了,并且是哪些用户来锁的这些表:
select
a.owner, –object所属用户
a.object_name, –object名称(表名)
b.xidusn,
b.xidslot,
b.xidsqn,
b.session_id, –锁表用户的session
b.oracle_username, –锁表用户的oracle用户名
b.os_user_name, –锁表用户的操作系统登陆用户名
b.process,
b.locked_mode,
c.machine, –锁表用户的计算机名称(例如:workgroup\username)
c.status, –锁表状态
c.server,
c.sid,
c.serial#,
c.program –锁表用户所用的数据库管理工具(例如:ob9.exe)
from
all_objects a,
v$locked_object b,
sys.gv_$session c
where
a.object_id = b.object_id
and b.process = c.process
order by 1,2 同时可用如下命令来kill掉当前锁表的项:
alter system kill session ‘sid, serial#’
–例如:alter system kill session ’57, 10325