我有一些我認爲可能會發生內存泄漏的PL/SQL代碼。每次運行它時,它似乎都比之前的運行速度慢,速度慢,即使現在我正在減小輸入大小。我是可疑的代碼是從一個遊標使用批量收集,像這樣PL/SQL - 檢查內存泄漏?
open c_myCursor(in_key);
fetch c_myCursor bulk collect into io_Array; /*io_array is a parameter, declared as in out nocopy */
close c_myCursor;
我不知道如何檢查,看看是什麼導致這種放緩填充的數組。我知道在Oracle中有一些表格跟蹤這種內存使用情況,但我不確定是否可以查看這些表格並找到回到我的代碼正在做的事情的有用信息。
此外,我試圖註銷會話,並在約10-15分鐘後重新登錄,仍然非常緩慢。
Oracle版本是10.2
因此,原來有爲其他數據庫活動。幾乎在我開始更改和測試代碼的同時,DBA決定運行一些大的插入和更新作業。我懷疑我的代碼是根本原因,因爲我沒有被告知其他工作正在運行(我完全凍結了所有事情,而其他所有的開發人員都感到惱火後,我只聽說過這個其他工作)。這可能是我的代碼越來越慢的原因。
有沒有一種方法可以以編程方式找到它,比如查詢插入/更新大量數據的會話,以防DBA忘記告訴我下次他這樣做?
是PL/SQL甚至容易受到內存泄漏? SQL是一種非常高級的語言,通常不會有這個問題。 – 2010-11-09 20:10:45