DB2 数据库缓冲池失效

1 问题现象:
缓冲池失效,无法正常启动。 数据库版本DB2 v8.1.1.112 实例32位
2 问题诊断:
2.1 查看诊断日志:https://www.cndba.cn/hbhe0316/article/4879

1、2015-03-29-18.10.18.841608+480 E60709218C669      LEVEL: Warning
PID     : 2175098              TID  : 1           PROC : db2agent (DEPDB) 0
INSTANCE: depinst              NODE : 000         DB   : DEPDB
APPHDL  : 0-1362               APPID: *LOCAL.depinst.150329100954
FUNCTION: DB2 UDB, buffer pool services, sqlbAlterBufferPool, probe:50
MESSAGE : ADM6050W  The ALTER BUFFERPOOL statement for buffer pool
          "BIZ_BUFFER_04X" (ID "5") was successful but could not be performed
          immediately because of insufficient memory. The change will take
          effect on the next database startup.  Refer to the documentation for
          SQLCODE 20189.
2、2015-09-26-03.45.42.822250+480 I63467970C486      LEVEL: Severe
PID     : 921820               TID  : 1           PROC : db2agent (DEPDB) 0
INSTANCE: depinst              NODE : 000         DB   : DEPDB
APPHDL  : 0-516                APPID: *LOCAL.depinst.150925194542
FUNCTION: DB2 UDB, base sys utilities, sqleFirstConnect, probe:15
RETCODE : ZRC=0x850F0005=-2062614523=SQLO_NOSEG
          "No Storage Available for allocation"
          DIA8305C Memory allocation failure occurred.
2015-09-26-03.45.42.834774+480 I63468457C442      LEVEL: Severe
PID     : 921820               TID  : 1           PROC : db2agent (DEPDB) 0
INSTANCE: depinst              NODE : 000         DB   : DEPDB
APPHDL  : 0-516                APPID: *LOCAL.depinst.150925194542
FUNCTION: DB2 UDB, base sys utilities, sqleFirstConnect, probe:16
MESSAGE : DiagData
DATA #1 : Hexdump, 4 bytes
0x2FF11F90 : 9FE7 0000    
3、2015-09-26-03.45.46.571853+480 I63482377C520      LEVEL: Severe
PID     : 921820               TID  : 1           PROC : db2agent (DEPDB) 0
INSTANCE: depinst              NODE : 000         DB   : DEPDB
APPHDL  : 0-516                APPID: *LOCAL.depinst.150925194542
FUNCTION: DB2 UDB, buffer pool services, sqlbinit, probe:620
DATA #1 : String, 70 bytes
Database will come up with hidden buffer pools.
totalBufferPoolPages:
DATA #2 : Hexdump, 8 bytes
0x2FF0C868 : 0000 0000 0000 0040

分析:3月29日缓冲池(BUFFERPOOL)扩容后至9月26日事发前(如图1所示),数据库实例并未重启,因此扩容后,缓冲池并未生效,该事件未能触发。
9月26日对重启数据库实例后,分配数据库共享内存时大于2GB,从而造成所有主缓冲池无法正常启动(如图2、3所示),随后系统默认缓冲池(极小容量)顺利接管,过程中未影响业务。
2.2 实例配置分析
数据库为32位实例,因此数据库申请共享内存超出2GB上线,致使主缓冲池无法正常启动,从而造成事件的产生。https://www.cndba.cn/hbhe0316/article/4879https://www.cndba.cn/hbhe0316/article/4879https://www.cndba.cn/hbhe0316/article/4879

3 数据收集:https://www.cndba.cn/hbhe0316/article/4879

3.1 通过低权appmon直接运行
db2mtrk -d -v
可直接获取到(主缓冲池内存 + 4个隐藏缓冲池 + 数据库堆dbheap + 锁列表locklist + 工具堆utilheap + 包缓冲堆packageCache + 编目堆CatalogCache) 的总和为Total
数据库共享内存 = (主缓冲池内存 + 4个隐藏缓冲池 + 数据库堆dbheap + 锁列表locklist + 工具堆utilheap + 包缓冲堆packageCache + 编目堆CatalogCache) + 约10%开销预留 = total+total * 1.1(开销预留)>2GB
3.2 查看缓冲池

db2pd -db DATABASENAME -bufferpools
select *  from syscat.bufferpools

查看失效的缓冲池大小并加入到主缓冲池内存中

4 恢复步骤:https://www.cndba.cn/hbhe0316/article/4879

https://www.cndba.cn/hbhe0316/article/4879

4.1 修改失效缓冲池大小

alter bufferpool bufferpoolname immediate size <value>

如提示需要重新激活数据库生效,则需要重启数据库。
注:针对调整的value与其他共享堆相加不能大于2GB。
4.2 重启数据库实例

db2 force applications all
db2stop force
db2start

4.3 查看当前缓冲池状态是否正常https://www.cndba.cn/hbhe0316/article/4879

https://www.cndba.cn/hbhe0316/article/4879
https://www.cndba.cn/hbhe0316/article/4879
db2pd -db <dbname>-bufferpools

版权声明:本文为博主原创文章,未经博主允许不得转载。

DB2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值