APPLIES TO

Oracle Database - Enterprise Edition

Oracle Database Cloud Schema Service - Version N/A and later

Oracle Database Exadata Cloud Machine - Version N/A and later

Oracle Cloud Infrastructure - Database Service - Version N/A and later

Oracle Database Cloud Exadata Service - Version N/A and later

Information in this document applies to any platform.

PURPOSE

Self-debugging steps when a diskgroup cannot be mounted due to error ORA-15063

ORA-15063: ASM discovered an insufficient number of disks for diskgroup s%
ORA-15040: diskgroup is incomplete
ORA-15042: ASM disk "%" is missing

TROUBLESHOOTING STEPS

SECTION A - Getting started

Start by refering NOTE 452770.1 "TROUBLESHOOTING - ASM disk not found/visible/discovered issues "

Firstly identify all disks being part of the affected diskgroup by looking at last successful mount in alert_+ASM*.log.

You should search for a section as below

SQL> ALTER DISKGROUP <DGNAME1> MOUNT /* asm agent *//* {0:0:214} */

NOTE: cache registered group DATA number=1 incarn=0x44bef6bb

NOTE: cache began mount (not first) of group DATA number=1 incarn=0x44bef6bb

NOTE: Loaded library: /opt/Oracle/extapi/64/asm/orcl/1/libasm.so

NOTE: Assigning number (1,0) to disk (ORCL: DATA01P)

NOTE: Assigning number (1,1) to disk (ORCL: DATA02P)

NOTE: Assigning number (1,2) to disk (ORCL: DATA03P)

NOTE: Assigning number (1,3) to disk (ORCL: DATA04P)

NOTE: Assigning number (1,4) to disk (ORCL: DATA05P)

..

NOTE: cache opening disk 0 of grp 1: DATA01P label: DATA01P

NOTE: cache opening disk 1 of grp 1: DATA02P label: DATA02P

..

SUCCESS: DISKGROUP <DGNAME1> was mounted

NOTE: When ASMLIB is not used the path to ASM disk is specified within the mount section

NOTE: cache opening disk 1 of grp 1: REDO3_0001 path:/dev/mpath/3600601600ba12c00d4b784363e69e211

NOTE: cache opening disk 2 of grp 1: REDO3_0002 path:/dev/mpath/3600601600ba12c00d4b784363e69e212

...

Isolate the device(s) reported as "missing" as note 452770.1 suggested.

Finally start your checks as follow

A1) If there is any IO/storage/multipathing errors reported in OS logs - investigate and fix them.

This step is mandatory as usually ORA-15063/ORA-15042 are caused by underlying IO/storage errors .

A2) If devices used by ASM disks are properly presented and configured at OS level.

If additionally "ORA-15075: disk(s) are not visible cluster-wide" is reported, make sure that all devices are cluster-wide visible.

A3) If all ASM disks have appropriate permissions (eg: they should be owned by grid owner)

If ownership of ASM disk(s) has been changed for whatever reason, please correct that.

A4) If/how the "missing" device(s) is reported when querying v$asm_disks

-----------------------------------------------------------------------------------

If the device(s) is reported with status

=> "PROVISIONED/CANDIDATE" - this means the header of ASM disk(s) is damaged.

-> investigate the IO problems behind the corruption - see step A1. Oracle never wipes out its metadata!! A checksum is made for every write before being accepted.

-> check the header status, in order to confirm the damage

$> kfed read <path_to_your_missing_devices>

Kfbh.endian: 0; 0x000: 0x00

Kfbh.hard: 0; 0x001: 0x00

Kfbh.type: 0; 0x002: KFBTYP_INVALID

Kfbh.datfmt: 0; 0x003: 0x00

Kfbh.block.blk: 0; 0x004: blk=0

Kfbh.block.obj: 0; 0x008: file=0

....

-> try to repair the header and see if diskgroup can be mounted

$> kfed repair <path_to_your_missing_devices>

-> check the if there is additional corruptions reported by ASM (eg ORA-15196) or by your database - as IO/storage problems could affect more than one block.

If any corruption is seen please open a SR to Oracle Support.

NOTE

1) When non-default AU size is used AUSZ=<au_size> must be specified with each KFED command.

2) "kfed repair" works for 11g ONLY!

=> "UNKNOWN/IGNORED" - this means the ASM disk(s) is not seen at OS level.

-> review steps A1, A2 and A3

-----------------------------------------------------------------------------------

A5) If asm_diskstring is still properly set.

