我错误地使用alter禁用table lock子句禁用了表上的锁。现在,我希望启用它的锁,因为我想使用以下状态更改表名:
SQL> alter account.acctbk_payment_seq启用表锁;alter account.acctbk_payment_seq启用表锁*第1行出错: ORA-00054:资源繁忙,并获得指定的或超时的
有理想吗?
谢谢你的答复。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或超时获取
发布于 2011-04-07 12:52:36
来自Oracle文档:
启用表锁指定启用表锁以启用表锁,从而允许对表进行DDL操作。在Oracle数据库启用表锁之前,所有当前正在执行的事务必须提交或回滚。
注意,这并不表示“正在使用表的所有当前执行事务”。我不确定这是否真的意味着在整个实例中不可能有任何未完成的事务,但可能是这样。
尝试摆脱所有访问数据库的会话,特别是任何可能对此表打开事务的会话。如果仍然得到错误,重新启动实例可能会有所帮助。
更新:听起来您可能需要一些来自Oracle的帮助。但我在支持网站上搜索了一下,发现了一些可能的原因。可能会有一个可疑的分布式事务接触到表。查看这些查询是否返回任何内容,如果返回,则需要解决这些挂起的事务:
SELECT * FROM DBA_2PC_PENDING;
SELECT * FROM DBA_2PC_NEIGHBORS;https://stackoverflow.com/questions/5579735
复制相似问题