首页 > 数据库 > Oracle > 正文
Oracle查看对象持有锁的情况
2011-09-27       个评论      
收藏    我要投稿

同事在测试库上对一个表加字段,提示 ORA-00054, 资源忙。 应该是表对象的锁没有释放。
 
用如下SQL 查看一下系统中相关对象上锁的情况:
 
view plain
/* Formatted on 2011/9/26 14:45:46(QP5 v5.163.1008.3004) */ 
SELECT S.SIDSESSION_ID, 
       S.USERNAME, 
       DECODE (LMODE, 
               0, ' None ', 
               1, ' Null ', 
               2, ' Row-S(SS) ', 
               3, ' Row-X(SX) ', 
               4, ' Share', 
               5, 'S/Row-X (SSX) ', 
               6, 'Exclusive ', 
               TO_CHAR (LMODE)) 
          MODE_HELD, 
       DECODE (REQUEST, 
               0, ' None ', 
               1, ' Null ', 
               2, ' Row-S(SS) ', 
               3, ' Row-X(SX) ', 
               4, ' Share', 
               5, 'S/Row-X (SSX) ', 
               6, 'Exclusive ', 
               TO_CHAR (REQUEST)) 
         MODE_REQUESTED, 
       O.OWNER|| ' . ' || O.OBJECT_NAME|| '  ( ' || O.OBJECT_TYPE|| ' ) ' as OBJECT_NAME, 
       S.TYPELOCK_TYPE, 
       L.ID1LOCK_ID1, 
       L.ID2LOCK_ID2 
  FROMV$LOCK L, SYS.DBA_OBJECTSO,V$SESSION S 
 WHERE L.SID = S.SID AND L.ID1 = O.OBJECT_ID 


 \
 

该SQL 显示所有对象上的锁,如果要查某个具体的对象,可以根据OBJECT_NAME 字段进行一下过滤,找到对应的SID 之后去查V$SESSION 视图。
 
该视图会显示session 对应的信息,包括终端的信息,如果找到了终端,可以让它提交或者回滚一下就OK了。 我这里是测试环境,直接把session kill 掉了。然后修改表就ok了。
 
view plain
SQL>alter system kill session 'SID,SERIAL#' 

作者“David Dai Oracle 笔记”

点击复制链接 与好友分享!回本站首页
相关TAG标签 对象 情况
上一篇:Oracle面试题
下一篇:启用oracle自动归档模式
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做实用的IT技术学习网站