我在我的 Oracle 数据库中使用表锁定。我有一个小程序,它有一个功能可以锁定我的表,做一些事情然后再次解锁。如果运行许多实例并同时发出请求,则表锁将排队,就像更新或其他表修改一样。
本着积极预防错误的精神,我担心如果数据库崩溃或由于任何原因突然变得不可用,而表被锁定,队列中的程序实例将被卡在那里,等待永远不会到来的答案。
显然,冻结我的程序是不可取的。有什么方法可以让请求在设定的时间后从队列中删除自己?也许有更好的方法来做到这一点?
如果这被证明是一个问题,我知道我可以在我的表锁中使用 NO WAIT 参数,然后在放弃之前重复请求一段时间,但这似乎效率很低而且我失去了数据库队列的好处.
你怎么看?
从 Oracle 11gR1 开始,您可以使用
WAIT
DDL 中的指令:这将在放弃之前等待 10 秒。
WAIT指令在DML 中已经存在了很长时间(9i):