【发布时间】:2020-08-28 14:40:35
【问题描述】:
我有一个详细说明 XML 文档的包。该软件包每天运行,但几周后,现在每天都会出现以下错误:
ORA-04030: out of process memory when trying to allocate 4032 bytes (qmxdGetDocElem,qmemNextBuf:alloc)
ORA-04030: out of process memory when trying to allocate 1032 bytes (qmxlu subheap,qmemNextBuf:alloc)
ORA-04030: out of process memory when trying to allocate 40 bytes (kxs-heap-f,frame segment)
我从来没有遇到过这样的错误。 如果我尝试在其他时刻手动执行该程序包,它会正常工作并定期终止。 有人可以给我一些建议吗?这种类型的错误怎么办?我在 Oracle 10g 上工作
提前致谢!
标记
【问题讨论】:
-
您是如何处理 XML 的?邮政编码!如果您正在使用 DBMS_XMLGEN,请不要忘记致电
DBMS_XMLGEN.CLOSECONTEXT。 -
DBA 添加了更多内存,但错误一直存在 在我的包中我多次使用本机函数 DBMS_XMLDOM.newDOMDocument 但我从未使用过 DBMS_XMLDOM.freeDocument 可以解决问题吗?
-
是的。这可能是您的问题之一。尝试在您的流程一次迭代的开始和结束时为您的
SID转储v$temporary_lobs的内容。不应该有任何你没有从你的代码中期待的东西。如果有,请将呼叫添加到freeDocument,重复测试,看看是否能全部完成。 -
我通过插入语句 DBMS_XMLDOM.freeDocument 解决了这个问题
-
太棒了!我添加了一个答案,这样如果您接受它,这个问题就不会显示为未回答/未回答。