2010-04-26 78 views
1

我有PL/SQL函數,它被編程爲對一組數據進行排序。當直接調用PL/SQL函數時,該函數可以正常工作,不會出現任何錯誤。PL/SQL函數執行時拋出進程內存錯誤

但是,當我通過Unix Shell腳本調用此函數時,即使腳本返回成功代碼並拋出Out Process Memory Error並且函數實際上未執行。

我已經驗證了DB指數空間和臨時空間,其中超過50%的自由空間

+4

「Out Process Memory Error」是否爲Oracle錯誤消息?我接近認爲問題不在於PL/SQL函數,而在於調用機制。 – 2010-04-26 07:10:18

+1

是的..我們需要更多的細節。 – Guru 2010-04-27 05:23:47

+0

既然你說過,你正在做一個排序,你可以檢查'sort_area_size'嗎?你也可以嘗試增加它。檢出http://stackoverflow.com/questions/1874044/how-to-sort-area-size-increase/1874188#1874188 – Guru 2010-04-27 05:25:32

回答

1

你所得到的錯誤大概是ORA-04030: out of process memory。這意味着你的進程正在達到內存限制。 (比如durr)。

爲什麼當你在查詢中調用函數時它沒有打到你?誰可以告訴?也許你正在整理不同數量的數據?也許有不同的環境條件?

此錯誤可能表明您的內存不足,但也可能意味着您的交換空間不足(即磁盤空間)。如果它是RAM,並且您有一些備用容量,則可以增加pga_aggregate_target。如果它是交換,那麼你需要讓你的系統管理員的案件。

+1

批處理作業可能運行時使用不同的語言(NLS_LANG/NLS_TERRITORY)設置。 – 2010-05-02 23:19:31