ASM元数据之FST损坏的修复

来源:这里教程网 时间:2026-03-03 12:05:30 作者:

作者:李向辉 擅长oracle数据库性能分析、诊断、优化及故障处理   /**!!!!转载请注明出处 qq:654268465   tel:18092015108 本文讲述FST元数据简介及损坏后的影响及对应修复方法 FST 简介:       FST和ASM磁盘头块一样属于ASM的物理元数据信息,FST(Free Space Table)信息存储在ASM磁盘头块的后一个块中,也就是AU0 blk1中。我们都知道ASM磁盘头损坏后会导致asm磁盘组无法mount,数据库实例也就无法正常启动,关于磁盘头的修复网上参考的信息也很多(11g针对磁盘头块的修复也提供了自动修复命令)。那么对于FST这部分信息损坏后会有什么样的结果,以及如何修复这部分,下面进行一步步的模拟损坏、损坏后的结果及修复过程。 FST 损坏模拟及损坏结果:

    模拟之前我们首先检查下我们的磁盘组及磁盘信息,可以看出磁盘组 DATA 状态是 OK 的。 如果某个 ASM 磁盘损坏了前 8k , 那么除了磁盘头损坏外 FST 也随之损坏了, 实验我们 将 ASM 实例关闭后通过 dd 命令只将 ASM 磁盘 /dev/asm-diskd FST 信息清空, 然后启动 ASM 实例和数据库       随后 ASM 实例和数据库均正常启动没有报错,但当在数据库实例执行数据文件 resize 操作后发现 DATA 磁盘组立即被 dismount FST 损坏修复思路:       我们修复方法采用将同一个磁盘组中的另一个磁盘 /dev/asm-diske FST 信息复制一份 并修改相应位置的信息,然后 dd /dev/asm-diskd FST 位置 FST 损坏修复方法:        首先将 /dev/asm-diske FST 信息 dd 出来, 然后使用 bbed 进行修改       bbed offset 8 01 改成 00 表示是这个磁盘组的第 1 个磁盘        将修改后的文件 dd /dev/asm-diskd fst 位置 ,mount DATA 磁盘组并启动数据库        启动数据库再次 resize 发现报错,此时我们根据错误信息再次修改 diske_fst.out 文件的 相应信息 ( 2187368565 修改为 2187368564) , 并写入到 /dev/asm-diskd FST 位置并再次 mount DATA 磁盘组        再次启动数据库,再次执行数据文件的 resize 操作发现不再报错,磁盘组也没有 dismount 掉, 说明修复成功。 总结: 实际这个修复过程并不完美,因为 FST 中还包括 AT 块的条目信息,同一个磁盘组中的 不同磁盘的 AT 块条目信息还是有一些区别的,不过这个 AT 块条目信息的修复要结合 AT 块 中的实际信息来修复,实际处理起来也非常耗时,实际意义不大。 我们这个模拟修复过程主 要是防止 ASM 磁盘因数据文件自动扩展和数据库一些与数据文件空间相关的递归 sql 操作而 导致磁盘组 dismount 掉,这个修复过程对于 asm 磁盘故障后抽取其中的数据来说已经足够 了。

相关推荐