7 x 24 在线支持!
ORACLE ASM DISK HEADER ERASED – NEED TO EXTRACT DATA
I have a customer run dd command on one of his ASM disk.
As no database backup exists, customer would need help to extract data from diskgroup.
He tried:
amdu -diskstring ‘/dev/oracleasm/disks/*’ -ausize 1048576 -blksize 4096
-baddisks DGDATA01 -extract ‘DGDATA01.xxxx’
but he got:
************************ EXTRACTING FILE DGDATA01.404
************************
AMDU-00208: File directory block not found. Cannot extract file DGDATA01.404
** FILE DIRECTORY BLOCK NOT FOUND. CANNOT EXTRACT FILE DGDATA01.404 **
******************************* END OF REPORT
********************************
DIAGNOSTIC ANALYSIS:
——————–
—————————– DISK REPORT N0001
——————————
Disk Path: /dev/oracleasm/disks/DGDATA01
Unique Disk ID:
Disk Label:
Physical Sector Size: 512 bytes
Disk Size: 2097146 megabytes
Group Name: DGDATA01
Disk Name:
Failure Group Name:
Disk Number: 0
Header Status: 0
Disk Creation Time: 0000/00/00 00:00:00.000000
Last Mount Time: 0000/00/00 00:00:00.000000
Compatibility Version: 0x00000000(0)
Disk Sector Size: 512 bytes
Disk size in AUs: 2097146 AUs
Group Redundancy: 2
Metadata Block Size: 4096 bytes
AU Size: 1048576 bytes
Stride: 0 AUs
Group Creation Time: 0000/00/00 00:00:00.000000
File 1 Block 1 location: AU 0
OCR Present: NO
** NOT A VALID ASM DISK HEADER. BAD VALUE IN FIELD blksize_kfdhdb **
Bug 5061821 OS UTILITIES CAN DESTROY ASM DISK HEADER
fixed 11.2.0.1, 11.1.0.7, 10.2.0.5 and higher.
From that one learns.
Lately there is an extra copy of the asm disk header.
This copy can be used to fix the real header using kfed with the repair
option.
This copy is stored as the last block of the PST. That means it is in
the last block of allocation unit 1 (the original is block 0 of au 0).
The default sizes for an allocation unit is 1M and for the
meta data block size is 4K, meaning 256 blocks in each au.
So typically the copy is in au 1 block 254. (ASM counts from zero, the
original is in allocation unit 0 block 0)
Provided you established that the only problem is with the lost/corrupt
disk header,
the fix is as simple as:
$ kfed repair <disk name>
.
If the AU size is non-standard, the above will fail with something l
ike:KFED-00320: Invalid block num1 = [3], num2 = [1], error = [type_kfbh]
But that is expected and no harm is done.
All you need to do is specify the correct AU size.
E.g. for 4MB AU the command would be:$ kfed repair <disk name> ausz=4194304
If you cannot recover the data by yourself, ask Parnassusdata, the professional ORACLE database recovery team for help.
Parnassusdata Software Database Recovery Team
Service Hotline: +86 13764045638
E-mail: service@parnassusdata.com