2008-12-01 31 views
0

許多存儲過程我支持通過WAN查詢遠程數據庫。網絡偶爾會出現故障,但是發生的最糟糕的情況是程序失敗,必須重新啓動。網絡中斷導致存儲過程通過數據庫鏈接查詢以永久掛起

在過去的幾個星期,這是一個邪惡的轉折。而不是失敗的程序掛在一個奇怪的鎖定狀態。他們不能在Oracle內部被殺,只要他們存在任何嘗試運行該程序的其他副本就會掛起。我們發現的唯一解決方案是通過操作系統中的「kill -9」殺死違規程序。其中一些程序幾個月甚至幾年都沒有改變,所以我懷疑DB或DB配置中存在根本原因。

任何人有任何想法,我們可以做什麼來解決問題?或者PL/SQL有一個超時機制,我可以將其添加到代碼中,以便我可以創建一個可以以編程方式處理的異常?

回答

0

我們從未能夠確定是什麼導致了這種情況發生。我們認爲這是2008年10月累計補丁的一個缺陷。也許是後來修補它的補丁。它幾個月沒有發生(我們有一些網絡中斷),希望問題消失。

1

什麼數據庫版本?他們堅持運行SQL還是PL/SQL? 有沒有人最近在例程中添加了異常處理?我記得在9iR2中,我們被告知,相反,或者引發例程調用,我們要捕獲所有的異常並繼續運行(基本上嘗試運行處理作業中的所有項目,即使某些失敗)。 我們不可避免地會因爲SQL失敗而陷入無限循環,被異常處理程序捕獲並再次嘗試。而且他們也不會因爲其他人也抓到'你的會議已被殺死'的例外而被殺害。我認爲後者改變了10g,以便異常沒有被捕獲。

+0

Oracle Database 10g企業版版本10.2.0.3.0 - 64bi PL/SQL存儲過程。我審查了程序,我沒有看到任何地方無限循環。有趣的是,在第一次發生之前的4天,安裝了10月份的CPU。可能導致了它? – Jeff 2008-12-01 20:41:31