【发布时间】:2014-10-15 16:11:02
【问题描述】:
我正在尝试编写一个脚本,由不了解 pl/sql 的客户执行,
我在 PL/sql 中执行了一堆事务来清理它们的环境,然后必须添加一些约束以防止这种情况再次发生,我在清理后自动提交,并希望通过添加来完成我的 PL 块这些限制
唯一的问题是我不能保证表在尝试向它们添加约束时不会被锁定,在 oracle 中是否需要等待解锁类型的命令?
谢谢你,oracle 新手,似乎找不到这个,我已经梳理了一些 API,但在时间敏感性方面,当我认为它看起来很漂亮时,证明很难找到数据库管理的常规问题
【问题讨论】:
-
我不确定我是否理解这个问题。你关心什么样的锁?其他一些会话同时在桌子上做 DDL?或者其他一些会话同时在桌子上做 DML?假设您至少使用 11.1,也许您想在会话 oracle-base.com/articles/11g/ddl-lock-timeout-11gr1.php 中设置
DDL_LOCK_TIMEOUT参数。 -
DDL 和 ddl_lock_timeout 似乎对我的目的很好,不同类型的解决方案,但看起来非零就足够了 :) 谢谢!
-
我会把它设置为合理的,比如 5 分钟,如果是交互式的话。除非您拥有数据仓库,否则您不应再在 OLTP 数据库上运行事务,但 5 分钟为您提供合理的时间让锁成功并成功终止会话。