asm disk header 的自动备份和恢复
来源:互联网 发布:mac如何设置开机密码 编辑:程序博客网 时间:2024/06/05 19:31
本文参考:http://www.dbform.com/html/2012/1875.html
http://www.xifenfei.com/2012/06/%E4%BD%BF%E7%94%A8asm-disk-header-%E8%87%AA%E5%8A%A8%E5%A4%87%E4%BB%BD%E4%BF%A1%E6%81%AF%E6%81%A2%E5%A4%8D.html
在Oracle 10.2.0.5之前,ASM磁盘的头块并没有自己的备份,因此一旦头块损坏,如果没有以前kfed read备份出来的信息,也就没有办法使用kfed merge来作头块恢复,特别是如果一个磁盘组中所有的磁盘头块都出现问题(比如被人为地创建了PV),恢复ASM磁盘头块的操作就会非常麻烦。
但是从Oracle 10.2.0.5之后,ASM磁盘的头块会自动备份在另外一个块中,这实际上是Oracle 11g出现的功能,不过经过测试,在Oracle 10.2.0.5版本中,这个备份也是存在的。
对于10.2.0.5.0以及以后版本,不管au size是多少,asm disk header自动备份存储的位置是第2个au的倒数第2个block.
计算方法:AU中包含的block num[AU_SIZE/block_size]*2-2[因为从第一个块从0计数],通过该方法计算结论为:
1M AU在510
2M AU在1022
4M AU在2046
8M AU在4094
16M AU在8190
32M AU在16382
64M AU在32766
正是因为存在这个备份,所以Oracle 10.2.0.5之后的kfed程序才有了新的repair命令,该命令将备份块直接覆盖到磁盘头块,完成修复工作。
在Oracle 10.2.0.4中,如果尝试执行kfed repair,则会报错说命令行参数不正确,此报错说明并不存在repair命令:
$ kfed repair KFED-00101: LRM error [102] while parsing command line arguments
但是在Oracle 10.2.0.5中,执行kfed repair,则会说无法打开文件空,而这正说明repair命令是存在的,报错是因为还需要明确指定要修复哪块磁盘:
$ kfed repairKFED-00303: unable to open file ''
cd $ORACLE_HOME/rdbms/libcp ins_rdbms.mk ins_rdbms.mk.bakmake -f ins_rdbms.mk ikfed
数据库版本
SQL> select * from v$version;BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionPL/SQL Release 11.2.0.4.0 - ProductionCORE 11.2.0.4.0 ProductionTNS for Linux: Version 11.2.0.4.0 - ProductionNLSRTL Version 11.2.0.4.0 - Production
ASM磁盘属性
SQL> set linesize 300SQL> col PATH format a30SQL> select group_number,DISK_NUMBER,PATH,HEADER_STATUS from v$asm_disk where group_number<>0;GROUP_NUMBER DISK_NUMBER PATH HEADER_STATU------------ ----------- ------------------------------ ------------ 4 2 /dev/mapper/cdpfra1 MEMBER 4 3 /dev/mapper/cdpfra2 MEMBER 3 7 /dev/mapper/cdpdata4 MEMBER 3 6 /dev/mapper/cdpdata3 MEMBER 3 4 /dev/mapper/cdpdata1 MEMBER 3 5 /dev/mapper/cdpdata2 MEMBERSQL> select group_number,name,BLOCK_SIZE,ALLOCATION_UNIT_SIZE from v$asm_diskgroup;GROUP_NUMBER NAME BLOCK_SIZE ALLOCATION_UNIT_SIZE------------ ------------------------------ ---------- -------------------- 4 FRA 4096 1048576 3 DATA 4096 1048576
$ kfed read /dev/mapper/cdpfra1 blknum=510|>/tmp/diskhead.510$ kfed read /dev/mapper/cdpfra1 blknum=0|>/tmp/diskhead.0$ ll /tmp/diskhead.*-rw-r--r-- 1 grid oinstall 0 Nov 5 09:47 /tmp/diskhead.0-rw-r--r-- 1 grid oinstall 0 Nov 5 09:46 /tmp/diskhead.510$ diff /tmp/diskhead.0 /tmp/diskhead.510--通过对比发现两者无不同记录返回,证明他们记录内容完全相同
破坏asm disk header
[grid@hlwzf1 lib]$ kfed read /dev/mapper/cdpfra1kfbh.endian: 1 ; 0x000: 0x01kfbh.hard: 130 ; 0x001: 0x82kfbh.type: 1 ; 0x002: KFBTYP_DISKHEADkfbh.datfmt: 1 ; 0x003: 0x01kfbh.block.blk: 0 ; 0x004: blk=0kfbh.block.obj: 2147483650 ; 0x008: disk=2kfbh.check: 49794540 ; 0x00c: 0x02f7cdeckfbh.fcn.base: 2493 ; 0x010: 0x000009bdkfbh.fcn.wrap: 0 ; 0x014: 0x00000000kfbh.spare1: 0 ; 0x018: 0x00000000kfbh.spare2: 0 ; 0x01c: 0x00000000kfdhdb.driver.provstr: ORCLDISK ; 0x000: length=8$ dd if=/dev/zero of=/dev/mapper/cdpfra1 bs=4096 count=11+0 records in1+0 records out4096 bytes (4.1 kB) copied, 0.00430849 s, 951 kB/s$ kfed read /dev/mapper/cdpfra1 blknum=0kfbh.endian: 0 ; 0x000: 0x00kfbh.hard: 0 ; 0x001: 0x00kfbh.type: 0 ; 0x002: KFBTYP_INVALIDkfbh.datfmt: 0 ; 0x003: 0x00kfbh.block.blk: 0 ; 0x004: blk=0kfbh.block.obj: 0 ; 0x008: file=0kfbh.check: 0 ; 0x00c: 0x00000000kfbh.fcn.base: 0 ; 0x010: 0x00000000kfbh.fcn.wrap: 0 ; 0x014: 0x00000000kfbh.spare1: 0 ; 0x018: 0x00000000kfbh.spare2: 0 ; 0x01c: 0x00000000
查看破坏后的磁盘属性和操作
SQL> set linesize 300SQL> col PATH format a30SQL> select group_number,DISK_NUMBER,PATH,HEADER_STATUS from v$asm_disk where group_number<>0;GROUP_NUMBER DISK_NUMBER PATH HEADER_STATU------------ ----------- ------------------------------ ------------ 4 2 /dev/mapper/cdpfra1 CANDIDATE 4 3 /dev/mapper/cdpfra2 MEMBER 3 7 /dev/mapper/cdpdata4 MEMBER 3 6 /dev/mapper/cdpdata3 MEMBER 3 4 /dev/mapper/cdpdata1 MEMBER 3 5 /dev/mapper/cdpdata2 MEMBERSQL> alter diskgroup fra dismount;Diskgroup altered.SQL> alter diskgroup fra mount;alter diskgroup fra mount*ERROR at line 1:ORA-15032: not all alterations performedORA-15040: diskgroup is incompleteORA-15042: ASM disk "2" is missing from group number "4"
使用kfed repair修改损坏asm disk header
$ kfed repair '/dev/mapper/cdpfra1'$ kfed read /dev/mapper/cdpfra1 blknum=0kfbh.endian: 1 ; 0x000: 0x01kfbh.hard: 130 ; 0x001: 0x82kfbh.type: 1 ; 0x002: KFBTYP_DISKHEADkfbh.datfmt: 1 ; 0x003: 0x01kfbh.block.blk: 0 ; 0x004: blk=0kfbh.block.obj: 2147483650 ; 0x008: disk=2kfbh.check: 49794540 ; 0x00c: 0x02f7cdeckfbh.fcn.base: 2493 ; 0x010: 0x000009bdkfbh.fcn.wrap: 0 ; 0x014: 0x00000000kfbh.spare1: 0 ; 0x018: 0x00000000kfbh.spare2: 0 ; 0x01c: 0x00000000kfdhdb.driver.provstr: ORCLDISK ; 0x000: length=8SQL> alter diskgroup fra mount;Diskgroup altered.
kfed read /dev/mapper/cdpfra1 blknum=0|>/tmp/diskhead.0还可以使用kfed merge恢复
kfed merge /dev/mapper/cdpfra1 /tmp/diskhead.0
- asm disk header 的自动备份和恢复
- Oracle 学习之--ASM DISK Header的备份和恢复(1)
- Oracle 学习之--ASM DISK Header的备份和恢复(2)
- asm备份disk header
- ASM disk header 备份与恢复、单机ASM下CSS进程无法启动
- oracle中asm disk header 彻底损坏恢复的方法
- Oracle RAC ASM disk header 备份 恢复 与 重建 示例说明
- Oracle RAC ASM disk header 备份 恢复 与 重建 示例说明
- Oracle RAC ASM disk header 备份 恢复 与 重建 示例说明
- ASM diskmetadata及ASM diskgroup metadata的备份及恢复 Voting Disk及OCR的备份及恢复
- RAC关键信息(OCR/VOTE DISK/ASM DISK HEADER)备份
- RAC关键信息(OCR/VOTE DISK/ASM DISK HEADER)备份
- 手动修改asm disk header
- ASM 翻译系列第十弹:ASM Internal ASM DISK header
- Voting Disk和OCR基础、管理、备份和恢复
- Redhat 下ASM 11.2.0.1 oracleasm deletedisk - Clearing disk header failed 的解决方法
- Redhat 下ASM 11.2.0.1 oracleasm deletedisk - Clearing disk header failed 的解决方法
- 用java 实现 oracle的自动备份和恢复功能。
- View 的setVisibility有三个值:VISIBLE、INVISIBLE和GONE的区别
- 创建qcow2文件
- 字符串---转换字符串格式为字符+连续出现的次数
- 一个关于二维指针的问题
- 【VR】Leap Motion 官网文档(二) Unity插件概述
- asm disk header 的自动备份和恢复
- 手机短信的PDU编码和解码
- CB-4 上搭建 git 服务器
- 【嵌入式linux】(第三步):安装串口终端 (ubuntu安装minicom串口终端)
- Unity3D研究院之手游开发中所有特殊的文件夹
- kettle6.0源码编译方法
- linux:Bash常用快捷键
- 一个位操作的小技巧
- android studio 添加assets目录