方法一:如库 testdb 被锁,使用 "ondblog cancel testdb"解决。 方法二:我也遇到过类似的问题,当时用onmonitor查看数据库日志模式为N。我的解决办法是使用ontape -s -U databasename选择0级备份即可。 方法三:这个问题我也遇到了,而且是生产环境,并且我们单位的生产环境只运行在一台主机上,没有备机,当时在压力确实很大。因为当时不只是数据库被锁了,且informix的chunk剩余数也只有3K了。当时因为informix数据库空间严重不足了,交易无法正常处理,我们想先做一个数据库的备份,然后为informix增加chunk,没想到备份也备不了,提示sqlcode=-229的错,创建临时文件的空间都没有了。后来在informix用户环境下执行了一下$ontape -s -N 数据库名,想通过不记日志备一下数据库,没成想这个命令执行时也失败了,提示sqlcode=-229 ISAM 131的错,再用dbaccess连接informix时就出现了“178: ISAM error: Database is locked; pending change to logging mode ”。尝试了各种方法,数据库仍然无法解锁,到网上搜了一圈,也看到了上面各楼专家告知的方法,还是没用。当看到6楼shanshl的贴子时我的心凉了半截,难道只能重安informix或对数据库初始化吗?这可是在生产环境上,不像shanshl那么幸运是在测试机上。如果重装informix将会造成生产数据的丢失甚至是全部丢失,这将是灾难性的。后来无意中查看了一下国外的一个贴子,找到了救命的解决方法,方法如下:在informix用户环境下,执行$ondblog dbname unbuf log就可以将数据库解锁了。另外最好再作一下inforxmi的零级备份,执行$ontape -s -L 0。之后的问题就很好解决了,既然无法整库备份,就一个表一个表的onload,然后增加informix的chunk,再做数据库的全备份就OK了。 |
评论
