由於使用的11.2.0.1版本ASM上Bug較多導致ASM DISKGROUP磁碟組無法載入MOUNT,通過多方修復ASM Disk Header無果。此場景可以使用PRM-DUL的ASM Files Clone檔案克隆功能從受損的ASM Diskgroup中拷貝出資料庫資料檔案。
工具/原料
Oracle Database 9i/10g/11g/12c
PRM-DUL ORACLE恢復工具
方法/步驟
開啟PRM-DUL ORACLE恢復工具主介面,選單欄Tools選擇ASM File(s) Clone:
進入ASM Disks介面,點選SELECT…按鈕加入仍可用的ASM Disks,如/dev/asm-disk5(linux);確保加入所有可用LUN後,點選ASM analyze按鈕
ASM Files Clone將分析指定的ASM Disk的磁碟頭,以便找出對應Disk group磁碟組中的檔案,以及這些檔案的分佈位置(File Extent Map); 這些資訊均將記錄到Derby資料庫中以便今後使用; 可以說PRM-DUL將ASM的所有Metadata元資料均收集、分析、並存儲起來,並通過各種形式來完善PRM-DUL的基本功能,並以圖形化地方式展現給使用者。
ASM Analyze分析完成後,PRM-DUL將列出找到的ASM上檔案的列表,使用者可以勾選那些檔案需要被克隆,並指定檔案克隆的目標資料夾。
之後點選ASM Clone按鈕,進入檔案克隆階段。
檔案克隆階段中,將列出ASM File的克隆進度,克隆完成後點選OK。
克隆階段的進度日誌輸出如下:
Preparing selected files…Cloning +DATA2/ASMDB1/DATAFILE/TBS2.256.839732369:
……………………..1024MB
………………………………..2048MB
………………………………..3072MB
………………………………….4096MB
………………………………..5120MB
………………………………….6144MB
……………………………….7168MB
…………………………………8192MB
…………………………………9216MB
…………………………………10240MB
…………………………………11264MB
…………………………………..12288MB
…………………………………….13312MB
…………………………….14336MB
……………………………………..15360MB
……………………………….16384MB
…………………………………17408MB
…………………………………18432MB
…………………………………………………………………………………………….19456MB
……………………………………
Cloned size for this file (in byte): 21475885056
Cloned successfully!
Cloning +DATA2/ASMDB1/ARCHIVELOG/2014_02_17/thread_1_seq_47.257.839732751:
……
Cloned size for this file (in byte): 29360128
Cloned successfully!
Cloning +DATA2/ASMDB1/ARCHIVELOG/2014_02_17/thread_1_seq_48.258.839732751:
……
Cloned size for this file (in byte): 1048576
Cloned successfully!
All selected files were cloned done.
可以通過dbv或者rman validate命令來驗證克隆出來的資料檔案,例如:
rman target /
RMAN> catalog datafilecopy ‘/home/oracle/asm_clone/TBS2.256.839732369.dbf’;
cataloged datafile copy
datafile copy file name=/home/oracle/asm_clone/TBS2.256.839732369.dbf RECID=2 STAMP=839750901
RMAN> validate datafilecopy ‘/home/oracle/asm_clone/TBS2.256.839732369.dbf’;
Starting validate at 17-FEB-14
using channel ORA_DISK_1
channel ORA_DISK_1: starting validation of datafile
channel ORA_DISK_1: including datafile copy of datafile 00016 in backup set
input file name=/home/oracle/asm_clone/TBS2.256.839732369.dbf
channel ORA_DISK_1: validation complete, elapsed time: 00:03:35
List of Datafile Copies
=======================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
—- —— ————– ———— ————— ———-
16 OK 0 2621313 2621440 1945051
File Name: /home/oracle/asm_clone/TBS2.256.839732369.dbf
Block Type Blocks Failing Blocks Processed
———- ————– —————-
Data 0 0
Index 0 0
Other 0 127
Finished validate at 17-FEB-14
對於使用ASMLIB的ASM環境要如何使用PRM-DUL呢?
其實也很簡單,asmlib相關的ASM DISK在OS作業系統上會以ll /dev/oracleasm/disks 的形式存放,例如:直接將/dev/oracleasm/disks下的檔案加入到PRM-DUL ASM DISK中即可
$ll /dev/oracleasm/diskstotal 0brw-rw—- 1 oracle dba 8, 97 Apr 28 15:20 VOL001
brw-rw—- 1 oracle dba 8, 81 Apr 28 15:20 VOL002
brw-rw—- 1 oracle dba 8, 65 Apr 28 15:20 VOL003
brw-rw—- 1 oracle dba 8, 49 Apr 28 15:20 VOL004
brw-rw—- 1 oracle dba 8, 33 Apr 28 15:20 VOL005
brw-rw—- 1 oracle dba 8, 17 Apr 28 15:20 VOL006
brw-rw—- 1 oracle dba 8, 129 Apr 28 15:20 VOL007
brw-rw—- 1 oracle dba 8, 113 Apr 28 15:20 VOL008
直接將/dev/oracleasm/disks下的檔案加入到PRM-DUL ASM DISK中即可。