gpt4 book ai didi

Oracle ORA-00054 但可能没有锁

转载 作者:行者123 更新时间:2023-12-01 06:05:15 27 4
gpt4 key购买 nike

我有一个执行以下操作的旧代码:

ALTER TABLE A RENAME TO B;
ALTER TABLE C RENAME TO A;
ALTER TABLE B RENAME TO C;

它正在交换 2 个表 A 和 C。

问题:第三个alter table DDL抛出错误:

ORA-00054 资源忙

我不明白前两个 DDL 之后怎么可能有锁?此时每个事务都应该已经提交。

它经常发生,但并非总是如此 - 有时有效,有时无效。

在交换期间,其他 session 不可能更改此表数据 - 首先它是非常短的操作,其次 - 只有一个表(表 A)真正被使用,第二个更像是存档,所以没有人在上面执行任何 DML它。即使我们假设不太可能发生的情况是有人确实设法连接并锁定了某些东西——时间太短了,我可以理解它是否发生过一次,但它发生在每 2-3 次交换之后。

我没有线索。重命名表后是否有可能一些旧锁仍然处于事件状态?

谢谢

最佳答案

在第二条语句运行之后,但在第三条语句运行之前,某个其他 session 可能会锁定表 B (或者可能是子表或父表或依赖的 PL/SQL 包等)。

关于Oracle ORA-00054 但可能没有锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40912519/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com