rose双机引起文件系统损坏使得数据库异常故障处理---惜分飞

有客户做了双机rose,由于某种故障导致共享存储在两个主机之间相互频繁挂载(甚至出现了同时挂载的情况),使得该文件系统发生损坏

修复双机故障之后,数据库启动ORA-01122 ORA-01110 ORA-01200错误

初步看这个报错,block差距有点大,文件头中记录为419840个block,现在实际有的block数量为384000,使用obet查看文件头记录block number情况

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| OBET> p kcvfh.kcvfhhdr File: E:\TEMP\20260219\SYSTEM01.DBF Size: 8192 bytes Block: 1 Offset: 20 struct kcvfhhdr, 76 bytes @20 ``ub4 kccfhswv @20 0x00000000 ``ub4 kccfhcvn @24 0x0B200400 ``ub4 kccfhdbi @28 0x85D98FAB ``text kccfhdbn[8] @32-39 XXXX ``ub4 kccfhcsq @40 0x00091079 ``ub4 kccfhfsz @44 0x00066800 <<--16转换为10进制为419840 ``s_blkz kccfhbsz @48 0x00 ``ub2 kccfhfno @52 0x0001 ``ub2 kccfhtyp @54 0x0003 ``ub4 kccfhacid @56 0x00000000 ``ub4 kccfhcks @60 0x00000000 ``text kccfhtag[32] @64-95 <kcvfh.kcvfhhdr structure printed successfully> |

对于这种情况,以前有过很多次处理经验(一般办法2个:1>修改文件头的block数量记录;2>修改现在的文件大小和实际文件有匹配),以前类似的处理记录:
bbed处理ORA-01200故障
记录一次ORA-01200完美恢复
ORA-01122 ORA-01200故障处理

处理完成system文件异常之后,sysaux文件继续异常

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| SQL> recover datafile 1; 完成介质恢复。 SQL> recover datafile 2; ORA-00283: 恢复会话因错误而取消 ORA-01110: 数据文件 2: ``'Z:\APP\ADMINISTRATOR\ORADATA\XXXX\SYSAUX01.DBF' ORA-01122: 数据库文件 2 验证失败 ORA-01110: 数据文件 2: ``'Z:\APP\ADMINISTRATOR\ORADATA\XXXX\SYSAUX01.DBF' ORA-01200: 149760 的实际文件大小小于 153600 块的正确大小 |

类似处理该故障之后,由于文件系统故障导致不少文件出现大量连续坏块(全0或者记录了其他文件内容的坏块),这种是由于文件系统元数据异常导致,通过文件系统层面恢复继续无法正常处理,对于这样的情况,通过碎片扫描工具按照oracle block级别的文件重组(其实就是基于rdba信息进行重组),获取正确的数据块信息然后重新重组成数据文件

然后打开数据库,顺利导出数据,实现客户数据最大限度恢复

相关推荐
fchampion2 小时前
MYSQL分析案例
数据库·mysql
宇擎智脑科技2 小时前
RAG系统数据库架构选型对比:SurrealDB单体方案 vs 多数据库组合方案深度分析
数据库·人工智能·数据库架构
饮长安千年月2 小时前
Linux下的敏感目录
linux·网络·数据库·web安全
web182854825124 小时前
代码诊疗室:破解疑难Bug实战
数据库
数据知道4 小时前
MongoDB 数据库与集合管理:显式创建与隐式创建的区别及生产环境建议
数据库·mongodb·oracle
数据知道5 小时前
MongoDB 的 CRUD 极速上手:insertOne/insertMany 与批量写入的性能差异
数据库·mongodb
愚公搬代码5 小时前
【愚公系列】《数据可视化分析与实践》019-数据集(自定义SQL数据集)
数据库·sql·信息可视化
甲枫叶5 小时前
【claude产品经理系列11】实现后端接口——数据在背后如何流动
java·数据库·人工智能·产品经理·ai编程·visual studio code
甲枫叶5 小时前
【claude产品经理系列12】接入数据库——让数据永久保存
java·数据库·人工智能·产品经理·ai编程