【问题标题】:How to solve this memory errors in Oracle如何在 Oracle 中解决此内存错误
【发布时间】: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 解决了这个问题
  • 太棒了!我添加了一个答案,这样如果您接受它,这个问题就不会显示为未回答/未回答。

标签: xml oracle plsql


【解决方案1】:

您正在使用DBMS_XMLDOM 创建文档。这将分配在您完成访问文档后必须释放的内存。最后调用DBMS_XMLDOM.freeDocument可以释放内存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    • 2014-10-26
    • 1970-01-01
    相关资源
    最近更新 更多