On Windows configuration, you can also refer NOTE 880061.1 "ASM Is Unable To Detect SCSI Disks On Windows"

SECTION B - ASMLIB is used

When ASMLIB is used, follow the above steps (section A) and also check the errors associated with ORA-15063:

B1) ORA-15183 Unable to initialize the ASMLIB in Oracle/ORA-15183: ASMLIB initialization error [driver/agent not installed]

Refer: NOTE 340519.1 Cannot Start ASM Ora-15063/ORA-15183

B2) ORA-15186: ASMLIB error function = [asm_open], error = [1], mesg = [Operation not permitted]

Check your ASMLIB health.

=> correctness of installed rpm's

=> correctness of symlinks - all nodes should show

# ls -l /etc/sysconfig/oracleasm

Lrwxrwxrwx 1 root root 24 Sep 18 22:10 /etc/sysconfig/oracleasm -> oracleasm-_dev_oracleas

=> correctness of ASMLIB configuration (/etc/sysconfig/oracleasm) - when multipathing is used

# ORACLEASM_SCANORDER: Matching patterns to order disk scanning
ORACLEASM_SCANORDER="dm"
# ORACLEASM_SCANEXCLUDE: Matching patterns to exclude disks from scan
ORACLEASM_SCANEXCLUDE="sd"

B3) Check if ASMLIB disks are listed under /dev/oracleasm/disks

