运行存储过程时出现 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 存储错误的主要内容,如果未能解决你的问题,请参考以下文章
运行存储过程时出现错误,提示无法将varchar转换为int
执行存储过程 NJS-012 时出现 node-oracledb 错误