一、 故障现像
网络交换机重启,数据库切换失败,启动主机的数据库出现共享内存报错,报详细日志信息如下:
主数据库
Sun Dec 16 02:03:19 2007
02:03:19 Event alarms enabled. ALARMPROG = '/opt/informix/etc/log_full.sh'
02:03:26 DR: DRAUTO is 2 (Reverse)
02:03:26 Requested shared memory segment size rounded from 588KB to 592KB
02:03:26 shmget: [EEXIST][17]: key 52574802: shared memory already exists
02:03:26 (2) shm creation of shmem segment failed
Sun Dec 16 02:03:29 2007
02:03:29 Event alarms enabled. ALARMPROG = '/opt/informix/etc/log_full.sh'
02:03:35 DR: DRAUTO is 2 (Reverse)
02:03:35 Requested shared memory segment size rounded from 588KB to 592KB
02:03:35 shmget: [EEXIST][17]: key 52574802: shared memory already exists
02:03:35 (2) shm creation of shmem segment failed
重启主机系统后起主机数据库正常。
二、 系统及背景情况
2007-12-16凌晨2点,交换机发生了机器重启,scp01主机informix数据库切换失败,在双机拉数据库启动时报,共享内存已存在错误。
三、 原因分析
SCP01 主机数据库采用的是HDR方式,HDR数据库方式为数据库热备,主备数据库中间互有侦察消息,类似ping操作,在一个周期里如果不能侦察到对方将会产生错误,当错误达到一定的数量时一般情况将会造成两个数据库全为primary 或者备机一直处于FAST RECOVERY状态,特殊情况下可能造成数据库hang住或挂死。当重启数据库时,因有些进程并没有将其所占有的共享内存释放,所以在重启时将报共享内存已存在的错误,数据库起不来。
四、 解决方法
使用ipccs命令查到informix数据库使用的共享内存ID号后,再用ipcrm命令手工释放共享内存空间。操作如下例:
#ipcs
T ID KEY MODE OWNER GROUP
Message Queues:
m 7173 0x52564801 --rw-rw---- root informix
m 6 0x52564802 --rw-rw-rw- root Informix
# ipcrm –m 7173
# ipcrm –m 6
# ipcs |grep informix
使用ipcs查看无iformix数据库信息后,起动informix数据库,数据库恢复正常,数据同步正常。
五、 建议
INFORMIX 数据库的 HDR 关系对网络的稳定性要求非常高,一定要保障设备所处网络的稳定性[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9479798/viewspace-1050071/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9479798/viewspace-1050071/