我们有一个运行 Avaya CMS 软件的 Sun Solaris 系统。该软件使用 Informix 数据库。我们的服务器中只有一个驱动器。该驱动器开始出现故障,损坏了文件。我们找到了一个新驱动器,能够将数据从旧驱动器复制到新驱动器,并成功启动并运行服务器。但我们还有一个问题,即数据库报告坏块,并且不会写入新数据。
我们如何修复这个问题?这只是一个要运行的 Informix 命令,还是我们必须取消分配并重新分配数据库存储?
IBM Informix Dynamic Server 版本 9.40.UC4
编辑:我们实际上不再关心旧数据,我们只想写入新数据,但它不允许我们这样做。有什么办法可以解决这个问题吗?
答案1
简单情况可以用oncheck
命令恢复。
但是你的情况和这种损坏是没有办法从“空”中恢复数据的。
为此,您需要恢复存档 + 逻辑日志备份。
然后,您将恢复所有数据到崩溃前的最后状态。
你有吗?嗯......我很确定你现在的想法是:哦......
这是在没有硬件冗余的环境中应具有的最低要求。
之后要研究的其他选项是配置数据库以镜像不同硬盘上的所有块...这样,如果一个出现问题,另一个仍可保持所有运行。
阅读此文章https://stackoverflow.com/questions/19905391/why-informix-dbexport-is-generating-corrupt-data,也许可以帮到你。
编辑:
如果块已损坏,则没有意义再在上面写入任何内容。
在这种情况下,引擎在保证数据完整性方面非常有限。
如果块中有一些数据(考虑到数据库仍然指向那里有数据),您将无法删除该块。
更好的解决方案是将未损坏的内容导出到文本文件,从零开始重新创建实例,创建数据库、结构并重新加载数据...
需要了解这些产品是用资源制造的,以保证数据完整性而不会破坏它(考虑到管理员正确配置它)。
作为参考,请查看以下链接: