【问题标题】:ORA-00054 Resource busy when dropping tableORA-00054 删除表时资源繁忙
【发布时间】:2011-07-02 15:18:55
【问题描述】:

有人能解释一下这个错误吗?

ORA-00054: 资源繁忙并使用指定的 NOWAIT 获取

此错误来自DROP TABLE。因此,程序和包没有被编译。

【问题讨论】:

  • 题目和题目有什么关系?
  • 实际上在我的程序中,我使用了一个表,每次执行该程序时都会删除该表。所以当我测试我的程序时,它正在无限执行。所以我尝试调试,,并发现从该表中删除的行需要时间...所以我试图删除该表..然后出现此错误...ORA-00054 资源繁忙并指定NOWAIT

标签: sql oracle plsql ora-00054


【解决方案1】:

您可能有针对该表运行的查询或作业。在长时间运行的查询/作业完成之前,您的对象无法重新编译或删除。或者,您可以终止除您的会话之外的任何会话,然后继续编译。

【讨论】:

  • @Bhuran ..我怎样才能杀死除当前正在运行的一个之外的所有 sesiion ..你能详细说明一下吗.. 谢谢
  • 如果您使用 TOAD 或 PL/SQL Developer,那么这很容易。您可以查看当前会话及其相关信息,例如登录的操作系统用户、发出会话的终端。
  • 如果您使用 TOAD 或 PL/SQL Developer,那么这很容易。您可以查看当前会话及其相关信息,例如登录的操作系统用户、发出会话的终端等。如果您使用 SQL 升级,您可以查询 v$session 以查看此信息。但是,您需要通过获取会话 ID 并发出命令来单独终止每个会话: SQL> Alter system kill session 'sid,serial#';您必须拥有查看(或终止)会话的必要权限。
【解决方案2】:

ORA-00054 表示其他会话锁定了数据库对象,这会阻止我们的操作完全成功。

您呈现的场景有点混乱,但基本上有人在桌子上有一个锁 - 可能他们正在针对它执行一些 DML - 在他们释放该锁之前您将无法删除它(即提交或回滚)。

说了这么多,我不确定您为什么要删除表来修复 PL/SQL 编译问题。您应该修改您的问题,让我们更清楚地了解您想要实现的目标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-05
    • 2016-03-28
    • 2011-06-18
    • 2012-10-09
    • 2018-03-16
    • 2013-10-04
    • 2017-08-07
    相关资源
    最近更新 更多