0

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

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

谢谢

4

1 回答 1

1

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

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

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

但是确实有可能一个数据库将使用 6 个段,只留下一个段。我已经看到发生这种情况的情况,然后内存映射的 I/O 请求与存储过程同时发生。

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

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

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