在我们日常使用和维护数据库的过程中,肯定会遇到各种不同类型,千奇百怪的问题,现在我就将常见的问题进行分类汇总。
一、DB2实例不能正常启动。
问题描述:当我们运行db2start时,有时侯会碰到system error 或者一直hang在那里不返回启动成功信息。
解决问题思路: 1)是不是数据库刚刚升级没有运行db2iupdate 或者db2iupgrade来升级实例
Solution: 在做DB2升级时,正确按照安装文档对实例进行升级
2)是不是上次DB2 实例被非正常终止
Solution: 运行ipclean ,清除db2占用的共享内存和信号量,然后再重启。
3) 是不是安装了HADR +TSA,但是没有安装成功
Solution: 使用db2haicu -delete 先删除TSA,之后进行重新配置
4) 是不是最近更改了实例的一些参数
Solution:主要看是不是设置了实例内存参数,设置过大,调整为Automatic或者合适的值。
5)其他原因
Solution: 查看db2diag, 然后根据错误信息,去db2 support, knowledge center, google上查询具体原因。 IBM内部员工查询内部知识库psDB.
二、实例能正常启动,但是连接不上数据库。
问题描述:当我们运行db2 connect to DB时,要么碰到错误信息,要么hang在那里
解决问题思路: 1)是不是活动日志丢失?数据库的活动日志有可能被某些脚本或者人不小心删除。一般来说DB2会在交互界面或者db2diag会有明确的错误信息。
Solution: 活动日志丢失了,真的没有办法。只能用以前的版本进行恢复。 如果没有最近可用的备份,那么需要打800电话开PMR, 将日志控制文件发给
db2实验室, db2实验室会修改日志控制文件后返回来。 将返回的日志控制文件替换原来的文件,数据库就可以正常启动了。 但是这种操作可能会带来数
据不一致或者数据丢失。
2) 数据库主日志(primary log ) ,数据库内存, bufferpool设置过大?
设置太多的主日志个数,会导致在连接数据库的时候需要创建所有这些日志,需要一定的时间,如果空间没有计划好,可能日志文件能占满文件系统。
与内存相关的一些设置,比如database_memory 和bufferpool设置太大都有可能造成DB不能正常连接。 (一般来说bufferpool设置过大,这个bufferpool