oracle asm 磁盘头数据以及备份与恢复基础篇(二)

来源:互联网 发布:细说php第三版pdf 编辑:程序博客网 时间:2024/05/29 13:32

今天是2014-03-11,对于Oracle asm的元数据分为固定源数据和逻辑源数据,固定源数据一般占用磁盘的前两个au,其中内容包括disk header 、allocation table(AT)、free space table(FST)、(partnership status table(PST),逻辑源数据是存在asm 文件中包括的一些信息:

一:工具使用:

查看磁盘元数据通常考虑使用kfed工具,但是该工具和bbed类似,需要自动编译才可使用:

编译生成工具:

[sql] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. [root@oracle-one ~]# su - grid  
  2. -bash-4.1$ cd /ginf/grid/product/11.2.0/grid_1/rdbms/  
  3. -bash-4.1$ cd lib  
  4. -bash-4.1$ make -f ins_rdbms.mk ikfed  
  5.   
  6. Linking KFED utility (kfed)  
  7. rm -f /ginf/grid/product/11.2.0/grid_1/rdbms/lib/kfed  
  8. gcc -o /ginf/grid/product/11.2.0/grid_1/rdbms/lib/kfed -m64 -z noexecstack -L/ginf/grid/product/11.2.0/grid_1/rdbms/lib/ -L/ginf/grid/product/11.2.0/grid_1/lib/ -L/ginf/grid/product/11.2.0/grid_1/lib/stubs/  /ginf/grid/product/11.2.0/grid_1/lib/s0main.o /ginf/grid/product/11.2.0/grid_1/rdbms/lib/sskfeded.o /ginf/grid/product/11.2.0/grid_1/rdbms/lib/skfedpt.o -ldbtools11 -lcommon11 -lcell11 -lskgxp11 -lhasgen11 -lskgxn2 -lnnz11 -lzt11 -lxml11 -locr11 -locrb11 -locrutl11 -lhasgen11 -lskgxn2 -lnnz11 -lzt11 -lxml11  -lasmclnt11 -lclntsh  `cat /ginf/grid/product/11.2.0/grid_1/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /ginf/grid/product/11.2.0/grid_1/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -lztkg11 -lclient11 -lnnetd11  -lvsn11 -lcommon11 -lgeneric11 -lmm -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 `cat /ginf/grid/product/11.2.0/grid_1/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /ginf/grid/product/11.2.0/grid_1/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lclient11 -lnnetd11  -lvsn11 -lcommon11 -lgeneric11   -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lclient11 -lnnetd11  -lvsn11 -lcommon11 -lgeneric11 -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11   `cat /ginf/grid/product/11.2.0/grid_1/lib/sysliblist` -Wl,-rpath,/ginf/grid/product/11.2.0/grid_1/lib -lm    `cat /ginf/grid/product/11.2.0/grid_1/lib/sysliblist` -ldl -lm   -L/ginf/grid/product/11.2.0/grid_1/lib  
  9. test ! -f /ginf/grid/product/11.2.0/grid_1/bin/kfed ||\  
  10.            mv -f /ginf/grid/product/11.2.0/grid_1/bin/kfed /ginf/grid/product/11.2.0/grid_1/bin/kfedO  
  11. mv /ginf/grid/product/11.2.0/grid_1/rdbms/lib/kfed /ginf/grid/product/11.2.0/grid_1/bin/kfed  
  12. chmod 751 /ginf/grid/product/11.2.0/grid_1/bin/kfed  
  13. -bash-4.1$   
  14. -bash-4.1$ kfed -help  
  15. as/mlib         ASM Library [asmlib='lib']  
  16. aun/um          AU number to examine or update [AUNUM=number]  
  17. aus/z           Allocation Unit size in bytes [AUSZ=number]  
  18. blkn/um         Block number to examine or update [BLKNUM=number]  
  19. blks/z          Metadata block size in bytes [BLKSZ=number]  
  20. ch/ksum         Update checksum before each write [CHKSUM=YES/NO]  
  21. cn/t            Count of AUs to process [CNT=number]  
  22. de/v            ASM device to examine or update [DEV=string]  
  23. dm/pall         Don't suppress repeated lines when dumping corrupt blocks [DMPALL=YES/NO]  
  24. o/p             KFED operation type [OP=READ/WRITE/MERGE/REPAIR/NEW/FORM/FIND/STRUCT]  
  25. p/rovnm         Name for provisioning purposes [PROVNM=string]  
  26. s/eek           AU number to seek to [SEEK=number]  
  27. te/xt           File name for translated block text [TEXT=string]  
  28. ty/pe           ASM metadata block type number [TYPE=number]  
  29. -bash-4.1$ which kfed  
  30. /ginf/grid/product/11.2.0/grid_1/bin/kfed  


通过help可以看出,kfed工具operation type有 read,write,dumping ,repare,new,from ,find,struct功能。

二、查看源数据:

asm 磁盘有个磁盘头(disk header)占用磁盘的第一个au的第一个block。查看如下:

eg:

[sql] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. -bash-4.1$ kfed read /dev/oracleasm/disks/ASMDISK2 aun=0 blkn=0|more  
  2. kfbh.endian:                          1 ; 0x000: 0x01  
  3. kfbh.hard:                          130 ; 0x001: 0x82  
  4. kfbh.type:                            1 ; 0x002: KFBTYP_DISKHEAD  
  5. kfbh.datfmt:                          1 ; 0x003: 0x01  
  6. kfbh.block.blk:                       0 ; 0x004: blk=0  
  7. kfbh.block.obj:              2147483649 ; 0x008: disk=1  
  8. kfbh.check:                  2360755735 ; 0x00c: 0x8cb64617  
  9. kfbh.fcn.base:                    55762 ; 0x010: 0x0000d9d2  
  10. kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000  
  11. kfbh.spare1:                          0 ; 0x018: 0x00000000  
  12. kfbh.spare2:                          0 ; 0x01c: 0x00000000  
  13. kfdhdb.driver.provstr: ORCLDISKASMDISK2 ; 0x000: length=16  
  14. kfdhdb.driver.reserved[0]:   1145918273 ; 0x008: 0x444d5341  
  15. kfdhdb.driver.reserved[1]:    843797321 ; 0x00c: 0x324b5349  
  16. kfdhdb.driver.reserved[2]:            0 ; 0x010: 0x00000000  
  17. kfdhdb.driver.reserved[3]:            0 ; 0x014: 0x00000000  
  18. kfdhdb.driver.reserved[4]:            0 ; 0x018: 0x00000000  
  19. kfdhdb.driver.reserved[5]:            0 ; 0x01c: 0x00000000  
  20. kfdhdb.compat:                186646528 ; 0x020: 0x0b200000  
  21. kfdhdb.dsknum:                        1 ; 0x024: 0x0001  
  22. kfdhdb.grptyp:                        2 ; 0x026: KFDGTP_NORMAL  
  23. kfdhdb.hdrsts:                        3 ; 0x027: KFDHDR_MEMBER  
  24. kfdhdb.dskname:         DATAGROUP1_0001 ; 0x028: length=15  
  25. kfdhdb.grpname:              DATAGROUP1 ; 0x048: length=10  
  26. kfdhdb.fgname:          DATAGROUP1_0001 ; 0x068: length=15  
  27. kfdhdb.capname:                         ; 0x088: length=0  
  28. kfdhdb.crestmp.hi:             32993346 ; 0x0a8: HOUR=0x2 DAYS=0x2 MNTH=0xc YEAR=0x7dd  
  29. kfdhdb.crestmp.lo:             71610368 ; 0x0ac: USEC=0x0 MSEC=0x12c SECS=0x4 MINS=0x1  
  30. kfdhdb.mntstmp.hi:             33000821 ; 0x0b0: HOUR=0x15 DAYS=0xb MNTH=0x3 YEAR=0x7de  
  31. kfdhdb.mntstmp.lo:           3170037760 ; 0x0b4: USEC=0x0 MSEC=0xbc SECS=0xf MINS=0x2f  
  32. kfdhdb.secsize:                     512 ; 0x0b8: 0x0200  
  33. kfdhdb.blksize:                    4096 ; 0x0ba: 0x1000  
  34. kfdhdb.ausize:                  1048576 ; 0x0bc: 0x00100000  
  35. kfdhdb.mfact:                    113792 ; 0x0c0: 0x0001bc80  
  36. kfdhdb.dsksize:                    4094 ; 0x0c4: 0x00000ffe  
  37. kfdhdb.pmcnt:                         2 ; 0x0c8: 0x00000002  
  38. kfdhdb.fstlocn:                       1 ; 0x0cc: 0x00000001  
  39. kfdhdb.altlocn:                       2 ; 0x0d0: 0x00000002  
  40. kfdhdb.f1b1locn:                      2 ; 0x0d4: 0x00000002  
  41. kfdhdb.redomirrors[0]:                2 ; 0x0d8: 0x0002  
  42. kfdhdb.redomirrors[1]:                1 ; 0x0da: 0x0001  
  43. kfdhdb.redomirrors[2]:                3 ; 0x0dc: 0x0003  
  44. kfdhdb.redomirrors[3]:            65535 ; 0x0de: 0xffff  
  45. kfdhdb.dbcompat:              168820736 ; 0x0e0: 0x0a100000  
  46. kfdhdb.grpstmp.hi:             32993346 ; 0x0e4: HOUR=0x2 DAYS=0x2 MNTH=0xc YEAR=0x7dd  
  47. kfdhdb.grpstmp.lo:             70603776 ; 0x0e8: USEC=0x0 MSEC=0x155 SECS=0x3 MINS=0x1  
  48. kfdhdb.vfstart:                       0 ; 0x0ec: 0x00000000  
  49. kfdhdb.vfend:                         0 ; 0x0f0: 0x00000000  
  50. kfdhdb.spfile:                        0 ; 0x0f4: 0x00000000  
  51. kfdhdb.spfflg:                        0 ; 0x0f8: 0x00000000  
  52. kfdhdb.ub4spare[0]:                   0 ; 0x0fc: 0x00000000  
  53. kfdhdb.ub4spare[1]:                   0 ; 0x100: 0x00000000  
  54. kfdhdb.ub4spare[2]:                   0 ; 0x104: 0x00000000  
  55. kfdhdb.ub4spare[3]:                   0 ; 0x108: 0x00000000  
  56. kfdhdb.ub4spare[4]:                   0 ; 0x10c: 0x00000000  
  57. kfdhdb.ub4spare[5]:                   0 ; 0x110: 0x00000000  
  58. kfdhdb.ub4spare[6]:                   0 ; 0x114: 0x00000000  
  59. kfdhdb.ub4spare[7]:                   0 ; 0x118: 0x00000000  
  60. kfdhdb.ub4spare[8]:                   0 ; 0x11c: 0x00000000  
  61. kfdhdb.ub4spare[9]:                   0 ; 0x120: 0x00000000  
  62. kfdhdb.ub4spare[10]:                  0 ; 0x124: 0x00000000  
  63. kfdhdb.ub4spare[11]:                  0 ; 0x128: 0x00000000  
  64. kfdhdb.ub4spare[12]:                  0 ; 0x12c: 0x00000000  
  65. kfdhdb.ub4spare[13]:                  0 ; 0x130: 0x00000000  
  66. kfdhdb.ub4spare[14]:                  0 ; 0x134: 0x00000000  
  67. kfdhdb.ub4spare[15]:                  0 ; 0x138: 0x00000000  
  68. kfdhdb.ub4spare[16]:                  0 ; 0x13c: 0x00000000  
  69. kfdhdb.ub4spare[17]:                  0 ; 0x140: 0x00000000  
  70. kfdhdb.ub4spare[18]:                  0 ; 0x144: 0x00000000  
  71. kfdhdb.ub4spare[19]:                  0 ; 0x148: 0x00000000  
  72. kfdhdb.ub4spare[20]:                  0 ; 0x14c: 0x00000000  
  73. kfdhdb.ub4spare[21]:                  0 ; 0x150: 0x00000000  
  74. kfdhdb.ub4spare[22]:                  0 ; 0x154: 0x00000000  
  75. kfdhdb.ub4spare[23]:                  0 ; 0x158: 0x00000000  
  76. kfdhdb.ub4spare[24]:                  0 ; 0x15c: 0x00000000  
  77. kfdhdb.ub4spare[25]:                  0 ; 0x160: 0x00000000  
  78. kfdhdb.ub4spare[26]:                  0 ; 0x164: 0x00000000  
  79. kfdhdb.ub4spare[27]:                  0 ; 0x168: 0x00000000  
  80. kfdhdb.ub4spare[28]:                  0 ; 0x16c: 0x00000000  
  81. kfdhdb.ub4spare[29]:                  0 ; 0x170: 0x00000000  
  82. kfdhdb.ub4spare[30]:                  0 ; 0x174: 0x00000000  
  83. kfdhdb.ub4spare[31]:                  0 ; 0x178: 0x00000000  
  84. kfdhdb.ub4spare[32]:                  0 ; 0x17c: 0x00000000  
  85. kfdhdb.ub4spare[33]:                  0 ; 0x180: 0x00000000  
  86. kfdhdb.ub4spare[34]:                  0 ; 0x184: 0x00000000  
  87. kfdhdb.ub4spare[35]:                  0 ; 0x188: 0x00000000  
  88. kfdhdb.ub4spare[36]:                  0 ; 0x18c: 0x00000000  
  89. kfdhdb.ub4spare[37]:                  0 ; 0x190: 0x00000000  
  90. kfdhdb.ub4spare[38]:                  0 ; 0x194: 0x00000000  
  91. kfdhdb.ub4spare[39]:                  0 ; 0x198: 0x00000000  
  92. kfdhdb.ub4spare[40]:                  0 ; 0x19c: 0x00000000  
  93. kfdhdb.ub4spare[41]:                  0 ; 0x1a0: 0x00000000  
  94. kfdhdb.ub4spare[42]:                  0 ; 0x1a4: 0x00000000  
  95. kfdhdb.ub4spare[43]:                  0 ; 0x1a8: 0x00000000  
  96. kfdhdb.ub4spare[44]:                  0 ; 0x1ac: 0x00000000  
  97. kfdhdb.ub4spare[45]:                  0 ; 0x1b0: 0x00000000  
  98. kfdhdb.ub4spare[46]:                  0 ; 0x1b4: 0x00000000  
  99. kfdhdb.ub4spare[47]:                  0 ; 0x1b8: 0x00000000  
  100. kfdhdb.ub4spare[48]:                  0 ; 0x1bc: 0x00000000  
  101. kfdhdb.ub4spare[49]:                  0 ; 0x1c0: 0x00000000  
  102. kfdhdb.ub4spare[50]:                  0 ; 0x1c4: 0x00000000  
  103. kfdhdb.ub4spare[51]:                  0 ; 0x1c8: 0x00000000  
  104. kfdhdb.ub4spare[52]:                  0 ; 0x1cc: 0x00000000  
  105. kfdhdb.ub4spare[53]:                  0 ; 0x1d0: 0x00000000  
  106. kfdhdb.acdb.aba.seq:                  0 ; 0x1d4: 0x00000000  
  107. kfdhdb.acdb.aba.blk:                  0 ; 0x1d8: 0x00000000  
  108. kfdhdb.acdb.ents:                     0 ; 0x1dc: 0x0000  
  109. kfdhdb.acdb.ub2spare:                 0 ; 0x1de: 0x0000  
  110. -bash-4.1$  

 

从上面可以获得很多有意思的信息如:

kfbh.type:                            1 ; 0x002: KFBTYP_DISKHEAD(磁盘头)

kfdhdb.dskname:         DATAGROUP1_0001 ; 0x028: length=15(磁盘名称啊)
kfdhdb.grpname:              DATAGROUP1 ; 0x048: length=10(磁盘组名称啊)
kfdhdb.fgname:          DATAGROUP1_0001 ; 0x068: length=15(故障组名称啊)

kfdhdb.secsize:                     512 ; 0x0b8: 0x0200(扇区大小啊)
kfdhdb.blksize:                    4096 ; 0x0ba: 0x1000(块4k啊)
kfdhdb.ausize:                  1048576 ; 0x0bc: 0x00100000(au 1M啊)
。。。。。

disk header之后就是分配表如已经分配的au空闲的au(fst)。

查看第二个块,就是fst

eg:

[sql] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. -bash-4.1$ kfed read /dev/oracleasm/disks/ASMDISK2 aun=0 blkn=1|more  
  2. kfbh.endian:                          1 ; 0x000: 0x01  
  3. kfbh.hard:                          130 ; 0x001: 0x82  
  4. <span style="color:#ff0000;">kfbh.type:                            2 ; 0x002: KFBTYP_FREESPC  
  5. </span>kfbh.datfmt:                          2 ; 0x003: 0x02  
  6. kfbh.block.blk:                       1 ; 0x004: blk=1  
  7. kfbh.block.obj:              2147483649 ; 0x008: disk=1  
  8. kfbh.check:                  2189325159 ; 0x00c: 0x827e7367  
  9. kfbh.fcn.base:                    57496 ; 0x010: 0x0000e098  
  10. kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000  
  11. kfbh.spare1:                          0 ; 0x018: 0x00000000  
  12. kfbh.spare2:                          0 ; 0x01c: 0x00000000  
  13. kfdfsb.aunum:                         0 ; 0x000: 0x00000000  
  14. kfdfsb.max:                         254 ; 0x004: 0x00fe  
  15. kfdfsb.cnt:                          10 ; 0x006: 0x000a  
  16. kfdfsb.bound:                         0 ; 0x008: 0x0000  
  17. kfdfsb.flag:                          1 ; 0x00a: B=1  
  18. kfdfsb.ub1spare:                      0 ; 0x00b: 0x00  
  19. kfdfsb.spare[0]:                      0 ; 0x00c: 0x00000000  
  20. kfdfsb.spare[1]:                      0 ; 0x010: 0x00000000  
  21. kfdfsb.spare[2]:                      0 ; 0x014: 0x00000000  
  22. kfdfse[0].fse:                        0 ; 0x018: FREE=0x0 FRAG=0x0  
  23. kfdfse[1].fse:                        0 ; 0x019: FREE=0x0 FRAG=0x0  
  24. kfdfse[2].fse:                        0 ; 0x01a: FREE=0x0 FRAG=0x0  
  25. kfdfse[3].fse:                      119 ; 0x01b: FREE=0x7 FRAG=0x7  
  26. kfdfse[4].fse:                      119 ; 0x01c: FREE=0x7 FRAG=0x7  
  27. kfdfse[5].fse:                      119 ; 0x01d: FREE=0x7 FRAG=0x7  
  28. kfdfse[6].fse:                      119 ; 0x01e: FREE=0x7 FRAG=0x7  
  29. kfdfse[7].fse:                      119 ; 0x01f: FREE=0x7 FRAG=0x7  
  30. kfdfse[8].fse:                      119 ; 0x020: FREE=0x7 FRAG=0x7  
  31. kfdfse[9].fse:                      102 ; 0x021: FREE=0x6 FRAG=0x6  
  32. kfdfse[10].fse:                       0 ; 0x022: FREE=0x0 FRAG=0x0  
  33. kfdfse[11].fse:                       0 ; 0x023: FREE=0x0 FRAG=0x0  
  34. kfdfse[12].fse:                       0 ; 0x024: FREE=0x0 FRAG=0x0  
  35. kfdfse[13].fse:                       0 ; 0x025: FREE=0x0 FRAG=0x0  
  36. kfdfse[14].fse:                       0 ; 0x026: FREE=0x0 FRAG=0x0  
  37. kfdfse[15].fse:                       0 ; 0x027: FREE=0x0 FRAG=0x0  
  38. kfdfse[16].fse:                       0 ; 0x028: FREE=0x0 FRAG=0x0  

。。。

第三个块开始就是分配的allocation table(at)

eg:

[sql] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. -bash-4.1$ kfed read /dev/oracleasm/disks/ASMDISK2 aun=0 blkn=2|more  
  2. kfbh.endian:                          1 ; 0x000: 0x01  
  3. kfbh.hard:                          130 ; 0x001: 0x82  
  4. <span style="color:#ff0000;">kfbh.type:                            3 ; 0x002: KFBTYP_ALLOCTBL  
  5. </span>kfbh.datfmt:                          2 ; 0x003: 0x02  
  6. kfbh.block.blk:                       2 ; 0x004: blk=2  
  7. kfbh.block.obj:              2147483649 ; 0x008: disk=1  
  8. kfbh.check:                  2183618975 ; 0x00c: 0x8227619f  
  9. kfbh.fcn.base:                    57496 ; 0x010: 0x0000e098  
  10. kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000  
  11. kfbh.spare1:                          0 ; 0x018: 0x00000000  
  12. kfbh.spare2:                          0 ; 0x01c: 0x00000000  
  13. kfdatb.aunum:                         0 ; 0x000: 0x00000000  
  14. kfdatb.shrink:                      448 ; 0x004: 0x01c0  
  15. kfdatb.ub2pad:                        0 ; 0x006: 0x0000  
  16. kfdatb.auinfo[0].link.next:           8 ; 0x008: 0x0008  
  17. kfdatb.auinfo[0].link.prev:           8 ; 0x00a: 0x0008  
  18. kfdatb.auinfo[1].link.next:          12 ; 0x00c: 0x000c  
  19. kfdatb.auinfo[1].link.prev:          12 ; 0x00e: 0x000c  
  20. kfdatb.auinfo[2].link.next:          16 ; 0x010: 0x0010  
  21. kfdatb.auinfo[2].link.prev:          16 ; 0x012: 0x0010  
  22. kfdatb.auinfo[3].link.next:          20 ; 0x014: 0x0014  
  23. kfdatb.auinfo[3].link.prev:          20 ; 0x016: 0x0014  
  24. kfdatb.auinfo[4].link.next:          24 ; 0x018: 0x0018  
  25. kfdatb.auinfo[4].link.prev:          24 ; 0x01a: 0x0018  
  26. kfdatb.auinfo[5].link.next:          28 ; 0x01c: 0x001c  
  27. kfdatb.auinfo[5].link.prev:          28 ; 0x01e: 0x001c  
  28. kfdatb.auinfo[6].link.next:          32 ; 0x020: 0x0020  
  29. kfdatb.auinfo[6].link.prev:          32 ; 0x022: 0x0020  
  30. kfdatb.spare:                         0 ; 0x024: 0x00000000  
  31. kfdate[0].discriminator:              1 ; 0x028: 0x00000001  
  32. kfdate[0].allo.lo:                    0 ; 0x028: XNUM=0x0  
  33. kfdate[0].allo.hi:              8388608 ; 0x02c: V=1 I=0 H=0 FNUM=0x0  
  34. kfdate[1].discriminator:              1 ; 0x030: 0x00000001  
  35. kfdate[1].allo.lo:                    0 ; 0x030: XNUM=0x0  
  36. kfdate[1].allo.hi:              8388608 ; 0x034: V=1 I=0 H=0 FNUM=0x0  
  37. kfdate[2].discriminator:              1 ; 0x038: 0x00000001  
  38. kfdate[2].allo.lo:                    1 ; 0x038: XNUM=0x1  
  39. kfdate[2].allo.hi:              8388609 ; 0x03c: V=1 I=0 H=0 FNUM=0x1  
  40. kfdate[3].discriminator:              1 ; 0x040: 0x00000001  
  41. kfdate[3].allo.lo:                    0 ; 0x040: XNUM=0x0  
  42. kfdate[3].allo.hi:              8388610 ; 0x044: V=1 I=0 H=0 FNUM=0x2  
  43. kfdate[4].discriminator:              1 ; 0x048: 0x00000001  
  44. kfdate[4].allo.lo:                    2 ; 0x048: XNUM=0x2  
  45. kfdate[4].allo.hi:              8388611 ; 0x04c: V=1 I=0 H=0 FNUM=0x3  
  46. kfdate[5].discriminator:              1 ; 0x050: 0x00000001  
  47. --More--  

 

at是记录磁盘分配au的情况,fst是记录未分配au的情况,另外还有pst是记录磁盘成员之间的伙伴关系,另外还有保存磁盘心跳的信息,避免被不同集群挂载。

eg:

[sql] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. -bash-4.1$ kfed read /dev/oracleasm/disks/ASMDISK2 aun=1 blkn=0|more  
  2. kfbh.endian:                          1 ; 0x000: 0x01  
  3. kfbh.hard:                          130 ; 0x001: 0x82  
  4. <span style="color:#ff0000;">kfbh.type:                           17 ; 0x002: KFBTYP_PST_META  
  5. </span>kfbh.datfmt:                          2 ; 0x003: 0x02  
  6. kfbh.block.blk:                     256 ; 0x004: blk=256  
  7. kfbh.block.obj:              2147483649 ; 0x008: disk=1  
  8. kfbh.check:                  3833865074 ; 0x00c: 0xe4842372  
  9. kfbh.fcn.base:                        0 ; 0x010: 0x00000000  
  10. kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000  
  11. kfbh.spare1:                          0 ; 0x018: 0x00000000  
  12. kfbh.spare2:                          0 ; 0x01c: 0x00000000  
  13. kfdpHdrPairBv1.first.super.time.hi:33000821 ; 0x000: HOUR=0x15 DAYS=0xb MNTH=0x3 YEAR=0x7de  
  14. kfdpHdrPairBv1.first.super.time.lo:1833184256 ; 0x004: USEC=0x0 MSEC=0x10b SECS=0x14 MINS=0x1b  
  15. kfdpHdrPairBv1.first.super.last:     32 ; 0x008: 0x00000020  
  16. kfdpHdrPairBv1.first.super.next:     32 ; 0x00c: 0x00000020  
  17. kfdpHdrPairBv1.first.super.copyCnt:   3 ; 0x010: 0x03  
  18. kfdpHdrPairBv1.first.super.version:   1 ; 0x011: 0x01  
  19. kfdpHdrPairBv1.first.super.ub2spare:  0 ; 0x012: 0x0000  
  20. kfdpHdrPairBv1.first.super.incarn:    4 ; 0x014: 0x00000004  
  21. kfdpHdrPairBv1.first.super.copy[0]:   1 ; 0x018: 0x0001  
  22. kfdpHdrPairBv1.first.super.copy[1]:   2 ; 0x01a: 0x0002  
  23. kfdpHdrPairBv1.first.super.copy[2]:   3 ; 0x01c: 0x0003  
  24. kfdpHdrPairBv1.first.super.copy[3]:   0 ; 0x01e: 0x0000  
  25. kfdpHdrPairBv1.first.super.copy[4]:   0 ; 0x020: 0x0000  
  26. kfdpHdrPairBv1.first.super.dtaSz:     4 ; 0x022: 0x0004  
  27. kfdpHdrPairBv1.first.asmCompat:186646528 ; 0x024: 0x0b200000  
  28. kfdpHdrPairBv1.first.newCopy[0]:      0 ; 0x028: 0x0000  
  29. kfdpHdrPairBv1.first.newCopy[1]:      0 ; 0x02a: 0x0000  
  30. kfdpHdrPairBv1.first.newCopy[2]:      0 ; 0x02c: 0x0000  
  31. kfdpHdrPairBv1.first.newCopy[3]:      0 ; 0x02e: 0x0000  
  32. kfdpHdrPairBv1.first.newCopy[4]:      0 ; 0x030: 0x0000  
  33. kfdpHdrPairBv1.first.newCopyCnt:      0 ; 0x032: 0x00  
  34. kfdpHdrPairBv1.first.contType:        1 ; 0x033: 0x01  
  35. kfdpHdrPairBv1.first.spare0:          0 ; 0x034: 0x00000000  
  36. kfdpHdrPairBv1.first.ppat[0]:         0 ; 0x038: 0x0000  
  37. kfdpHdrPairBv1.first.ppat[1]:         0 ; 0x03a: 0x0000  
  38. kfdpHdrPairBv1.first.ppat[2]:         0 ; 0x03c: 0x0000  
  39. kfdpHdrPairBv1.first.ppat[3]:         0 ; 0x03e: 0x0000  
  40. kfdpHdrPairBv1.first.ppatsz:          0 ; 0x040: 0x00  
  41. kfdpHdrPairBv1.first.spare1:          0 ; 0x041: 0x00  
  42. kfdpHdrPairBv1.first.spare2:          0 ; 0x042: 0x0000  
  43. kfdpHdrPairBv1.first.spares[0]:       0 ; 0x044: 0x00000000  
  44. kfdpHdrPairBv1.first.spares[1]:       0 ; 0x048: 0x00000000  
  45. kfdpHdrPairBv1.first.spares[2]:       0 ; 0x04c: 0x00000000  
  46. kfdpHdrPairBv1.first.spares[3]:       0 ; 0x050: 0x00000000  

。。。。

第二个au的最后一个块,1024/4=255+1(因取0故丢1),恰恰存在了磁盘心态,避免了脑裂方式一种补偿。

eg:

[sql] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. -bash-4.1$ kfed read /dev/oracleasm/disks/ASMDISK2 aun=1 blkn=255|more  
  2. kfbh.endian:                          1 ; 0x000: 0x01  
  3. kfbh.hard:                          130 ; 0x001: 0x82  
  4. kfbh.type:                           19 ; 0x002: <span style="color:#ff0000;">KFBTYP_HBEAT  
  5. </span>kfbh.datfmt:                          2 ; 0x003: 0x02  
  6. kfbh.block.blk:                     511 ; 0x004: blk=511  
  7. kfbh.block.obj:              2147483649 ; 0x008: disk=1  
  8. kfbh.check:                  1571693689 ; 0x00c: 0x5dae2479  
  9. kfbh.fcn.base:                        0 ; 0x010: 0x00000000  
  10. kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000  
  11. kfbh.spare1:                          0 ; 0x018: 0x00000000  
  12. kfbh.spare2:                          0 ; 0x01c: 0x00000000  
  13. <span style="color:#ff0000;">kfdpHbeatB</span>.instance:                  1 ; 0x000: 0x00000001  
  14. kfdpHbeatB.ts.hi:              33000823 ; 0x004: HOUR=0x17 DAYS=0xb MNTH=0x3 YEAR=0x7de  
  15. kfdpHbeatB.ts.lo:            2141339648 ; 0x008: USEC=0x0 MSEC=0x90 SECS=0x3a MINS=0x1f  
  16. <span style="color:#ff0000;">kfdpHbeatB</span>.rnd[0]:           1286604410 ; 0x00c: 0x4cb0067a  
  17. k<span style="color:#ff0000;">fdpHbeatB</span>.rnd[1]:            735447844 ; 0x010: 0x2bd60b24  
  18. kfdpHbeatB.rnd[2]:           3112551355 ; 0x014: 0xb985c3bb  
  19. kfdpHbeatB.rnd[3]:           2131469333 ; 0x018: 0x7f0ba415  
  20. -bash-4.1$   

既然磁盘的磁头源数据这么重要,那么在11G开始就有了md_backup和md_restore对元数据进行备份和恢复的方式:

eg:

-bash-4.1$ asmcmd -p

ASMCMD [+] > help md_backup
        md_backup

        The md_backup command creates a backup file containing metadata 
        for one or more disk groups.
        Volume and Oracle Automatic Storage Management Cluster File System 
        (Oracle ACFS) file system information is not backed up.

        md_backup backup_file [-G diskgroup [,diskgroup,...]]

        The options for the md_backup command are described below.

        backup_file     - Specifies the backup file in which you want to 
                          store the metadata.
        -G diskgroup    - Specifies the disk group name of the disk group 
                          that must be backed up

        By default all the mounted disk groups are included in the backup file,
        which is saved in the current working directory.

        The first example shows the use of the backup command when you run it
        without the disk group option. This example backs up all of the mounted
        disk groups and creates the backup image in the current working 
        directory. The second example creates a backup of disk group DATA and
        FRA. The backup that this example creates is saved in the
        /tmp/dgbackup20090716 file.

        ASMCMD [+] > md_backup /tmp/dgbackup20090716
        ASMCMD [+] > md_backup /tmp/dgbackup20090716 -G DATA,FRA
        Disk group metadata to be backed up: DATA
        Disk group metadata to be backed up: FRA
        Current alias directory path: ASM/ASMPARAMETERFILE
        Current alias directory path: ORCL/DATAFILE
        Current alias directory path: ORCL/TEMPFILE
        Current alias directory path: ORCL/CONTROLFILE
        Current alias directory path: ORCL/PARAMETERFILE
        Current alias directory path: ASM
        Current alias directory path: ORCL/ONLINELOG
        Current alias directory path: ORCL
        Current alias directory path: ORCL/CONTROLFILE
        Current alias directory path: ORCL/ARCHIVELOG/2009_07_13
        Current alias directory path: ORCL/BACKUPSET/2009_07_14
        Current alias directory path: ORCL/ARCHIVELOG/2009_07_14
        Current alias directory path: ORCL
        Current alias directory path: ORCL/DATAFILE
        Current alias directory path: ORCL/ARCHIVELOG
        Current alias directory path: ORCL/BACKUPSET
        Current alias directory path: ORCL/ONLINELOG

 

查看帮助已经写了非常的详细,例子也有,现在就开始对元数据进行备份:

首先备份全部磁盘组元数据:

eg:

[sql] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. ASMCMD [+] > md_backup /tmp/dgback_rhys   
  2. Disk group metadata to be backed up: DATAGROUP1  
  3. Disk group metadata to be backed up: DATAGROUP2  
  4. Disk group metadata to be backed up: DATAGROUP3  
  5. Current alias directory path: RHYS/ARCHIVELOG/2014_03_05  
  6. Current alias directory path: RHYS/ARCHIVELOG  
  7. Current alias directory path: RHYS/AUTOBACKUP/2014_01_13  
  8. Current alias directory path: RHYS  
  9. Current alias directory path: DUMMY/PARAMETERFILE  
  10. Current alias directory path: RHYS/FLASHBACK  
  11. Current alias directory path: ASM  
  12. Current alias directory path: RHYS/AUTOBACKUP/2013_12_12  
  13. Current alias directory path: RHYS/ARCHIVELOG/2014_03_10  
  14. Current alias directory path: RHYS/TEMPFILE  
  15. Current alias directory path: RHYS/CONTROLFILE  
  16. Current alias directory path: RHYS/ARCHIVELOG/2014_02_24  
  17. Current alias directory path: RHYS/ARCHIVELOG/2014_03_06  
  18. Current alias directory path: ASM/ASMPARAMETERFILE  
  19. Current alias directory path: RHYS/ARCHIVELOG/2014_03_11  
  20. Current alias directory path: RHYS/AUTOBACKUP  
  21. Current alias directory path: RHYS/ARCHIVELOG/2014_02_23  
  22. Current alias directory path: RHYS/DATAFILE  
  23. Current alias directory path: DUMMY  
  24. Current alias directory path: RHYS/ARCHIVELOG/2014_02_25  
  25. Current alias directory path: RHYS/ONLINELOG  


如果需要备份指定磁盘组的元数据需要使用-G参数:

eg:

[sql] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. ASMCMD [+] > md_backup /tmp/datagroup1_metadata_bak -G datagroup1   
  2. Disk group metadata to be backed up: DATAGROUP1  
  3. Current alias directory path: RHYS/ARCHIVELOG/2014_03_05  
  4. Current alias directory path: RHYS/ARCHIVELOG  
  5. Current alias directory path: RHYS/AUTOBACKUP/2014_01_13  
  6. Current alias directory path: RHYS  
  7. Current alias directory path: DUMMY/PARAMETERFILE  
  8. Current alias directory path: RHYS/FLASHBACK  
  9. Current alias directory path: ASM  
  10. Current alias directory path: RHYS/AUTOBACKUP/2013_12_12  
  11. Current alias directory path: RHYS/ARCHIVELOG/2014_03_10  
  12. Current alias directory path: RHYS/TEMPFILE  
  13. Current alias directory path: RHYS/CONTROLFILE  
  14. Current alias directory path: RHYS/ARCHIVELOG/2014_02_24  
  15. Current alias directory path: RHYS/ARCHIVELOG/2014_03_06  
  16. Current alias directory path: ASM/ASMPARAMETERFILE  
  17. Current alias directory path: RHYS/AUTOBACKUP  
  18. Current alias directory path: RHYS/ARCHIVELOG/2014_03_11  
  19. Current alias directory path: RHYS/ARCHIVELOG/2014_02_23  
  20. Current alias directory path: RHYS/DATAFILE  
  21. Current alias directory path: DUMMY  
  22. Current alias directory path: RHYS/ARCHIVELOG/2014_02_25  
  23. Current alias directory path: RHYS/ONLINELOG  
  24. ASMCMD [+] > exit  
  25. -bash-4.1$ cd /tmp  
  26. -bash-4.1$ ls -l  
  27. total 168  
  28. -rw-r--r-- 1 grid   oinstall 20825 Mar 11 22:52 datagroup1_metadata_bak  
  29. -rw-r--r-- 1 grid   oinstall 43275 Mar 11 22:51 dgback_rhys  
  30. drwx------ 2 root   root      4096 Feb 10 16:17 keyring-2K68nK  
  31. drwx------ 2 grid   oinstall  4096 Mar 10 22:24 keyring-A0oM7y  
  32. drwx------ 2 root   root      4096 Feb  8 15:45 keyring-KWIBiM  
  33. drwx------ 2 root   root      4096 Feb 10 16:08 keyring-sNYqVr  
  34. drwx------ 2 oracle oinstall  4096 Mar 10 22:24 keyring-SRn3Bp  
  35. drwx------ 2 root   root     16384 Dec  2 00:19 lost+found  
  36. -rw-r--r-- 1 grid   oinstall 43275 Mar 11 22:47 oracledgbackup  
  37. drwx------ 2 root   root      4096 Feb 10 16:17 pulse-LeoMkmUKAZsW  
  38. drwx------ 2 gdm    gdm       4096 Mar 10 21:08 pulse-meUziInFt6tt  
  39. drwx------ 2 grid   oinstall  4096 Mar 10 22:26 pulse-tToPdZjzVK1H  
  40. drwx------ 2 grid   oinstall  4096 Mar 10 21:08 virtual-grid.pJx8gu  
  41. drwx------ 2 oracle oinstall  4096 Mar 10 20:38 virtual-oracle.vdM37e  


查看备份的元数据,其实就是磁盘组、磁盘名啊、路径啊等信息

eg:

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. -bash-4.1$ more datagroup1_metadata_bak   
  2. @diskgroup_set = (  
  3.                    {  
  4.                      'ATTRINFO' => {  
  5.                                      '_._DIRVERSION' => '11.2.0.0.0',  
  6.                                      'COMPATIBLE.ASM' => '11.2.0.0.0',  
  7.                                      'COMPATIBLE.RDBMS' => '11.2.0.0.0'  
  8.                                    },  
  9.                      'DISKSINFO' => {  
  10.                                       'DATAGROUP1_0003' => {  
  11.                                                              'DATAGROUP1_0003' => {  
  12.                                                                                     'TOTAL_MB' => '4094',  
  13.                                                                                     'FAILGROUP' => 'DATAGROUP1_0003',  
  14.                                                                                     'NAME' => 'DATAGROUP1_0003',  
  15.                                                                                     'DGNAME' => 'DATAGROUP1',  
  16.                                                                                     'PATH' => '/dev/oracleasm/disks/ASMDISK4'  
  17.                                                                                   }  
  18.                                                            },  
  19.                                       'DATAGROUP1_0001' => {  
  20.                                                              'DATAGROUP1_0001' => {  
  21.                                                                                     'TOTAL_MB' => '4094',  
  22.                                                                                     'FAILGROUP' => 'DATAGROUP1_0001',  
  23.                                                                                     'NAME' => 'DATAGROUP1_0001',  
  24.                                                                                     'DGNAME' => 'DATAGROUP1',  
  25.                                                                                     'PATH' => '/dev/oracleasm/disks/ASMDISK2'  
  26.                                                                                   }  
  27.                                                            },  
  28.                                       'DATAGROUP1_0002' => {  
  29.                                                              'DATAGROUP1_0002' => {  
  30.                                                                                     'TOTAL_MB' => '4094',  
  31.                                                                                     'FAILGROUP' => 'DATAGROUP1_0002',  
  32.                                                                                     'NAME' => 'DATAGROUP1_0002',  
  33.                                                                                     'DGNAME' => 'DATAGROUP1',  
  34.                                                                                     'PATH' => '/dev/oracleasm/disks/ASMDISK3'  
  35.                                                                                   }  
  36.                                                            },  
  37.                                       'DATAGROUP1_0000' => {  
  38.                                                              'DATAGROUP1_0000' => {  
  39.                                                                                     'TOTAL_MB' => '4094',  
  40.                                                                                     'FAILGROUP' => 'DATAGROUP1_0000',  
  41.                                                                                     'NAME' => 'DATAGROUP1_0000',  
  42.                                                                                     'DGNAME' => 'DATAGROUP1',  
  43.                                                                                     'PATH' => '/dev/oracleasm/disks/ASMDISK1'  
  44.                                                                                   }  
  45.                                                            }  
  46.                                     },  
  47.                      'DGINFO' => {  
  48.                                    'DGTORESTORE' => 0,  
  49.                                    'DGCOMPAT' => '11.2.0.0.0',  
  50.                                    'DGNAME' => 'DATAGROUP1',  
  51.                                    'DGDBCOMPAT' => '11.2.0.0.0',  
  52.                                    'DGTYPE' => 'NORMAL',  
  53.                                    'DGAUSZ' => '1048576'  
  54.                                  },  
  55.                      'ALIASINFO' => {  
  56.                                       '11' => {  
  57.                                                 'DGNAME' => 'DATAGROUP1',  
  58.                                                 'LEVEL' => 1,  
  59.                                                 'ALIASNAME' => 'ASM/ASMPARAMETERFILE',  
  60.                                                 'REFERENCE_INDEX' => '16777322'  
  61.                                               },  
  62.                                       '7' => {  
  63.                                                'DGNAME' => 'DATAGROUP1',  
  64.                                                'LEVEL' => 1,  
  65.                                                'ALIASNAME' => 'RHYS/TEMPFILE',  
  66.                                                'REFERENCE_INDEX' => '16777852'  
  67.                                              },  
  68.                                       '2' => {  
  69.                                                'DGNAME' => 'DATAGROUP1',  
  70.                                                'LEVEL' => 0,  
  71.                                                'ALIASNAME' => 'DUMMY',  
  72.                                                'REFERENCE_INDEX' => '16777534'  
  73.                                              },  
  74.                                       '17' => {  
  75.                                                 'DGNAME' => 'DATAGROUP1',  
  76.                                                 'LEVEL' => 2,  
  77.                                                 'ALIASNAME' => 'RHYS/ARCHIVELOG/2014_03_10',  
  78.                                                 'REFERENCE_INDEX' => '16778064'  
  79.                                               },  
  80.                                       '1' => {  
  81.                                                'DGNAME' => 'DATAGROUP1',  
  82.                                                'LEVEL' => 0,  
  83.                                                'ALIASNAME' => 'RHYS',  
  84.                                                'REFERENCE_INDEX' => '16777375'  
  85.                                              },  
  86.                                       '18' => {  
  87.                                                 'DGNAME' => 'DATAGROUP1',  
  88.                                                 'LEVEL' => 2,  
  89.                                                 'ALIASNAME' => 'RHYS/ARCHIVELOG/2014_03_11',  
  90.                                                 'REFERENCE_INDEX' => '16778117'  
  91.                                               },  
  92.                                       '0' => {  
  93.                                                'DGNAME' => 'DATAGROUP1',  
  94.                                                'LEVEL' => 0,  
  95.                                                'ALIASNAME' => 'ASM',  
  96.                                                'REFERENCE_INDEX' => '16777269'  
  97.                                              },  
  98.                                       '16' => {  
  99.                                                 'DGNAME' => 'DATAGROUP1',  
  100.                                                 'LEVEL' => 2,  
  101.                                                 'ALIASNAME' => 'RHYS/ARCHIVELOG/2014_03_06',  
  102.                                                 'REFERENCE_INDEX' => '16778753'  
  103.                                               },  
  104.                                       '13' => {  
  105.                                                 'DGNAME' => 'DATAGROUP1',  
  106.                                                 'LEVEL' => 2,  
  107.                                                 'ALIASNAME' => 'RHYS/ARCHIVELOG/2014_02_24',  
  108.                                                 'REFERENCE_INDEX' => '16778912'  
  109.                                               },  
  110.                                       '6' => {  
  111.                                                'DGNAME' => 'DATAGROUP1',  
  112.                                                'LEVEL' => 1,  
  113.                                                'ALIASNAME' => 'RHYS/ONLINELOG',  
  114.                                                'REFERENCE_INDEX' => '16777481'  
  115.                                              },  
  116.                                       '3' => {  
  117.                                                'DGNAME' => 'DATAGROUP1',  
  118.                                                'LEVEL' => 1,  
  119.                                                'ALIASNAME' => 'DUMMY/PARAMETERFILE',  
  120.                                                'REFERENCE_INDEX' => '16777587'  
  121.                                              },  
  122.                                       '9' => {  
  123.                                                'DGNAME' => 'DATAGROUP1',  
  124.                                                'LEVEL' => 1,  
  125.                                                'ALIASNAME' => 'RHYS/AUTOBACKUP',  
  126.                                                'REFERENCE_INDEX' => '16777799'  
  127.                                              },  
  128.                                       '12' => {  
  129.                                                 'DGNAME' => 'DATAGROUP1',  
  130.                                                 'LEVEL' => 2,  
  131.                                                 'ALIASNAME' => 'RHYS/ARCHIVELOG/2014_02_23',  
  132.                                                 'REFERENCE_INDEX' => '16778965'  
  133.                                               },  
  134.                                       '20' => {  
  135.                                                 'DGNAME' => 'DATAGROUP1',  
  136.                                                 'LEVEL' => 2,  
  137.                                                 'ALIASNAME' => 'RHYS/AUTOBACKUP/2014_01_13',  
  138.                                                 'REFERENCE_INDEX' => '16778435'  
  139.                                               },  
  140.                                       '15' => {  
  141.                                                 'DGNAME' => 'DATAGROUP1',  
  142.                                                 'LEVEL' => 2,  
  143.                                                 'ALIASNAME' => 'RHYS/ARCHIVELOG/2014_03_05',  
  144.                                                 'REFERENCE_INDEX' => '16778806'  
  145.                                               },  
  146.                                       '14' => {  
  147.                                                 'DGNAME' => 'DATAGROUP1',  
  148.                                                 'LEVEL' => 2,  
  149.                                                 'ALIASNAME' => 'RHYS/ARCHIVELOG/2014_02_25',  
  150.                                                 'REFERENCE_INDEX' => '16778859'  
  151.                                               },  
  152.                                       '8' => {  
  153.                                                'DGNAME' => 'DATAGROUP1',  
  154.                                                'LEVEL' => 1,  
  155.                                                'ALIASNAME' => 'RHYS/ARCHIVELOG',  
  156.                                                'REFERENCE_INDEX' => '16778700'  
  157.                                              },  
  158.                                       '4' => {  
  159.                                                'DGNAME' => 'DATAGROUP1',  
  160.                                                'LEVEL' => 1,  
  161.                                                'ALIASNAME' => 'RHYS/CONTROLFILE',  
  162.                                                'REFERENCE_INDEX' => '16777640'  
  163.                                              },  
  164.                                       '10' => {  
  165.                                                 'DGNAME' => 'DATAGROUP1',  
  166.                                                 'LEVEL' => 1,  
  167.                                                 'ALIASNAME' => 'RHYS/FLASHBACK',  
  168.                                                 'REFERENCE_INDEX' => '16778594'  
  169.                                               },  
  170.                                       '19' => {  
  171.                                                 'DGNAME' => 'DATAGROUP1',  
  172.                                                 'LEVEL' => 2,  
  173.                                                 'ALIASNAME' => 'RHYS/AUTOBACKUP/2013_12_12',  
  174.                                                 'REFERENCE_INDEX' => '16777905'  
  175.                                               },  
  176.                                       '5' => {  
  177.                                                'DGNAME' => 'DATAGROUP1',  
  178.                                                'LEVEL' => 1,  
  179.                                                'ALIASNAME' => 'RHYS/DATAFILE',  
  180.                                                'REFERENCE_INDEX' => '16777428'  
  181.                                              }  
  182.                                     },  
  183.                      'TEMPLATEINFO' => {  
  184.                                          '11' => {  
  185.                                                    'DGNAME' => 'DATAGROUP1',  
  186.                                                    'STRIPE' => 'COARSE',  
  187.                                                    'TEMPNAME' => 'AUTOBACKUP',  
  188.                                                    'REDUNDANCY' => 'MIRROR',  
  189.                                                    'SYSTEM' => 'Y'  
  190.                                                  },  
  191.                                          '7' => {  
  192.                                                   'DGNAME' => 'DATAGROUP1',  
  193.                                                   'STRIPE' => 'COARSE',  
  194.                                                   'TEMPNAME' => 'PARAMETERFILE',  
  195.                                                   'REDUNDANCY' => 'MIRROR',  
  196.                                                   'SYSTEM' => 'Y'  
  197.                                                 },  
  198.                                          '2' => {  
  199.                                                   'DGNAME' => 'DATAGROUP1',  
  200.                                                   'STRIPE' => 'COARSE',  
  201.                                                   'TEMPNAME' => 'ARCHIVELOG',  
  202.                                                   'REDUNDANCY' => 'MIRROR',  
  203.                                                   'SYSTEM' => 'Y'  
  204.                                                 },  
  205.                                          '1' => {  
  206.                                                   'DGNAME' => 'DATAGROUP1',  
  207.                                                   'STRIPE' => 'COARSE',  
  208.                                                   'TEMPNAME' => 'OCRFILE',  
  209.                                                   'REDUNDANCY' => 'MIRROR',  
  210.                                                   'SYSTEM' => 'Y'  
  211.                                                 },  
  212.                                          '0' => {  
  213.                                                   'DGNAME' => 'DATAGROUP1',  
  214.                                                   'STRIPE' => 'COARSE',  
  215.                                                   'TEMPNAME' => 'DATAFILE',  
  216.                                                   'REDUNDANCY' => 'MIRROR',  
  217.                                                   'SYSTEM' => 'Y'  
  218.                                                 },  
  219.                                          '16' => {  
  220.                                                    'DGNAME' => 'DATAGROUP1',  
  221.                                                    'STRIPE' => 'COARSE',  
  222.                                                    'TEMPNAME' => 'ONLINELOG',  
  223.                                                    'REDUNDANCY' => 'MIRROR',  
  224.                                                    'SYSTEM' => 'Y'  
  225.                                                  },  
  226.                                          '13' => {  
  227.                                                    'DGNAME' => 'DATAGROUP1',  
  228.                                                    'STRIPE' => 'COARSE',  
  229.                                                    'TEMPNAME' => 'CHANGETRACKING',  
  230.                                                    'REDUNDANCY' => 'MIRROR',  
  231.                                                    'SYSTEM' => 'Y'  
  232.                                                  },  
  233.                                          '6' => {  
  234.                                                   'DGNAME' => 'DATAGROUP1',  
  235.                                                   'STRIPE' => 'COARSE',  
  236.                                                   'TEMPNAME' => 'ASMPARAMETERFILE',  
  237.                                                   'REDUNDANCY' => 'MIRROR',  
  238.                                                   'SYSTEM' => 'Y'  
  239.                                                 },  
  240.                                          '3' => {  
  241.                                                   'DGNAME' => 'DATAGROUP1',  
  242.                                                   'STRIPE' => 'COARSE',  
  243.                                                   'TEMPNAME' => 'FLASHFILE',  
  244.                                                   'REDUNDANCY' => 'MIRROR',  
  245.                                                   'SYSTEM' => 'Y'  
  246.                                                 },  
  247.                                          '9' => {  
  248.                                                   'DGNAME' => 'DATAGROUP1',  
  249.                                                   'STRIPE' => 'COARSE',  
  250.                                                   'TEMPNAME' => 'BACKUPSET',  
  251.                                                   'REDUNDANCY' => 'MIRROR',  
  252.                                                   'SYSTEM' => 'Y'  
  253.                                                 },  
  254.                                          '12' => {  
  255.                                                    'DGNAME' => 'DATAGROUP1',  
  256.                                                    'STRIPE' => 'COARSE',  
  257.                                                    'TEMPNAME' => 'XTRANSPORT',  
  258.                                                    'REDUNDANCY' => 'MIRROR',  
  259.                                                    'SYSTEM' => 'Y'  
  260.                                                  },  
  261.                                          '15' => {  
  262.                                                    'DGNAME' => 'DATAGROUP1',  
  263.                                                    'STRIPE' => 'COARSE',  
  264.                                                    'TEMPNAME' => 'DATAGUARDCONFIG',  
  265.                                                    'REDUNDANCY' => 'MIRROR',  
  266.                                                    'SYSTEM' => 'Y'  
  267.                                                  },  
  268.                                          '14' => {  
  269.                                                    'DGNAME' => 'DATAGROUP1',  
  270.                                                    'STRIPE' => 'COARSE',  
  271.                                                    'TEMPNAME' => 'FLASHBACK',  
  272.                                                    'REDUNDANCY' => 'MIRROR',  
  273.                                                    'SYSTEM' => 'Y'  
  274.                                                  },  
  275.                                          '8' => {  
  276.                                                   'DGNAME' => 'DATAGROUP1',  
  277.                                                   'STRIPE' => 'COARSE',  
  278.                                                   'TEMPNAME' => 'TEMPFILE',  
  279.                                                   'REDUNDANCY' => 'MIRROR',  
  280.                                                   'SYSTEM' => 'Y'  
  281.                                                 },  
  282.                                          '4' => {  
  283.                                                   'DGNAME' => 'DATAGROUP1',  
  284.                                                   'STRIPE' => 'FINE',  
  285.                                                   'TEMPNAME' => 'CONTROLFILE',  
  286.                                                   'REDUNDANCY' => 'HIGH',  
  287.                                                   'SYSTEM' => 'Y'  
  288.                                                 },  
  289.                                          '10' => {  
  290.                                                    'DGNAME' => 'DATAGROUP1',  
  291.                                                    'STRIPE' => 'COARSE',  
  292.                                                    'TEMPNAME' => 'XTRANSPORT BACKUPSET',  
  293.                                                    'REDUNDANCY' => 'MIRROR',  
  294.                                                    'SYSTEM' => 'Y'  
  295.                                                  },  
  296.                                          '5' => {  
  297.                                                   'DGNAME' => 'DATAGROUP1',  
  298.                                                   'STRIPE' => 'COARSE',  
  299.                                                   'TEMPNAME' => 'DUMPSET',  
  300.                                                   'REDUNDANCY' => 'MIRROR',  
  301.                                                   'SYSTEM' => 'Y'  
  302.                                                 }  
  303.                                        }  
  304.                    }  
  305.                  );  
  306. -bash-4.1$    


删除磁盘组datagroup2 ,然后进行恢复:(此恢复仅仅是对应磁盘组来说的,而不是对应里面的数据,数据的恢复需要使用rman还原哦!——)

eg:

首先看一下md_restore帮助:

ASMCMD [+] > help md_restore
        md_restore

        This command restores a disk group metadata backup.

        md_restore backup_file [--silent][--full|--nodg|--newdg -o 'old_diskgroup:new_diskgroup [,...]'][-S sql_script_file] [-G 'diskgroup [,diskgroup...]']

        The options for the md_restore command are described below.

        backup_file             - Reads the metadata information from 
                                  backup_file.
        --silent                - Ignore errors. Normally, if md_restore 
                                  encounters an error, it will stop. 
                                  Specifying this flag ignores any errors.
        --full                  - Specifies to create a disk group and restore 
                                  metadata.
        --nodg                  - Specifies to restore metadata only.
        --newdg -o old_diskgroup:new_diskgroup  - Specifies to create a disk 
                                  group with a different name when restoring 
                                  metadata. The -o option is required 
                                  with --newdg.
        -S sql_script_file      - Write SQL commands to the specified SQL 
                                  script file instead of executing the commands.
        -G diskgroup            - Select the disk groups to be restored. 
                                  If no disk groups are defined, then all 
                                  disk groups will be restored.

        The first example restores the disk group DATA from the backup script 
        and creates a copy. The second example takes an existing disk group 
        DATA and restores its metadata. The third example restores disk group 
        DATA completely but the new disk group that is created is called DATA2.
        The fourth example restores from the backup file after applying the
        overrides defined in the override.sql script file

        ASMCMD [+] > md_restore --full -G data --silent /tmp/dgbackup20090714
        ASMCMD [+] > md_restore --nodg -G data --silent /tmp/dgbackup20090714
        ASMCMD [+] > md_restore --newdg -o 'data:data2' --silent /tmp/dgbackup20090714
        ASMCMD [+] > md_restore -S override.sql --silent /tmp/dgbackup20090714

 

开始恢复:

eg:

[sql] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. ASMCMD [+] > md_restore --full -G datagroup1 --silent /tmp/datagroup1_metadata_bak  
  2. Current Diskgroup metadata being restored: DATAGROUP1  
  3. ASMCMD-9352: CREATE DISKGROUP failed  
  4. ORA-15018: diskgroup cannot be created  
  5. ORA-15030: diskgroup name "DATAGROUP1" is in use by another diskgroup (DBD ERROR: OCIStmtExecute)  
  6. ASMCMD [+] > host;  


提示磁盘组不能在线,删掉在做

[sql] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. -bash-4.1$ sqlplus / as sysasm  
  2.   
  3. SQL*Plus: Release 11.2.0.4.0 Production on Tue Mar 11 23:03:29 2014  
  4.   
  5. Copyright (c) 1982, 2013, Oracle.  All rights reserved.  
  6.   
  7.   
  8. Connected to:  
  9. Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production  
  10. With the Automatic Storage Management option  
  11.   
  12. SQL> select group_number,name,state,type from v$asm_diskgroup order by 1;  
  13.   
  14. GROUP_NUMBER NAME                           STATE       TYPE  
  15. ------------ ------------------------------ ----------- ------  
  16.            1 DATAGROUP1                     MOUNTED     NORMAL  
  17.            2 DATAGROUP2                     MOUNTED     NORMAL  
  18.            3 DATAGROUP3                     MOUNTED     NORMAL  
  19.   
  20. SQL> drop diskgroup datagroup2 including contents;  
  21.   
  22. Diskgroup dropped.  
  23.   
  24. SQL> exit  


恢复datagroup2:

eg:

[sql] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. ASMCMD [+] > md_restore --full -G datagroup2 /tmp/dgback_rhys  
  2. Current Diskgroup metadata being restored: DATAGROUP2  
  3. Diskgroup DATAGROUP2 created!  
  4. System template FLASHBACK modified!  
  5. System template PARAMETERFILE modified!  
  6. System template ARCHIVELOG modified!  
  7. System template ONLINELOG modified!  
  8. System template DATAFILE modified!  
  9. System template BACKUPSET modified!  
  10. System template XTRANSPORT modified!  
  11. System template ASMPARAMETERFILE modified!  
  12. System template FLASHFILE modified!  
  13. System template OCRFILE modified!  
  14. System template CHANGETRACKING modified!  
  15. System template XTRANSPORT BACKUPSET modified!  
  16. System template AUTOBACKUP modified!  
  17. System template TEMPFILE modified!  
  18. System template CONTROLFILE modified!  
  19. System template DATAGUARDCONFIG modified!  
  20. System template DUMPSET modified!  
  21. ASMCMD [+] > lsdg  
  22. State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name  
  23. MOUNTED  NORMAL  N         512   4096  1048576     16376     9758             4094            2832              0             N  DATAGROUP1/  
  24. MOUNTED  NORMAL  N         512   4096  1048576      8188     8086                0            4043              0             N  DATAGROUP2/  
  25. MOUNTED  NORMAL  N         512   4096  1048576      4076     3966             1019            1473              0             N  DATAGROUP3/  
  26. ASMCMD [+] >   

可以将恢复过程生成一个脚本而不是执行恢复需要使用-S参数

eg:

[sql] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. ASMCMD [+] > md_restore --full -G datagroup2 -S res_datagroup2.sql /tmp/dgback_rhys  
  2. Current Diskgroup metadata being restored: DATAGROUP2  
  3. ASMCMD [+] > exit  
  4. -bash-4.1$ more res_datagroup2.sql   
  5. create diskgroup DATAGROUP2 NORMAL redundancy failgroup FG2 disk '/dev/oracleasm/disks/ASMDISK6' name DATAGROUP2_0002 size 4094M failgroup DATAGROUP2_0001 disk '/dev/o  
  6. racleasm/disks/ASMDISK5' name DATAGROUP2_0001 size 4094M ;  
  7. alter diskgroup /*ASMCMD AMBR*/DATAGROUP2 alter template "FLASHBACK" attributes (MIRROR COARSE);  
  8. alter diskgroup /*ASMCMD AMBR*/DATAGROUP2 alter template "PARAMETERFILE" attributes (MIRROR COARSE);  
  9. alter diskgroup /*ASMCMD AMBR*/DATAGROUP2 alter template "ARCHIVELOG" attributes (MIRROR COARSE);  
  10. alter diskgroup /*ASMCMD AMBR*/DATAGROUP2 alter template "ONLINELOG" attributes (MIRROR COARSE);  
  11. alter diskgroup /*ASMCMD AMBR*/DATAGROUP2 alter template "DATAFILE" attributes (MIRROR COARSE);  
  12. alter diskgroup /*ASMCMD AMBR*/DATAGROUP2 alter template "BACKUPSET" attributes (MIRROR COARSE);  
  13. alter diskgroup /*ASMCMD AMBR*/DATAGROUP2 alter template "XTRANSPORT" attributes (MIRROR COARSE);  
  14. alter diskgroup /*ASMCMD AMBR*/DATAGROUP2 alter template "ASMPARAMETERFILE" attributes (MIRROR COARSE);  
  15. alter diskgroup /*ASMCMD AMBR*/DATAGROUP2 alter template "FLASHFILE" attributes (MIRROR COARSE);  
  16. alter diskgroup /*ASMCMD AMBR*/DATAGROUP2 alter template "OCRFILE" attributes (MIRROR COARSE);  
  17. alter diskgroup /*ASMCMD AMBR*/DATAGROUP2 alter template "CHANGETRACKING" attributes (MIRROR COARSE);  
  18. alter diskgroup /*ASMCMD AMBR*/DATAGROUP2 alter template "XTRANSPORT BACKUPSET" attributes (MIRROR COARSE);  
  19. alter diskgroup /*ASMCMD AMBR*/DATAGROUP2 alter template "AUTOBACKUP" attributes (MIRROR COARSE);  
  20. alter diskgroup /*ASMCMD AMBR*/DATAGROUP2 alter template "TEMPFILE" attributes (MIRROR COARSE);  
  21. alter diskgroup /*ASMCMD AMBR*/DATAGROUP2 alter template "CONTROLFILE" attributes (HIGH FINE);  
  22. alter diskgroup /*ASMCMD AMBR*/DATAGROUP2 alter template "DATAGUARDCONFIG" attributes (MIRROR COARSE);  
  23. alter diskgroup /*ASMCMD AMBR*/DATAGROUP2 alter template "DUMPSET" attributes (MIRROR COARSE);  


可见元数据的恢复就是一些create 命令啊,alter命令啊。

that‘s all!

0 0