You are on page 1of 3

Problem

How to repair a disk's private region when vxdisk list shows "online altused"

Solution
There have been several instances when, after a loss of power to disks or after a normal shutdown, once the system comes back up diskgroups cannot be accessed because private regions are corrupt. However, the private regions may not be corrupted, they may only have sequence numbers out of sync. The following procedures may help on most systems with this problem. For a more detailed look into this problem see IR #25215. 1) From a terminal window type the following; # vxdisk list Below is a partial listing from vxdisk list. DEVICE c0t10d0s2 c2t4d1s2 c2t4d2s2 c2t4d3s2 c2t4d4s2 c2t4d5s2 c3t5d0s2 TYPE DISK GROUP STATUS sliced disk01 rootdg online sliced online altused sliced offline sliced online altused sliced offline sliced online altused sliced online altused

2) Determine which slice is being used for the private region by doing the following: # prtvtoc /dev/rdsk/cXtXdXs2 (Use the vxdisk list to determine which bad disk to look at, ie: prtvtoc /dev/rdsk/c2t4d1s2). The result will be output similar to the following: * /dev/rdsk/c2t4d1s2 partition map * * Dimensions: * 512 bytes/sector * 258 sectors/track * 5 tracks/cylinder * 1290 sectors/cylinder

* 6907 cylinders * 6905 accessible cylinders * * Flags: * 1: unmountable * 10: read-only * * First Sector Last * Partition Tag Flags Sector Count Sector Mount Directory 2 5 01 0 8907450 8907449 3 15 01 0 1290 1289 4 14 01 1290 8906160 8907449 Find the line for Tag 15 (this is the tag for the private region) and note the Partition that corresponds to it. Record this partition number for this disk for use in future steps. 3) Repeat step 2 for each corrupted disk. 4) dd each disk's private region to a file (please name the file accordingly so that it can easily be referred to) by performing the following; In this example c1t15d0s2 will be used as the example disk and c1t15d0s3_privreg as the filename. They will need to be replaced with the disk and correct private region slice that are to be repaired.The filename can be anything that is easy to remember # dd if=/dev/rdsk/c1t15d0s3 of=/tmp/c1t15d0s3_privreg 5) Run the following script on the file created in step 4. (If the script is saved as fixaltused.sh, then the script would be run on the file shown in step 4 by entering - fixaltused.sh c1t15d0s3_privreg) #! /bin/ksh # This is a script to repair a private region which has been corrupted, and is # showing up as "online altused" in the vxdisk list, but barfs in a vxprivutil # list type operation. $1 should be the path to the dd image of the private # region. cp $1 $1.good tid=`od -c $1 | grep 2020 | awk ' { print $5 } '` echo "$tid" | dd of=$1.good oseek=127507 bs=1 count=1 dd if=$1 iseek=127508 bs=1 >> $1.good /etc/vx/diag.d/vxprivutil list ./$1.good

After running the script, an output similar to the example below should be seen. (This output could also result by typing "/etc/vx/diag.d/vxprivutil list c1t15d0s3_privreg.good" from the

command line after the script has been run,c1t15d0s3_privreg.good is the file that is created by the above script.) diskid: 862510173.30247.cradev group: name=ora_dg id=881621654.31353.cradev flags: private autoimport ... ...... logs: count=1 len=167 tocblks: 0 tocs: 2/1533 Defined regions: config priv 000017-000247[000231]: copy=01 offset=000000 enabled config priv 000249-001119[000871]: copy=01 offset=000231 enabled log priv 001120-001286[000167]: copy=01 offset=000000 enabled

***NOTE*** Look for the line marked flags, there should not be an altused flag set. If the output is not good, an error message similar to the error shown below may also appear: vxvm:vxprivutil: ERROR: join operation failed: Format error in disk private region

6) If the output from the script looks good, then dd data from the good file back to the corresponding disk's private region. This is accomplished by doing the following: In this example c1t15d0s2 will be used as the example disk, the private region is on slice3 (c1t15d0s3). The name of the file on which the script was run is /tmp/t15s3repair. # dd if=/tmp/c1t15d0s3_privreg.good of=/dev/rdsk/c1t15d0s3 7) Repeat steps 4 through 6 for each bad disk.

You might also like