oracle 11g md_backup md_restor命令使用方法
1 實驗目的
由於oracle 10g asm儲存方式是推出的第一個版本,很多功能沒完善,比如就沒有asm磁碟資訊後設資料有效的備份方式,如果誤操作導致asm磁碟頭資訊丟失,而很多人對asm磁碟頭資訊不熟悉,不得不重新建立asm磁碟組,通過備份的方式恢復資料,如果無備份的話,則導致資料丟失。雖然我已經掌握了oracle 10g asm磁碟頭資訊損壞後能夠及時恢復的技術,但操作起來還是比較麻煩。
oracle 11g已經對asmcmd工具增加了md_backup,md_restore兩個命令可以很好的備份和恢復asm磁碟組後設資料,使的這一操作變的非常簡單,下面實驗就是來學習md_backup和md_restore的使用方法。
Oracle 11g kfed、amdu檢視磁碟頭資訊命令可以直接使用,不需要再編譯。
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磁碟組(存放ocr和vote盤)
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 11g asm md_backup md_restoreASMREST
- oracle 11gR2 asmcmd 工具增加md_backup和md_restore命令OracleASMREST
- oracle 11g adrci 工具使用方法Oracle
- Oracle 11g UTL_FILE 包的使用方法Oracle
- oracle 11g 常用命令Oracle
- oracle 11g DBMS_SQLTUNE 包的使用方法介紹OracleSQL
- oracle 11g rac 叢集操作命令Oracle
- Oracle 11g RAC 常用命令Oracle
- chown 命令使用方法
- scp命令使用方法
- git命令使用方法Git
- 管理oracle 11g RAC 常用命令Oracle
- Analyze 命令的使用方法
- oracle 11g 中 (oracle 10g) crsctl 的 替換命令Oracle 10g
- BASH命令使用方法詳解
- hp-unix 命令使用方法
- find 的命令的使用方法。
- ORACLE 11G EM 配置命令及問題處理Oracle
- Oracle JOB 使用方法Oracle
- linux dig 命令使用方法Linux
- Ldd命令介紹及使用方法
- unix下 nohup 命令使用方法(轉)
- Flashback [Oracle SQL] 使用方法OracleSQL
- mysql & oracle savepoint 使用方法MySqlOracle
- (網路資料)管理oracle 11g RAC 常用命令Oracle
- Oracle 11g RAC crs_stat 命令結果完整顯示Oracle
- ORACLE 11G RAC--叢集應用層命令掃盲Oracle
- VIM 搜尋命令使用方法和技巧
- tar.gz壓縮命令使用方法
- emc powerpath的powermt命令使用方法
- Oracle with使用方法以及遞迴Oracle遞迴
- Oracle中“HINT”的使用方法Oracle
- Oracle中陣列使用方法Oracle陣列
- spotlight on oracle的使用方法Oracle
- Oracle中sequence的使用方法Oracle
- 【ASM】ASMCMD 之md_backup,md_restore介紹ASMREST
- Oracle 11g 使用exp命令匯出表不全的解決方案Oracle
- ORACLE 11G RAC--維護叢集的OCR命令介紹Oracle