ITPub博客

首页 > 数据库 > Oracle > ASM元数据之FST损坏的修复

ASM元数据之FST损坏的修复

原创 Oracle 作者:tianshiguodong 时间:2018-10-10 10:11:43 0 删除 编辑

作者:李向辉 擅长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 磁盘故障后抽取其中的数据来说已经足够
了。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16807927/viewspace-2215799/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-07-30

  • 博文量
    14
  • 访问量
    38917