oracle查询锁表与解锁情况提供解决方案
数据库  /  管理员 发布于 6年前   162
如果发生了锁等待,我们可能更想知道是谁锁了表而引起谁的等待
以下的语句可以查询到谁锁了表:
复制代码 代码如下:
SELECT /*+ rule */ s.username,
decode(l.type,'TM','TABLE LOCK',
'TX','ROW LOCK',
NULL) LOCK_LEVEL,
o.owner,o.object_name,o.object_type,
s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser
FROM v$session s,v$lock l,dba_objects o
WHERE l.sid = s.sid
AND l.id1 = o.object_id(+)
AND s.username is NOT NULL
以下的语句可以查询到谁在等待:
复制代码 代码如下:
SELECT /*+ rule */ lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username User_name, o.owner,o.object_name,o.object_type,s.sid,s.serial#
FROM v$locked_object l,dba_objects o,v$session s
WHERE l.object_id=o.object_id
AND l.session_id=s.sid
ORDER BY o.object_id,xidusn DESC
解锁命令:
复制代码 代码如下:
alter system kill session 'sid,serial#'
1).
复制代码 代码如下:
select LOCK_INFO.OWNER || '.' || LOCK_INFO.OBJ_NAME as "已i物件名Q", --物件名Q(已被i住)
LOCK_INFO.SUBOBJ_NAME as "已i子物件名Q", -- 子物件名Q(已被i住)
SESS_INFO.MACHINE as "C器名Q", -- C器名Q
LOCK_INFO.SESSION_ID as "ID", -- SESSION_ID
SESS_INFO.SERIAL# as "SERIAL#", -- SERIAL#
SESS_INFO.SPID as "OS系y的SPID", -- OS系y的SPID
(SELECT INSTANCE_NAME FROM V$INSTANCE) "例名SID", --例名SID
LOCK_INFO.ORA_USERNAME as "ORACLE用", -- ORACLE系y用裘Q
LOCK_INFO.OS_USERNAME as "OS用", -- 作I系y用裘Q
LOCK_INFO.PROCESS as "M程", -- M程
LOCK_INFO.OBJ_ID as "οID", -- οID
LOCK_INFO.OBJ_TYPE as "ο箢型", -- ο箢型
SESS_INFO.LOGON_TIME as "登rg", -- 登rg
SESS_INFO.PROGRAM as "程式名Q", -- 程式名Q
SESS_INFO.STATUS as "B", -- B
SESS_INFO.LOCKWAIT as "等待i", -- 等待i
SESS_INFO.ACTION as "幼", -- 幼
SESS_INFO.CLIENT_INFO as "客糍Y" -- 客糍Y
from (select obj.OWNER as OWNER,
obj.OBJECT_NAME as OBJ_NAME,
obj.SUBOBJECT_NAME as SUBOBJ_NAME,
obj.OBJECT_ID as OBJ_ID,
obj.OBJECT_TYPE as OBJ_TYPE,
lock_obj.SESSION_ID as SESSION_ID,
lock_obj.ORACLE_USERNAME as ORA_USERNAME,
lock_obj.OS_USER_NAME as OS_USERNAME,
lock_obj.PROCESS as PROCESS
from (select *
from all_objects
where object_id in (select object_id from v$locked_object)) obj,
v$locked_object lock_obj
where obj.object_id = lock_obj.object_id) LOCK_INFO,
(select SID,
SERIAL#,
LOCKWAIT,
STATUS,
(select spid from v$process where addr = a.paddr) spid,
PROGRAM,
ACTION,
CLIENT_INFO,
LOGON_TIME,
MACHINE
from v$session a) SESS_INFO
where LOCK_INFO.SESSION_ID = SESS_INFO.SID
order by LOCK_INFO.SESSION_ID;
2).
复制代码 代码如下:
select sql_text
from v$sqltext
where address in (select sql_address from v$session where sid = &sid)
order by piece;
3).
复制代码 代码如下:
ALTER SYSTEM KILL SESSION 'ID,SERIAL#';
4).
kill -9 OS系y的SPID
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号