Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1934127
  • 博文数量: 389
  • 博客积分: 7877
  • 博客等级: 少将
  • 技术积分: 4531
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-10 14:02
文章分类

全部博文(389)

文章存档

2024年(1)

2022年(1)

2021年(1)

2020年(1)

2019年(1)

2018年(3)

2017年(6)

2016年(4)

2015年(8)

2014年(15)

2013年(31)

2012年(19)

2011年(47)

2010年(33)

2009年(105)

2008年(109)

2007年(4)

分类:

2009-07-30 14:33:31

一次在客户那里,把生产的数据库恢复到开发机上,能够正常启动数据库但是在连接的过程中非常慢,要花很长时间才能连接上,而且操作起来也非常慢。
后来找到了原因,生产上的库配置的bufferpool很大,而开发机上的内存并不大,所以在首次连接db时分配bufferpool内存就会遇到问题,导致数据库操作起来非常慢。当时我只是在连接到数据库之后再去改bufferpool的,我想既然有这样的问题,那肯定应该有更好的解决办法,今天在查看bufferpool设置大小的问题时看到了这样的一篇文章刚好可以解决上面提到的这个问题,当然也适合其他情况下类似的问题:


下面内容转载自:
(本人并没有试过这样的操作,请慎重)

由于brfferpool的设置很大, 而当前的内存不足以分配这个大的buffer pool, 使得数据库不可连接, 该如何处理?

Document #: 1897544I23000

Body:
[标题]
由于brfferpool的设置很大, 而当前的内存不足以分配这个大的buffer pool, 使得数据库不可连接, 该如何处理?

环境:(产品,平台,机型,软件版本,等)

产品: DB2 UDB ;
平台: AIX, Solaris, UNIX, Windows 2000, Windows NT, Windows XP
软件版本: 8.1 ;

问题描述:
在某些情况下, 用户或数据库管理员可能错误的定义了 DB2 Buffer Pool 的大小, 造成由于无法分配定义的buffer pool, 而不能连接到数据库; 连接时得到错误信息DIA8305C, 该如何处理?

解答:


如果是 Buffer Pool定义的太大, 无法分配造成的数据库不能连接, 可以尝试用下面的步骤来解决:

1. 用DB2实例Owner的用户登录到系统,
2. 执行下面的命令来设置环境变量DB2_OVERRIDE_BPF
  db2set DB2_OVERRIDE_BPF=number-of-pages
  其中number-of-pages为页数, 应该是一个较小的, 操作系统可以分配的值, 如5000; 下一次DB2数据库连接以激活数据库时, DB2系统会尝试按照此参数指定的大小来分配BUFFERPOOL;
3. 运行命令db2 connect to db来建立数据库连接;  由于我们已经设置了DB2_OVERRIDE_BPF环境变量, 此连接应该可以成功;
4. 连接建立后, 不要做其他操作, 立刻修改bufferpool;
  db2 alter bufferpool bufferpool-name size number-of-pages
5. 为了使得我们修改的新buffer pool的大小可以生效, 需要先运行命令 db2 connect reset 断开当前的连接;
6. 运行命令 db2set DB2_OVERRIDE_BPF= 以去掉该环境变量, 使得我们配置的新的buffer pool的大小可以生效;
7. 重新连接数据库
阅读(3371) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~