oracle 11g md_backup md_restor命令使用方法

paulyibinyi發表於2010-07-10

1          實驗目的

由於oracle 10g asm儲存方式是推出的第一個版本,很多功能沒完善,比如就沒有asm磁碟資訊後設資料有效的備份方式,如果誤操作導致asm磁碟頭資訊丟失,而很多人對asm磁碟頭資訊不熟悉,不得不重新建立asm磁碟組,通過備份的方式恢復資料,如果無備份的話,則導致資料丟失。雖然我已經掌握了oracle 10g asm磁碟頭資訊損壞後能夠及時恢復的技術,但操作起來還是比較麻煩。

 

oracle 11g已經對asmcmd工具增加了md_backup,md_restore兩個命令可以很好的備份和恢復asm磁碟組後設資料,使的這一操作變的非常簡單,下面實驗就是來學習md_backupmd_restore的使用方法。

 

Oracle 11g kfedamdu檢視磁碟頭資訊命令可以直接使用,不需要再編譯。

2          實驗環境

 

資料庫版本

環境

資料庫名

例項名

IP地址

作業系統和

主機名

 

 

 

 

 

Oracle11.2.0.1

RAC

racdb

racdb1

192.168.1.227

Linux as 5.3+rac1

Racdb2

192.168.1.228

linux as 5.3+rac2

  以上環境針對於磁碟組內磁碟頭資訊丟失恢復

 

  

3          實驗步驟  

3.1      md_backup 備份磁碟組後設資料

3.1.1 檢視磁碟組下的磁碟資訊

[grid@rac1 ~]$ sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.1.0 Production on Thu Jul 8 15:24:19 2010

 

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

 

 

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Real Application Clusters and Automatic Storage Management options

 

SQL> select name,state from v$asm_diskgroup;

 

NAME                           STATE

------------------------------ -----------

CRS                             MOUNTED  --CRS磁碟組(存放ocrvote)

TESTDG                         MOUNTED

SQL> select name,path from v$asm_disk;

 

NAME                           PATH

TESTDG_0000                    /dev/raw/raw1

 

3.1.2 kfed讀取磁碟頭資訊

比如讀取磁碟組TESTDG/dev/raw/raw1磁碟頭資訊

[grid@rac1 amdu_2010_07_08_15_15_18]$ kfed read /dev/raw/raw1 > /home/grid/raw1bak.txt

[grid@rac1 amdu_2010_07_08_15_15_18]$ more /home/grid/raw1bak.txt

kfbh.endian:                          1 ; 0x000: 0x01

kfbh.hard:                          130 ; 0x001: 0x82

kfbh.type:                            1 ; 0x002: KFBTYP_DISKHEAD

kfbh.datfmt:                          1 ; 0x003: 0x01

kfbh.block.blk:                       0 ; 0x004: T=0 NUMB=0x0

kfbh.block.obj:              2147483648 ; 0x008: TYPE=0x8 NUMB=0x0

kfbh.check:                   534688621 ; 0x00c: 0x1fdeb36d

kfbh.fcn.base:                        0 ; 0x010: 0x00000000

kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000

kfbh.spare1:                          0 ; 0x018: 0x00000000

kfbh.spare2:                          0 ; 0x01c: 0x00000000

kfdhdb.driver.provstr:         ORCLDISK ; 0x000: length=8

kfdhdb.driver.reserved[0]:            0 ; 0x008: 0x00000000

kfdhdb.driver.reserved[1]:            0 ; 0x00c: 0x00000000

kfdhdb.driver.reserved[2]:            0 ; 0x010: 0x00000000

kfdhdb.driver.reserved[3]:            0 ; 0x014: 0x00000000

kfdhdb.driver.reserved[4]:            0 ; 0x018: 0x00000000

kfdhdb.driver.reserved[5]:            0 ; 0x01c: 0x00000000

kfdhdb.compat:                186646528 ; 0x020: 0x0b200000

kfdhdb.dsknum:                        0 ; 0x024: 0x0000

kfdhdb.grptyp:                        1 ; 0x026: KFDGTP_EXTERNAL

kfdhdb.hdrsts:                        3 ; 0x027: KFDHDR_MEMBER

kfdhdb.dskname:             TESTDG_0000 ; 0x028: length=11

kfdhdb.grpname:                  TESTDG ; 0x048: length=6

kfdhdb.fgname:              TESTDG_0000 ; 0x068: length=11

