签到成功

知道了

CNDBA社区CNDBA社区

DB2 数据库缓冲池失效

2021-10-07 09:42 1121 0 原创 DB2
作者: hbhe0316

1 问题现象:
缓冲池失效,无法正常启动。 数据库版本DB2 v8.1.1.112 实例32位
2 问题诊断:
2.1 查看诊断日志:http://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上线,致使主缓冲池无法正常启动,从而造成事件的产生。

3 数据收集:http://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 查看缓冲池

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

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

查看失效的缓冲池大小并加入到主缓冲池内存中http://www.cndba.cn/hbhe0316/article/4879http://www.cndba.cn/hbhe0316/article/4879http://www.cndba.cn/hbhe0316/article/4879http://www.cndba.cn/hbhe0316/article/4879

4 恢复步骤:

4.1 修改失效缓冲池大小

alter bufferpool bufferpoolname immediate size <value>

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

db2 force applications all
db2stop force
db2start

4.3 查看当前缓冲池状态是否正常

db2pd -db <dbname>-bufferpools

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

DB2

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
hbhe0316

hbhe0316

关注

1.只有承认无知,才能装下新的东西; 2.进步来自一点点滴滴的积累; 3.广博让你更优秀,而专业让你无法替代; 4.挫折和失败能够转换为一种财富。

  • 889
    原创
  • 1
    翻译
  • 13
    转载
  • 24
    评论
  • 访问:1154841次
  • 积分:1523
  • 等级:核心会员
  • 排名:第6名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