ORA-15040, ORA-15042 errors mounting a diskgroup

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 !

2 thoughts on “ORA-15040, ORA-15042 errors mounting a diskgroup”

Leave a Reply

Your email address will not be published. Required fields are marked *