kfdhdb.capname:                         ; 0x088: length=0

kfdhdb.crestmp.hi:             32939275 ; 0x0a8: HOUR=0xb DAYS=0x8 MNTH=0x7 YEAR=0x7da

kfdhdb.crestmp.lo:           3713031168 ; 0x0ac: USEC=0x0 MSEC=0x17 SECS=0x15 MINS=0x37

kfdhdb.mntstmp.hi:             32939275 ; 0x0b0: HOUR=0xb DAYS=0x8 MNTH=0x7 YEAR=0x7da

kfdhdb.mntstmp.lo:           3725327360 ; 0x0b4: USEC=0x0 MSEC=0x2ff SECS=0x20 MINS=0x37

kfdhdb.secsize:                     512 ; 0x0b8: 0x0200

kfdhdb.blksize:                    4096 ; 0x0ba: 0x1000

kfdhdb.ausize:                  4194304 ; 0x0bc: 0x00400000

kfdhdb.mfact:                    454272 ; 0x0c0: 0x0006ee80

kfdhdb.dsksize:                   12799 ; 0x0c4: 0x000031ff

kfdhdb.pmcnt:                         2 ; 0x0c8: 0x00000002

kfdhdb.fstlocn:                       1 ; 0x0cc: 0x00000001

kfdhdb.altlocn:                       2 ; 0x0d0: 0x00000002

kfdhdb.f1b1locn:                      2 ; 0x0d4: 0x00000002

kfdhdb.redomirrors[0]:                0 ; 0x0d8: 0x0000

kfdhdb.redomirrors[1]:                0 ; 0x0da: 0x0000

kfdhdb.redomirrors[2]:                0 ; 0x0dc: 0x0000

kfdhdb.redomirrors[3]:                0 ; 0x0de: 0x0000

kfdhdb.dbcompat:              168820736 ; 0x0e0: 0x0a100000

kfdhdb.grpstmp.hi:             32939275 ; 0x0e4: HOUR=0xb DAYS=0x8 MNTH=0x7 YEAR=0x7da

kfdhdb.grpstmp.lo:           3712403456 ; 0x0e8: USEC=0x0 MSEC=0x1b2 SECS=0x14 MINS=0x37

kfdhdb.vfstart:                       0 ; 0x0ec: 0x00000000

kfdhdb.vfend:                         0 ; 0x0f0: 0x00000000

kfdhdb.spfile:                        0 ; 0x0f4: 0x00000000

kfdhdb.spfflg:                        0 ; 0x0f8: 0x00000000

kfdhdb.ub4spare[0]:                   0 ; 0x0fc: 0x00000000

kfdhdb.ub4spare[1]:                   0 ; 0x100: 0x00000000

kfdhdb.ub4spare[2]:                   0 ; 0x104: 0x00000000

kfdhdb.ub4spare[3]:                   0 ; 0x108: 0x00000000

kfdhdb.ub4spare[4]:                   0 ; 0x10c: 0x00000000

kfdhdb.ub4spare[5]:                   0 ; 0x110: 0x00000000

kfdhdb.ub4spare[6]:                   0 ; 0x114: 0x00000000

kfdhdb.ub4spare[7]:                   0 ; 0x118: 0x00000000

kfdhdb.ub4spare[8]:                   0 ; 0x11c: 0x00000000

kfdhdb.ub4spare[9]:                   0 ; 0x120: 0x00000000

kfdhdb.ub4spare[10]:                  0 ; 0x124: 0x00000000

kfdhdb.ub4spare[11]:                  0 ; 0x128: 0x00000000

kfdhdb.ub4spare[12]:                  0 ; 0x12c: 0x00000000

kfdhdb.ub4spare[13]:                  0 ; 0x130: 0x00000000

kfdhdb.ub4spare[14]:                  0 ; 0x134: 0x00000000

kfdhdb.ub4spare[15]:                  0 ; 0x138: 0x00000000

kfdhdb.ub4spare[16]:                  0 ; 0x13c: 0x00000000

kfdhdb.ub4spare[17]:                  0 ; 0x140: 0x00000000

kfdhdb.ub4spare[18]:                  0 ; 0x144: 0x00000000

kfdhdb.ub4spare[19]:                  0 ; 0x148: 0x00000000

kfdhdb.ub4spare[20]:                  0 ; 0x14c: 0x00000000

kfdhdb.ub4spare[21]:                  0 ; 0x150: 0x00000000

kfdhdb.ub4spare[22]:                  0 ; 0x154: 0x00000000

kfdhdb.ub4spare[23]:                  0 ; 0x158: 0x00000000

kfdhdb.ub4spare[24]:                  0 ; 0x15c: 0x00000000

kfdhdb.ub4spare[25]:                  0 ; 0x160: 0x00000000

kfdhdb.ub4spare[26]:                  0 ; 0x164: 0x00000000

kfdhdb.ub4spare[27]:                  0 ; 0x168: 0x00000000

kfdhdb.ub4spare[28]:                  0 ; 0x16c: 0x00000000

kfdhdb.ub4spare[29]:                  0 ; 0x170: 0x00000000

kfdhdb.ub4spare[30]:                  0 ; 0x174: 0x00000000

kfdhdb.ub4spare[31]:                  0 ; 0x178: 0x00000000

kfdhdb.ub4spare[32]:                  0 ; 0x17c: 0x00000000

kfdhdb.ub4spare[33]:                  0 ; 0x180: 0x00000000

kfdhdb.ub4spare[34]:                  0 ; 0x184: 0x00000000

kfdhdb.ub4spare[35]:                  0 ; 0x188: 0x00000000

kfdhdb.ub4spare[36]:                  0 ; 0x18c: 0x00000000

kfdhdb.ub4spare[37]:                  0 ; 0x190: 0x00000000

kfdhdb.ub4spare[38]:                  0 ; 0x194: 0x00000000

kfdhdb.ub4spare[39]:                  0 ; 0x198: 0x00000000

kfdhdb.ub4spare[40]:                  0 ; 0x19c: 0x00000000

kfdhdb.ub4spare[41]:                  0 ; 0x1a0: 0x00000000

kfdhdb.ub4spare[42]:                  0 ; 0x1a4: 0x00000000

kfdhdb.ub4spare[43]:                  0 ; 0x1a8: 0x00000000

kfdhdb.ub4spare[44]:                  0 ; 0x1ac: 0x00000000

kfdhdb.ub4spare[45]:                  0 ; 0x1b0: 0x00000000

kfdhdb.ub4spare[46]:                  0 ; 0x1b4: 0x00000000

kfdhdb.ub4spare[47]:                  0 ; 0x1b8: 0x00000000

kfdhdb.ub4spare[48]:                  0 ; 0x1bc: 0x00000000

kfdhdb.ub4spare[49]:                  0 ; 0x1c0: 0x00000000

kfdhdb.ub4spare[50]:                  0 ; 0x1c4: 0x00000000

kfdhdb.ub4spare[51]:                  0 ; 0x1c8: 0x00000000

kfdhdb.ub4spare[52]:                  0 ; 0x1cc: 0x00000000

kfdhdb.ub4spare[53]:                  0 ; 0x1d0: 0x00000000

kfdhdb.acdb.aba.seq:                  0 ; 0x1d4: 0x00000000

kfdhdb.acdb.aba.blk:                  0 ; 0x1d8: 0x00000000

kfdhdb.acdb.ents:                     0 ; 0x1dc: 0x0000

kfdhdb.acdb.ub2spare:                 0 ; 0x1de: 0x0000

 從上面讀出的內容,我們可以獲取以下資訊:

  dsknum 磁碟號

  grptyp 磁碟所屬型別EXTERNAL REDUNDANCY,主要有以下三種型別

  • NORMAL REDUNDANCY - Two-way mirroring, requiring two failure groups.
  • HIGH REDUNDANCY - Three-way mirroring, requiring three failure groups.
  • EXTERNAL REDUNDANCY - No mirroring for disks that are already protected using hardware mirroring or RAID.

  ddrsts 磁碟頭狀態

  dskname asm中磁碟名

  grpname  磁碟組名

  fgname   failure group name

  crestmp.hi asm磁碟組建立時間

  mntstmp.hi asm磁碟組mount時間

blksize  磁碟頭塊大小 4096

ausize  條帶化大小 4M

dsksize 磁碟大小 
f1b1locn  File Directory blk 1 AU num   
         Beginging for file directory

 

3.2      Md_backup備份

[grid@rac1 amdu_2010_07_08_15_15_18]$  asmcmd md_backup /home/grid/asmbk -G 'TESTDG'

Disk group metadata to be backed up: TESTDG

