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

时间:2009-04-01 11:23:04

标签: sql database stored-procedures jdbc db2

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

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

感谢

1 个答案:

答案 0 :(得分:1)

由于你还没有回答你正在使用哪个平台,我将首先尝试一下AIX。

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

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

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

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

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

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