Sql 改变表,启用表锁;和ORA-00054

Sql 改变表,启用表锁;和ORA-00054,sql,oracle,ora-00054,Sql,Oracle,Ora 00054,我使用ALTERTABLEDABLE table lock子句错误地禁用了表上的锁。 现在我想对其启用锁,因为我想使用以下语句更改表名: SQL>alter table account.acctbk_payment_seq启用表锁; alter table account.acctbk_payment_seq启用表锁定 * 第1行错误: ORA-00054:资源繁忙,并在指定NOWAIT或超时过期的情况下获取 有什么理想吗 谢谢你的回复。 ora 1120 例如: create table sc

我使用ALTERTABLEDABLE table lock子句错误地禁用了表上的锁。 现在我想对其启用锁,因为我想使用以下语句更改表名:

SQL>alter table account.acctbk_payment_seq启用表锁; alter table account.acctbk_payment_seq启用表锁定 * 第1行错误: ORA-00054:资源繁忙,并在指定NOWAIT或超时过期的情况下获取

有什么理想吗

谢谢你的回复。 ora 1120 例如:

create table scott.t8 (id number);
alter table scott.t8 disable table lock;
alter table scott.t8 enable table lock;
ORA-00054:资源繁忙,并在指定NOWAIT或超时过期的情况下从Oracle文档获取:

启用表锁指定启用表 LOCK以启用表锁,从而 允许对表执行DDL操作。 所有当前正在执行的事务 必须在Oracle之前提交或回滚 数据库启用表锁

请注意,这并不是说“所有当前正在执行的使用该表的事务”。我不确定这是否真的意味着在整个实例中不可能有任何未完成的事务,但可能是这样的

尝试删除所有访问数据库的会话,尤其是可能打开此表的事务的会话。如果仍然出现错误,重新启动实例可能会有所帮助

更新:听起来您可能需要Oracle支持部门的帮助。但我在支持网站上搜索了一下,找到了一些关于可能原因的注释。可能有一个可疑的分布式事务正在接触该表。查看这些查询是否返回任何内容,如果返回,则需要解决这些挂起的事务:

SELECT * FROM DBA_2PC_PENDING;
SELECT * FROM DBA_2PC_NEIGHBORS;

谢谢,但是重新启动实例没有帮助。