【问题标题】:ORA-00054 error when trying to delete table尝试删除表时出现 ORA-00054 错误
【发布时间】:2015-12-08 22:07:41
【问题描述】:

当我在 oracle sql-developer 上尝试这个命令时:

delete from my_table;

我收到以下错误:

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

我还没有想出如何解决这个问题。

【问题讨论】:

标签: sql oracle


【解决方案1】:

某人或您自己(无意中)在桌子上有一把锁。 查询表V$LOCKED_OBJECTS 以查找锁定它的用户名(您可能希望OS_USER_NAME)。

您可以要求用户解锁表。他们将不得不提交/回滚他们的事务。如果他们无法这样做并允许您终止他们的会话,您可以使用以下方法:

alter system kill session 'sid, serial#'

要杀死他们在您的表上锁定的会话,其中“sid”和“serial#”是您必须通过查询v$session,v$sqlarea 表找到的东西。

这也可以在 SQL 开发人员中完成,您可以从菜单 Tools --> Monitor Sessions 中找到会话(如果您的用户可以访问元表) 右键单击正确的会话记录(非常重要)并选择 mark for kill。一旦会话被终止,您应该能够删除记录。

【讨论】:

  • 在应用程序中,死锁是设计不佳的标志。在 SQL Developer 中,这可能只是混乱的开发实践。在任何一种情况下,终止阻塞会话都应该是最后的手段(这就是它是受限特权的原因)。
  • 当我尝试执行查询时:select * from V$LOCKED_OBJECTS;我收到“表或视图不存在”错误...
  • @ArLi91 您必须让您的 DBA / 系统管理员为您执行此操作。您似乎缺乏访问V$LOCKED_OBJECTS 表的必要权限
  • 以防万一有人为此感到困惑,它是 v$locked_object(单数),而不是 v$locked_objects(复数)
【解决方案2】:

与数据库管理员核实。他们可以检查桌子是否有任何问题。可能是有人在不同的会话中在桌子上表演某事。管理员可以终止会话。然后,您将能够删除/截断表格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-02
    • 2015-06-18
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    相关资源
    最近更新 更多