AlexMoonshadow 发表于 2011-09-26 17:48

informix 11.5 for windows重启服务失败解决方案 菜鸟专用

如果数据库莫名其妙连不上可能有以下情况导致:
1.逻辑日志满了
为了方便测试,初始配置文件中日志参数均设为NULL,如果数据库运行正常逻辑日志满了导致数据库连接不上,此时打开数据库安装目录,找到该数据库的日志文件,如:dp5.log,打开找到对应日期的日志,如果显示如下,说明逻辑日志满了,


此时不要去强行重启该数据库的服务。到对应的数据库文件下建立空文件log,如D:\IFMXDATA\dp5,修改D:\Informix\etc路径下ONCONFIG.dp5文件的LTAPEDEV参数为D:\IFMXDATA\dp5\log,然后打开该数据库的控制台,输入ontape –a进行逻辑日志备份,然后用onmode –l切换日志, 数据库恢复正常。
如果不想手动备份数据库可以用下面这个方法将log_full.bat文件内容中改为:
set BACKUP_CMD=echo|more|ontape -a
将onconfig文件设置为:
ALARMPROGRAM    g:\PROGRA~1\Informix\etc\log_full.bat
LTAPEDEV      G:\IFMXDATA\ol_lynn\logfiles\backuplog
可以实现将逻辑日志满后自动保存到磁盘上,这个方法没有试过,不知道可不可以用。

2.锁表数据库死了或者强行重启数据库服务失败请按如下操作:
此操作不涉及数据库表的锁级别检查,因为建表时都alter为了行级锁,我也不愿去找具体哪个表被锁了,因为就算找到了用onmode –z也杀不掉对应的sessid。检查日志文件,如果不是逻辑日志满了导致请等待至少5分钟,然后打开控制台,输入onmode –ky关闭数据库,执行完成后再输入oninit –v启动数据库,全部成功后重启数据库服务,启动成功,若是逻辑日志满了重启失败可以按照上面的方法先执行逻辑日志的备份。如果上述操作失败,请打开该服务的控制台输入oninit –iy,这个命令会初始化该动态服务,丢失建服务时所建立的空间,包括空间内的所有数据库信息,但会将默认的空间rootdbs初始化好,需要重新建空间再建数据库,具体操作如下:
删除原数据库数据目录D:\IFMXDATA\dp5中的dp5_dat.000和dp5_dat.001这两个文件,dp5是我的服务名,dp5_dat.001是后来扩展上去的空间,重新手动建立这两个文件,然后在该数据库控制台依次执行onspaces -c -d dp5 -p D:\IFMXDATA\dp5\dp5_dat.000 -o 0 -s 300000和onspaces -a dp5 -p D:\IFMXDATA\dp5\ dp5 _dat.001 -s 10000000 -o 0,这样空间就建好了,然后直接用备份文件恢复数据库即可,恢复的数据库记得要用ontape –s –B dp5修改日志模式。如果需要可以按照前面的方法备份逻辑日志。

如果执行oninit –iy没反应,又不想等待很长时间,请重启电脑,然后检查对应的日志文件再按上述方法执行。


以上方案为网上寻求和自己试验所得,感谢为我提供帮助的大哥大姐们,只是想帮助下跟我一样的菜鸟,别再像我一样疯掉,如有错误,欢迎指点,小弟不胜感激。
页: [1]
查看完整版本: informix 11.5 for windows重启服务失败解决方案 菜鸟专用