Oracle查看对象持有锁的情况

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 23:56 点击:

同事在测试库上对一个表加字段,提示 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 笔记”

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Table函数使用简介
      • Oracle数据库Constraint约束的常用操作及异常处理
      • Bulk Collect性能分析(zz)
      • export/import的使用
      • OCP043第十五讲 Database Security
      • ORACLE10gr2数据导入MySQL方案
      • oracle 让sys用户可以使用isqlplus
      • 在oracle数据库下使用iSQL*Plus DBA访问数据库
      • Oracle行列转换小结
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1