运行存储过程时出现 db2 存储错误

Posted

技术标签:

【中文标题】运行存储过程时出现 db2 存储错误【英文标题】:db2 storage error when running stored procs 【发布时间】:2009-04-01 11:23:04 【问题描述】:

在我们的应用程序中运行少量存储过程时,我看到了上述错误。我们得到的实际错误是 sqlcode=-930,根据 db2 文档,它是:“没有足够的存储空间来处理该语句。”

问题:如何增加这些 procs 的可用存储空间?有没有其他人遇到过这个错误,如果有,你找到解决办法了吗?

谢谢

【问题讨论】:

最好在标记 db2 以指定您的平台(LUW、iSeries 或 System z)时,因为解决方案和问题通常取决于该平台。 【参考方案1】:

由于您还没有回答您使用的是哪个平台,所以我将首先在 AIX 上进行测试。

您需要查看 db2diag.log 以了解具体原因,但这通常是因为 AIX 已用完共享内存段。

AIX 共有 16 个共享内存段,其中 7 个可用于数据库。您的数据库实际使用的数量可以使用一个过于复杂的公式来计算,如果没有在故障排除指南中查找,我就无法记住。

但确实有可能一个数据库会使用 6 个段,只剩下一个。我见过这样的情况,内存映射的 I/O 请求与存储过程同时发生。

这两个都需要共享内存段,如果 I/O 先开始,存储过程将失败,如您所见。

解决此问题的方法是通过执行以下一项或多项操作来释放段:

禁用内存映射 I/O。 减少数据库对段的使用:您需要该公式,但我认为它涉及缓冲池、堆大小和锁定列表。 如果不需要,请关闭 intra_parallel。

【讨论】:

以上是关于运行存储过程时出现 db2 存储错误的主要内容,如果未能解决你的问题,请参考以下文章

Asp.Net 在运行存储过程时出现超时错误

运行存储过程时出现错误,提示无法将varchar转换为int

执行存储过程 NJS-012 时出现 node-oracledb 错误

尝试使用 .NET 5.0 Web 应用程序执行存储过程时出现转换错误

尝试执行存储过程时出现意外错误

为啥在使用简单存储过程时出现 MySQL 错误 #1312?