我有一些我认为可能会发生内存泄漏的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