2014-10-30 48 views
0

我處於業務方面,對Oracle 11g數據庫沒有完整的DBA特權。我有建立和運行存儲過程所需的特權,並且我有一個無限期掛起的特權。Oracle PL/SQL>存儲過程無限期掛起

我們正在開發一個新系統,並有幾個生命週期。我的代碼在早期生命週期(稱爲AD)中100%正常工作,並無限期地掛在下一個生命週期(QA)中。它停在第一個主要的SQL拉,並永遠不會返回。

當我運行存儲過程內部的SQL作爲一個直接的SQL拉時,它會在2.6秒內返回(使用相同的輸入參數和相同的QA lifecyle服務器)。

由於我的權限,我的存儲過程內部看到的內容有限,我的DBA沒有深入瞭解PL/SQL代碼以幫助調試或排除故障。

所以,我的開放式問題是:會出現什麼問題?我知道這是模糊的。事情我已經檢查:

  • 數據庫有我檢查了我所有的輸入參數都不錯的表,我從
  • 拉的數據,他們正在從程序傳遞給函數,等
  • 我已經運行了相同的代碼以外的過程,它很快返回並顯示正確的數據。
  • 確切的代碼工作在較低的生命週期(從字面上複製/粘貼它從AD到QA)。
  • DBA說服務器環境完全相同(我不確定我相信他,但沒有直接的方法來驗證)。

你可以提供任何幫助將是金。我可以發佈代碼,但其長度大約爲2-3K,所以我不確定這會有幫助。給代碼工作正常,並按原樣複製/粘貼,我不認爲這是一個編碼問題,但系統/環境問題。

任何想法都會有所幫助。

在此先感謝!

+4

事實上,這可能是無法回答的,因爲它太寬泛 - 有太多可能的問題。你怎麼知道代碼「停在第一個主要的SQL拉」?你有權查看你的代碼正在等待什麼(你至少可以查詢'v $ session')嗎?你能否讓DBA幫助你診斷你的代碼正在等待什麼?你確定你在程序外運行的代碼實際上是相同的 - 例如,你是否在程序外使用了文字,並在裏面綁定變量? – 2014-10-30 12:28:19

+0

當我自我終止proc時,它停在同一行項目上,即第一個主要SQL拉的開始。我沒有特權來查看它正在等待什麼,並試圖從我們的DBA獲得調試權限,以便我可以看到更多(有一些部門間BS正在進行)。我正在對proc內部的SQL進行雙重檢查,並試圖縮小失敗的範圍。我正在檢查文字,因爲你已經說過了......我之前檢查過它們,但也許我錯過了一些東西。我知道這是非常廣泛的...即使我可以得到什麼要求我的DBA檢查的想法,這是有幫助的。 – rcfmonarch 2014-10-30 12:40:30

+0

你可以在這裏獲得大量關於S.O的信息。通過搜索'[oracle] v \ $ session'來調試Oracle(您需要轉義'$'char)。祝你好運。 – shellter 2014-10-30 13:22:29

回答

0

看起來像這個問題是無關的存儲過程。感謝所有的評論。 :)