2011-10-21 76 views
2

如果我在捕獲ORA-00060死鎖異常(Oracle 10g)的PL/SQL函數中編寫代碼,只需回滾並重試交易,這種功能是否會在有限的時間內完成(您可以假設數據庫要完成的工作是有限的,而不是無限的流)?在循環中重試死鎖,它們最終會解決嗎?

是否有什麼特別的原因讓我在重試之前添加一個等待?

回答

1

一般來說,它取決於系統中的其他事務,特別是死鎖中涉及的其他事務正在做什麼。您可能會遇到第二次嘗試會因資源鎖定而無限期阻止,甚至會遇到第二次死鎖的情況。

至少,在實施此解決方案之前,我認爲您應該瞭解死鎖是如何發生的,並考慮第一個會話獲取異常時涉及的其他會話中可能發生的情況。