Fix the problem by recreating the ASM disk
Check device numbers so we get a link between ASM devices and OS devices
# ls -l /dev/sdj1
brw-rw---- 1 root disk 8, 145 Aug 19 09:56 /dev/sdj1
# ls -l /dev/sdi1
brw-rw---- 1 root disk 8, 129 Aug 19 09:56 /dev/sdi1
# ls -l /dev/oracleasm/disks/ACFS_DATA
brw-rw---- 1 grid asmadmin 8, 129 Aug 19 10:48 /dev/oracleasm/disks/ACFS_DATA
Create new asm diks for /dev/sdj1 with device numbers 8, 145
# /etc/init.d/oracleasm createdisk acfs_data2 /dev/sdj1
Marking disk "acfs_data2" as an ASM disk: [ OK ]
# /etc/init.d/oracleasm listdisks
ACFS_DATA
ACFS_DATA2
Let's add the new ASM disk to our diskgroup
SQL> alter diskgroup ACFS add disk '/dev/oracleasm/disks/ACFS_DATA2';
alter diskgroup ACFS add disk '/dev/oracleasm/disks/ACFS_DATA2'
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15075: disk(s) are not visible cluster-wide
--> Verify that we can read the ASM header files on each instance by running
$GRID_HOME/bin/kfed read /dev/oracleasm/disks/ACFS_DATA2
and check that the related files is accessible at OS level.
After that add the new disk to our diskgroup
SQL> alter diskgroup ACFS add disk '/dev/oracleasm/disks/ACFS_DATA2';
$ asmcmd lsdsk -p -G ACFS
Group_Num Disk_Num Incarn Mount_Stat Header_Stat Mode_Stat State Path
1 1 3915954605 MISSING UNKNOWN OFFLINE NORMAL
1 0 3915954604 CACHED MEMBER ONLINE NORMAL /dev/oracleasm/disks/ACFS_DATA
1 3 3915954610 CACHED MEMBER ONLINE NORMAL /dev/oracleasm/disks/ACFS_DATA2
Drop the disk with Mount_Status : MISSING and Header_Status: UNKNOWN from the diskgroup.
As we don't have the the Disk Path we need drop the related failgroup
SQL> select DISK_NUMBER, MOUNT_STATUS, HEADER_STATUS, MODE_STATUS, FAILGROUP, PATH from v$asm_disk;
DISK_NUMBER MOUNT_S HEADER_STATU MODE_ST FAILGROUP PATH
----------- ------- ------------ ------- ----------- --------------------------------------------------------------------------------
1 MISSING UNKNOWN OFFLINE ACFS_0001
3 CACHED MEMBER ONLINE ACFS_0003 /dev/oracleasm/disks/ACFS_DATA2
SQL> alter diskgroup ACFS drop disks in failgroup ACFS_0001 force;
Diskgroup altered.
Verify the drop operation worked successfully
SQL> !asmcmd lsdsk -p -G ACFS
Group_Num Disk_Num Incarn Mount_Stat Header_Stat Mode_Stat State Path
1 1 3915954605 MISSING UNKNOWN OFFLINE FORCING
1 0 3915954604 CACHED MEMBER ONLINE NORMAL /dev/oracleasm/disks/ACFS_DATA
1 3 3915954610 CACHED MEMBER ONLINE NORMAL /dev/oracleasm/disks/ACFS_DATA2
After some seconds drop operation should succeed :
SQL> !asmcmd lsdsk -p -G ACFS
Group_Num Disk_Num Incarn Mount_Stat Header_Stat Mode_Stat State Path
1 0 3915954604 CACHED MEMBER ONLINE NORMAL /dev/oracleasm/disks/ACFS_DATA
1 3 3915954610 CACHED MEMBER ONLINE NORMAL /dev/oracleasm/disks/ACFS_DATA2
Note if any ASM disk is corrupted you may need to clean the ASM header first by running
dd if=/dev/zero of=/dev/sdi1 bs=8192 count=1000
But be very cautious as selecting a wrong device will lead to a complete data loss !
Pages: Page 1, Page 2, Page 3
THX! nice BLOG!
Many thx