I am at customer site in China, where customer has lots of data corruption due to some storage problem. Its
mission critical database and they don’t have backups as well. Product support has ruled out all other options including
opening data forcefully. I am trying to use DUL to salvage as much as we can but getting following error:
[oracle@orcl ]$ ./dul
Data UnLoader: 10.2.0.5.21 Internal
Only on
Wed Mar 27 16:21:48 2013
with 64bit
io functions
Copyright (c) 1994 2013 Bernard van Duijnen All rights reserved.
Strictly Oracle Internal Use Only
DUL: Warning: Recreating file “dul.log”
Disk group DATA, dul group_cid 0
Discovered disk /dev/sdb1 as diskgroup DATA, disk number 2 size 511984 Mb File1 starts at 2, dul_disk_cid 0
Discovered disk /dev/sdd1 as diskgroup DATA, disk number 1 size 511984 Mb File1 starts at 2, dul_disk_cid 1
DUL: Warning: Dictionary cache DC_ASM_EXTENTS is empty
DUL: Error: not all mirrors extents found
DUL: Error: not all mirrors extents found
Segmentation fault
The asm datafiles need to be the form with the numbers, as it is the name of the datagroup and the first number that
DUL uses to find the file info in the metadata.
So a name like this is fine: +DATA/e1oradb/datafile/system.256.747422389
But a name like this misses the essential numbers : +DATA/proddtat01.dbf
There are two things I would like you to try:
1: set init.dul: trace_flags = 4
(and send me the dul.log, not the screen output, the dul.log contains some extra info)
This will allow me to better understand the issue.
2: a completely different way to work is to use a block index. This works especially good if there is just 1 database in
the diskgroup. The instructions are in the wiki:
Leave a Reply