Current alias directory path: rac-cluster/OCRFILE

Current alias directory path: rac-cluster

Current alias directory path: rac-cluster/ASMPARAMETERFILE

 

 

3.3      模擬磁碟頭資訊丟失

[grid@rac1 ~]$ dd if=/dev/zero f=/dev/raw/raw1 bs=4096 count=1

1+0 records in

1+0 records out

4096 bytes (4.1 kB) copied, 0.016114 seconds, 254 kB/s

[grid@rac1 ~]$ kfed read /dev/raw/raw1

kfbh.endian:                          0 ; 0x000: 0x00

kfbh.hard:                            0 ; 0x001: 0x00

kfbh.type:                            0 ; 0x002: KFBTYP_INVALID

kfbh.datfmt:                          0 ; 0x003: 0x00

kfbh.block.blk:                       0 ; 0x004: T=0 NUMB=0x0

kfbh.block.obj:                       0 ; 0x008: TYPE=0x0 NUMB=0x0

kfbh.check:                           0 ; 0x00c: 0x00000000

kfbh.fcn.base:                        0 ; 0x010: 0x00000000

kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000

kfbh.spare1:                          0 ; 0x018: 0x00000000

kfbh.spare2:                          0 ; 0x01c: 0x00000000

ERROR!!!, failed to get the oracore error message

 

 

這時磁碟組testdg/dev/raw/raw1磁碟頭資訊丟失,不能正常讀取。

 

 

SQL>  alter diskgroup testdg dismount;

 

Diskgroup altered.

 

SQL>  alter diskgroup testdg mount;

 alter diskgroup testdg mount

*

ERROR at line 1:

ORA-15032: not all alterations performed

ORA-15017: diskgroup "TESTDG" cannot be mounted

ORA-15063: ASM discovered an insufficient number of disks for diskgroup

"TESTDG"

 

 可以看到testdg不能正常提供對外訪問。

3.4      md_restore命令恢復磁碟組後設資料

3.4.1 所有節點把testdg 服務offline

Srvctl stop diskgroup –g testdg

 

否則恢復時會報ORA-15030錯誤

[grid@rac1 ~]$ asmcmd md_restore /home/grid/asmbk.txt --silent -G 'testdg'

Current Diskgroup metadata being restored: TESTDG

ASMCMD-09352: CREATE DISKGROUP failed

ORA-15018: diskgroup cannot be created

ORA-15030: diskgroup name "TESTDG" is in use by another diskgroup (DBD ERROR: OCIStmtExecute)

 

3.4.2 恢復磁碟組後設資料庫

      [grid@rac1 ~]$ asmcmd md_restore /home/grid/asmbk --silent -G 'testdg'

Current Diskgroup metadata being restored: TESTDG

Diskgroup TESTDG created!

System template ONLINELOG modified!

System template AUTOBACKUP modified!

System template ASMPARAMETERFILE modified!

System template OCRFILE modified!

System template ASM_STALE modified!

System template OCRBACKUP modified!

System template PARAMETERFILE modified!

System template ASMPARAMETERBAKFILE modified!

System template FLASHFILE modified!

System template XTRANSPORT modified!

System template DATAGUARDCONFIG modified!

System template TEMPFILE modified!

System template ARCHIVELOG modified!

System template CONTROLFILE modified!

System template DUMPSET modified!

System template BACKUPSET modified!

System template FLASHBACK modified!

System template DATAFILE modified!

System template CHANGETRACKING modified!

[grid@rac1 ~]$

 

3.4.3 所有節點包testdg服務online

     

[grid@rac1 ~]$ srvctl start diskgroup -g testdg

[grid@rac1 ~]$ sqlplus "/as sysasm"

 

SQL*Plus: Release 11.2.0.1.0 Production on Thu Jul 8 16:43:53 2010

 

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

 

 

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Real Application Clusters and Automatic Storage Management options

 

SQL> select name,state from v$asm_diskgroup;

 

NAME                           STATE

------------------------------ -----------

CRS                             MOUNTED

TESTDG                         MOUNTED

 

 

   可以看到磁碟組testdg恢復成功。

 

     

3.5      總結

    Oracle 11g asm 磁碟組內後設資料備份與恢復非常簡單,只需要我們安裝完成後做好備份工作即可。

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7199859/viewspace-667730/,如需轉載,請註明出處,否則將追究法律責任。

相關文章