=> devices under /dev/oracleasm/disks/* must be reported as dm devices on all nodes (not single path device -sd*-).If not, please correct that! (see step B2)

$> ls -al /dev/oracleasm/disks

Brw-rw---- 1 grid dba 253, 29 Feb 12 11:44 /dev/oracleasm/disks/DATA01P

Brw-rw---- 1 grid dba 253, 35 Feb 12 11:44 /dev/oracleasm/disks/DATA02P

Brw-rw---- 1 grid dba 253, 27 Feb 15 16:04 /dev/oracleasm/disks/DATA03P

Brw-rw---- 1 grid dba 253, 24 Feb 12 11:44 /dev/oracleasm/disks/DATA04P

Brw-rw---- 1 grid dba 253, 25 Feb 12 11:44 /dev/oracleasm/disks/DATA05P

=> If one of your ASMLIB disk(s) is missing from the above output, first try to re-scan devices, as root:

# /etc/init.d/oracleasm scandisks

=> If ASMLIB disk(s) is still missing from /dev/oracleasm/disks, engage your sysadmin to investigate this (see steps A1, A2, A3).

B4) Check if ASMLIB disk(s) has the correct ASMLIB stamp and status

$> kfed read <ASMLIB_device> |grep provstr

Kfdhdb.driver.provstr: ORCLDISK<diskname>; 0x000: length=20

$> kfed read <ASMLIB_device> | egrep 'kfbh.type|kfdhdb.dskname|kfdhdb.hdrsts'

Kfbh.type: 1; 0x002: KFBTYP_DISKHEAD

Kfdhdb.dskname: DATA01P; 0x028: length=14

Kfdhdb.hdrsts: 3; 0x027: KFDHDR_MEMBER

=> If the output is "kfdhdb.driver.provstr: ORCLCLRD" (but kfdhdb.hdrsts= MEMBER and kfbh.type=KFBTYP_DISKHEAD) then your disk was deleted using "oracleasm deletedisk".

=> If kfbh.type = KFBTYP_INVALID -> see step A4) and check if "kfed repair" could fix the problem.

B5)Refer also the below documents

NOTE: 398622.1 ORA-15186: ASMLIB error function = [asm_open], error = [1], mesg = [Operation not permitted]

NOTE: 1384504.1 Mount ASM Disk Group Fails: ORA-15186, ORA-15025, ORA-15063

NOTE: 967461.1 "Multipath: error getting device" seen in OS log causes ASM/ASMlib to shutdown by itself

NOTE: 1526920.1 ORA-15186 ORA-15063 on node 2

SECTION C - Additional notes to review

If the above checks are done, but error still persists, please review also the below notes, depending on your configuration/situation:

NOTE: 577526.1 ORA-15063 ASM Discovered An Insufficient Number Of Disks For Diskgroup using NetApp Storage

NOTE: 784776.1 ORA-15063 When Mounting a Diskgroup After Storage Cloning ( BCV / Split Mirror / SRDF / HDS / Flash Copy )

NOTE: 555918.1 ORA-15038 On Diskgroup Mount After Node Eviction

NOTE: 1484723.1 ASM Candidate Raw Device Is Not Presented As A RAC Cluster Wide Shared character Devices On Unix.

NOTE: 1534211.1 ORA-15017 and ORA-15063 errors for unused diskgroups in 11.2

NOTE: 1487443.1 Mounting Diskgroup Fails With ORA-15063 and V$ASM_DISK Shows PROVISIONED

NOTE: 742832.1 AIX: After changing Multipathing drivers from RDAC to MPIO ASM discovered an insufficient number of disks

NOTE: 1276913.1 Unable to discover or use raw devices for ASM in HP-UX Itanium in 11.2.0.2 ( ORA-15063 )

SECTION D - Information to be collected when are you going to open a SR

If you are not able to fix the problem on your own, please collect the below information and raise a SR to Oracle Support

D1) alert_+ASM*.log (from all nodes if RAC)

D2) script#1 from NOTE 470211.1 How To Gather/Backup ASM Metadata In A Formatted Manner version 10.1, 10.2, 11.1 & 11.2?

D3) KFED reports

#! /bin/sh

Rm /tmp/kfed_DH.out /tmp/kfed_BK.out

For I in `ls <your_path_to_asm_disks>`

Do

Echo $I >> /tmp/kfed_DH.out

Kfed read $I >> /tmp/kfed_DH.out

Echo $I >> /tmp/kfed_BK.out

Kfed read $I aun=1 blkn=254 >> /tmp/kfed_BK.out

Done

Run kfed.sh in as GRID/ASM owner. Upload /tmp/kfed_DH.out, /tmp/kfed_BK.out

! Pay attention to non-default AU size - if a non-default AU size is used the you must specify it. (see note 1485597.1 "ASM tools used by Support: KFOD, KFED, AMDU")

D4) ASMLIB information

NOTE: 869526.1 Collecting The Required Information For Support To Troubleshot ASM/ASMLIB Issues.

D5) List of your ASM devices

$> ls -al <path_to_ASM_devices>

D6) OS logs (from all nodes if this is RAC configuration)

SECTION E - Disk is reported as MISSING after a failed disk addition

If you are facing ORA-15063 after a failed disk addition, please collect the below information and raise a SR to Oracle Support

E1) alert_+ASM*.log (from all nodes if RAC)

E2) script#1 from NOTE 470211.1 How To Gather/Backup ASM Metadata In A Formatted Manner version 10.1, 10.2, 11.1 & 11.2?

E3) KFED reports

#! /bin/sh

Rm /tmp/kfed_*.out

For I in `ls <your_path_to_asm_disks>`

Do

Echo $I >> /tmp/kfed_DH.out

Kfed read $I >> /tmp/kfed_DH.out

Echo $I >> /tmp/kfed_BK.out

Kfed read $I aun=1 blkn=254 >> /tmp/kfed_BK.out

Echo $I >> /tmp/kfed_PST.out

Kfed read $I aun=1 blkn=2 >> /tmp/kfed_PST.out

Echo $I >> /tmp/kfed_FS.out

Kfed read $I blkn=1 >> /tmp/kfed_FS.out

Echo $I >> /tmp/kfed_FD.out

Kfed read $I aun=2 blkn=1 >> /tmp/kfed_FD.out

Echo $I >> /tmp/kfed_DD.out

Kfed read $I aun=2 blkn=0 >> /tmp/kfed_DD.out ##there might be more than one block needed if a large number of disks -> this might be asked later by Oracle Support

Done

Run kfed.sh in as GRID/ASM owner. Upload /tmp/kfed_*.out

! Pay attention to non-default AU size - if a non-default AU size is used the you must specify it. (see note 1485597.1 "ASM tools used by Support: KFOD, KFED, AMDU")

E4) AMDU output

Amdu -diskstring '<ASM_DISKSTRING>' -dump '<DISKGROUP_NAME>' -noimage

Amdu -diskstring '<ASM_DISKSTRING>' -print <DISKGROUP_NAME>.F2.V0.C2 > DG.amdu

####F2.V0.C2 --> This will only extract up to 16 disks information. If there is a large number of disks, a larger output is needed

DBRECOVER Recovery Options

For Oracle incidents, start with the DBRECOVER for Oracle trial to verify table visibility, row previews, and export readiness on copied datafiles. For MySQL and InnoDB incidents, DBRECOVER for MySQL is free software and can inspect.ibd files, ibdata1, and database directories locally.

When the case is urgent, preserve the original files first, work from copies, and contact paid emergency support with the database version, platform, error messages, file list, and recovery objective.

Archive ParnassusData Blog Migration Archive