一个周三上午,深圳宝安一家做精密结构件的制造企业打来电话:生产排程系统进不去,ERP 全面停摆,车间领料、入库扫码全部卡住。IT 主管发来的报错截图里有 ORA-01110 和 ORA-01578 两个错误码,这是典型的 Oracle 数据文件损坏信号。
客户环境是一台双路服务器,Windows Server 加 Oracle 11g,数据文件放在一块用了六年多的企业级硬盘上。最初只是查询变慢,第二天早上连业务表都打不开。IT 重启数据库实例后,报错从“无法读取数据文件”变成“文件头校验失败”,再后来实例都起不来。他们手上有每周一次的逻辑导出备份,但最近一次是四天前,即使导回去,也会丢掉四天的订单和入库记录。
我们把服务器停机,把数据盘拆下来做完整镜像,之后所有分析都在镜像上进行,原始盘不再被反复读写。
检测分三步。第一,看硬盘本身:SMART 记录里有大量待映射扇区,属物理坏道引发的读写失败,这就是数据文件损坏的根源。第二,看数据文件:用块级扫描逐个数据块校验文件头、块头与校验和,发现系统表空间基本完好,业务表空间有一套数据文件在中段出现了连续损坏。第三,看归档日志链:客户的归档日志保留完整,最早一份正好覆盖到业务表空间上一次完整检查点,这意味着可以用“旧数据文件块加新归档日志”把数据推到故障发生前一刻。
思路是把能用的部分全部捞出来,再补齐缺失部分:对完好的数据块做块级提取,重建控制文件,把归档日志重做应用到临时库,最后用逻辑导出把业务表逐张拉出来。索引和触发器按脚本重建,存储过程与任务计划从客户留存的部署文档还原。
最终订单、库存、客户、应收应付等核心表的数据都回来了,四天内的业务记录一条不少,ERP 在第二天下午恢复上线,客户当晚完成了原本要延后的月度结账。只有少量过程型临时表没有保留价值,经客户确认后放弃。
第一,发现数据库报错,立刻停止一切写入和“修复”尝试,带着损坏的数据文件继续跑,损坏范围会扩大。第二,不要重建数据库、不要初始化,也不要拿旧备份直接覆盖当前文件。第三,把服务器原样保留,包括数据文件、控制文件、归档日志、参数文件,这些是恢复的关键材料,缺一样都会增加难度。
深圳市补天时代科技有限公司专注数据恢复二十余年,累计恢复硬盘2万个、服务器及存储3000台,对 Oracle、SQL Server、MySQL、DB2、SYBASE 等主流数据库的损坏恢复有成熟流程,恢复流程按规范执行、可追溯。数据库停了不要自己反复折腾,先打 0755-83775551 做免费检测。地址:深圳市福田区华强北深南中路2070号电子科技大厦A座35楼,深圳市区可上门取盘。