"SQL1218N 在缓冲池 4096 中当前没有任何页面可用"问题的解决(由于隐藏的buffer引发的血案)
2011-05-29 10:29
597 查看
1.报错信息:SQL1218N 在缓冲池 4096 中当前没有任何页面可用(表面上看是4k的buffer不足,调大后错误仍然存在)
2.经定位后找到原因:由于自定义的表空间过大初始化失败.
(1)使用db2diag -time 2011-05-18找到的错误信息:
db2 will use buffer pool ID "4096" 2011-05-18-20.03.01.859000+480 E10001937H805 LEVEL: Warning PID : 9544 TID : 9492 PROC : db2syscs.exe INSTANCE: DB2 NODE : 000 DB : EDW_BACK APPHDL : 0-7 APPID: *LOCAL.DB2.110518120300 AUTHID : EDWDATA EDUID : 9492 EDUNAME: db2agent (EDW_BACK) 0 FUNCTION: DB2 UDB, buffer pool services, sqlbStartPools, probe:2 MESSAGE : ADM6073W The table space "SYSTOOLSTMPSPACE" (ID "9") is configured to use buffer pool ID "1", but this buffer pool is not active at this time. In the interim the table space will use buffer pool ID "4096". The inactive buffer pool should become available at next database startup provided that the required memory is available.
(2)另外察看buffer的使用情况,也没有自己定义的buffer
update monitor switches using bufferpool on
db2 get snapshot for bufferpools on edw
3.最终导致的错误:buffer不足。(因为db2隐藏的buffer很小,只有16个页面,导致不够用)
2011-05-18-20.03.14.593000+480 E10004447H557 LEVEL: Error PID : 9544 TID : 588 PROC : db2syscs.exe INSTANCE: DB2 NODE : 000 DB : EDW_BACK APPHDL : 0-11 APPID: *LOCAL.DB2.110518120312 AUTHID : EDWDATA EDUID : 588 EDUNAME: db2agent (EDW_BACK) 0 FUNCTION: DB2 UDB, Common Trace API, sqlbFreeUpSlot, probe:122 MESSAGE : ADM6019E All pages in buffer pool "IBMSYSTEMBP4K" (ID "4096") are in use. Refer to the documentation for SQLCODE -1218.
4.隐藏的buffer: IBMSYSTEMBP4K IBMSYSTEMBP8K IBMSYSTEMBP16K IBMSYSTEMBP32K 只有在buffer pool initialization failed时才使用这些buffer
2011-05-18-20.03.02.125000+480 I10003780H665 LEVEL: Warning PID : 9544 TID : 9492 PROC : db2syscs.exe INSTANCE: DB2 NODE : 000 DB : EDW_BACK APPHDL : 0-7 APPID: *LOCAL.DB2.110518120300 AUTHID : EDWDATA EDUID : 9492 EDUNAME: db2agent (EDW_BACK) 0 FUNCTION: DB2 UDB, Self tuning memory manager, stmmStartSTMMIfNecessary, probe:490 MESSAGE : ZRC=0x87AE015F=-2018639521=STMM_DAEMON_COULD_NOT_START "STMM Daemon could not be started" DATA #1 : String, 89 bytes The self tuning memory manager was not started because buffer pool initialization failed.
5.解决方案:减小buffer的大小.
6.问题的诱因:2011-05-18,由于机房的空调出现问题,导致这个主机重新启动.启动之后数据也正常启动(表面上看是正常启动,实际上错误日志里已经有了警告信息).另外在该主机上我们还部署了etl工具的agent上一周我们把agent的个数调大了,一直没有重新启动agent服务.这次的机器重启,引发了agent服务和db的资源争用,导致数据库表空间自定义的buffer初始化失败,系统使用隐藏的buffer,隐藏的buffer都比较小,所以报"缓冲池 4096 中当前没有任何页面可用"
7.总结:db2 vs oracle
如果oracle的内存(sga+pga)初始化失败,会导致数据库启动失败.
如果db2的内存初始化失败,会使用隐藏的buffer,以保证数据库的启动.但是后续的应用会出现很多问题.
2.经定位后找到原因:由于自定义的表空间过大初始化失败.
(1)使用db2diag -time 2011-05-18找到的错误信息:
db2 will use buffer pool ID "4096" 2011-05-18-20.03.01.859000+480 E10001937H805 LEVEL: Warning PID : 9544 TID : 9492 PROC : db2syscs.exe INSTANCE: DB2 NODE : 000 DB : EDW_BACK APPHDL : 0-7 APPID: *LOCAL.DB2.110518120300 AUTHID : EDWDATA EDUID : 9492 EDUNAME: db2agent (EDW_BACK) 0 FUNCTION: DB2 UDB, buffer pool services, sqlbStartPools, probe:2 MESSAGE : ADM6073W The table space "SYSTOOLSTMPSPACE" (ID "9") is configured to use buffer pool ID "1", but this buffer pool is not active at this time. In the interim the table space will use buffer pool ID "4096". The inactive buffer pool should become available at next database startup provided that the required memory is available.
(2)另外察看buffer的使用情况,也没有自己定义的buffer
update monitor switches using bufferpool on
db2 get snapshot for bufferpools on edw
3.最终导致的错误:buffer不足。(因为db2隐藏的buffer很小,只有16个页面,导致不够用)
2011-05-18-20.03.14.593000+480 E10004447H557 LEVEL: Error PID : 9544 TID : 588 PROC : db2syscs.exe INSTANCE: DB2 NODE : 000 DB : EDW_BACK APPHDL : 0-11 APPID: *LOCAL.DB2.110518120312 AUTHID : EDWDATA EDUID : 588 EDUNAME: db2agent (EDW_BACK) 0 FUNCTION: DB2 UDB, Common Trace API, sqlbFreeUpSlot, probe:122 MESSAGE : ADM6019E All pages in buffer pool "IBMSYSTEMBP4K" (ID "4096") are in use. Refer to the documentation for SQLCODE -1218.
4.隐藏的buffer: IBMSYSTEMBP4K IBMSYSTEMBP8K IBMSYSTEMBP16K IBMSYSTEMBP32K 只有在buffer pool initialization failed时才使用这些buffer
2011-05-18-20.03.02.125000+480 I10003780H665 LEVEL: Warning PID : 9544 TID : 9492 PROC : db2syscs.exe INSTANCE: DB2 NODE : 000 DB : EDW_BACK APPHDL : 0-7 APPID: *LOCAL.DB2.110518120300 AUTHID : EDWDATA EDUID : 9492 EDUNAME: db2agent (EDW_BACK) 0 FUNCTION: DB2 UDB, Self tuning memory manager, stmmStartSTMMIfNecessary, probe:490 MESSAGE : ZRC=0x87AE015F=-2018639521=STMM_DAEMON_COULD_NOT_START "STMM Daemon could not be started" DATA #1 : String, 89 bytes The self tuning memory manager was not started because buffer pool initialization failed.
5.解决方案:减小buffer的大小.
6.问题的诱因:2011-05-18,由于机房的空调出现问题,导致这个主机重新启动.启动之后数据也正常启动(表面上看是正常启动,实际上错误日志里已经有了警告信息).另外在该主机上我们还部署了etl工具的agent上一周我们把agent的个数调大了,一直没有重新启动agent服务.这次的机器重启,引发了agent服务和db的资源争用,导致数据库表空间自定义的buffer初始化失败,系统使用隐藏的buffer,隐藏的buffer都比较小,所以报"缓冲池 4096 中当前没有任何页面可用"
7.总结:db2 vs oracle
如果oracle的内存(sga+pga)初始化失败,会导致数据库启动失败.
如果db2的内存初始化失败,会使用隐藏的buffer,以保证数据库的启动.但是后续的应用会出现很多问题.
相关文章推荐
- DB2:在缓冲池 "1" 中当前没有任何页面可用。. SQLCODE=-1218, SQLSTATE=57011, DRIVER=3.61.75
- 解决 " 登录页面(没有导航栏)跳转到下一页面(有导航栏) " 问题
- 解决"当前命令发生了严重错误。应放弃任何可能产生的结果。"的问题
- MSDN两天没有办法使用, 提示"当前子集中没有该选项,请选择其他子集",问题解决了
- 解决 IIS "服务没有及时响应启动或控制请求" 问题
- VS里面按键盘"Ctrl+F" 或者选 编辑 菜单里面的 查找和替换 也没有对话框弹出来 问题解决。
- 打开页面时出现"Automation 服务器不能创建对象"问题的解决方法
- 解决VS2008程序的由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题"
- 解决访问优盘(MP3)出现 "本次操作由于受计算机的限制而被取消,请与你的系统管理员联系" 的问题
- git学习--使用git pull命令"当前分支没有跟踪信息"报错问题的解决
- HTML Web开发 页面中有<img src="">这样的语句,会导致当前网页被重新载入一次的解决方法
- html关于强制显示、隐藏浏览器的滚动条,解决由于高度变化带来的滚动条影响页面宽度的问题
- 关于Visual Studio "当前不会命中断点.还没有为该文档加载任何符号"的解决方法
- oracle10g "数据源管理器"找不到应用程序,可能是程序没有正确安装"问题解决
- "Unable to get buffer of resource asset file"问题的解决
- sql-"无法删除数据库,因为该数据库当前正在使用"问题解决
- 已解决:大量的全表扫描 "直接路径读" 引发的数据库性能问题
- "Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace"问题解决
- 您试图在此 Web 服务器上访问的 Web 应用程序当前不可用"IIS解决方法
- 解决:浏览页面时,出现"WebDev.WebServer.exe 遇到问题需要关闭。我们对此引起的不便表示抱歉。"问题