欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

深入探讨:Oracle中如何查询正锁表的用户以及释放被锁的表的方法

程序员文章站 2023-11-30 10:57:28
可在pl/sql中用如下sql语句来查询当前数据库中哪些表被锁住了,并且是哪些用户来锁的这些表: select  a.owner,  &nb...

可在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