【问题标题】:Error ORA-00054 resource busy and acquire with NOWAIT specified or timeout expired in oracle11g错误 ORA-00054 资源繁忙并在 oracle11g 中指定了 NOWAIT 或超时已过期
【发布时间】:2012-10-09 20:04:51
【问题描述】:

我正在使用 oracle11g 数据库。我有一个名为phonenumbers_tbl 的表,我在该表上执行了DROP 命令。但它返回错误resource busy and acquire with NOWAIT specified or timeout expired。之后,我使用命令alter session set ddl_lock_timeout = 600 更改会话并再次尝试删除表。但是这个错误仍然存​​在

【问题讨论】:

    标签: oracle11g oracle-sqldeveloper database-administration


    【解决方案1】:

    尝试先执行此操作,并检查other sessionyour session 是否有人在该表上加了锁。如果you 已在该表上加了锁,请尝试执行commit/rollback。如果@987654325 @把锁,问him/her或者你有没有权利kill his session。然后放下桌子。

               select session_id "sid",SERIAL#  "Serial",
        substr(object_name,1,20) "Object",
          substr(os_user_name,1,10) "Terminal",
          substr(oracle_username,1,10) "Locker",
          nvl(lockwait,'active') "Wait",
          decode(locked_mode,
            2, 'row share',
            3, 'row exclusive',
            4, 'share',
            5, 'share row exclusive',
            6, 'exclusive',  'unknown') "Lockmode",
          OBJECT_TYPE "Type"
        FROM
          SYS.V_$LOCKED_OBJECT A,
          SYS.ALL_OBJECTS B,
          SYS.V_$SESSION c
        WHERE
          A.OBJECT_ID = B.OBJECT_ID AND
          C.SID = A.SESSION_ID
        ORDER BY 1 ASC, 5 Desc
    

    【讨论】:

      【解决方案2】:

      是的!最后我得到了一个解决方案,将表 phonenumber_tbl 移动到另一个表空间 system 并删除表。

      【讨论】:

      • :这不是解决方案,它是一种替代方案 :),请尝试找出为什么这会给您 nowait 错误。
      【解决方案3】:

      首先获取表锁定会话然后终止会话
      选择 a.sid,a.serial#, a.username,c.os_user_name,a.terminal, b.object_id,substr(b.object_name,1,40) object_name 来自 v$session a, dba_objects b, v$locked_object c 其中 a.sid = c.session_id 和 b.object_id = c.object_id;

      ALTER SYSTEM KILL SESSION 'sid,serial#' ;

      【讨论】:

        猜你喜欢
        • 2011-06-18
        • 2018-03-16
        • 2013-10-04
        • 2011-03-05
        • 2023-01-30
        • 2016-03-28
        • 2022-10-24
        • 2011-07-02
        相关资源
        最近更新 更多