Skip to content

ORA-15031: Disk Specification Matches No Disks - ASM Discovery

ORA-15031: Disk Specification ‘path’ Matches No Disks

Section titled “ORA-15031: Disk Specification ‘path’ Matches No Disks”

Error Text: ORA-15031: disk specification '/path/to/disk' matches no disks

ORA-15031 occurs during CREATE DISKGROUP, ALTER DISKGROUP ADD DISK, or ALTER DISKGROUP RESIZE when the path or pattern provided doesn’t match any disk visible to the ASM instance. ASM scans paths defined by asm_diskstring plus any explicit paths in the command and reports which ones produced no candidates.

  • Path not included in asm_diskstring parameter
  • Wildcard pattern doesn’t match actual device names
  • ASMLib path used but ASMLib not configured
  • Spaces or escaping issues in shell-passed paths
  • Grid OS user (typically grid) cannot read device
  • UDEV rules not applied or stale
  • Device owned by oracle instead of grid/asmadmin
  • SELinux blocking access
  • New LUN presented but oracleasm scandisks not run
  • Multipath not yet aware of new device
  • Server has not rescanned SCSI bus
  • ASMLib createdisk not executed
  • Passing /dev/sdb when ASM expects /dev/oracleasm/disks/DISK1
  • Including partition number when whole disk required (or vice versa)
  • Using filesystem path instead of raw device
-- Connect as SYSASM
sqlplus / as sysasm
SHOW PARAMETER asm_diskstring;
-- Check what ASM currently sees
SELECT path, header_status, mount_status, label
FROM v$asm_disk
ORDER BY path;
-- Force discovery of specific path
SELECT path, header_status FROM v$asm_disk
WHERE path = '/dev/oracleasm/disks/DISK5';
-- Add path to discovery and retry
ALTER SYSTEM SET asm_diskstring='/dev/oracleasm/disks/*,/dev/mapper/mpath*' SCOPE=MEMORY;
SELECT path FROM v$asm_disk WHERE path LIKE '%DISK5%';
Terminal window
# Verify device exists
ls -la /dev/oracleasm/disks/DISK5
ls -la /dev/mapper/mpathf
# Check permissions (grid user must own)
# Should show: grid asmadmin
stat /dev/oracleasm/disks/DISK5
# Test readability as grid user
sudo -u grid cat /dev/oracleasm/disks/DISK5 | head -c 100 > /dev/null
echo "Exit: $?"
# Verify ASMLib state
oracleasm status
oracleasm listdisks
oracleasm querydisk -p DISK5
Terminal window
# Check candidate disks at OS level
ls -la /dev/oracleasm/disks/
ls -la /dev/mapper/
# Verify multipath
multipath -ll | grep -i "size"

Add the missing path pattern to asm_diskstring:

-- View current value
SHOW PARAMETER asm_diskstring;
-- Update to include new path
ALTER SYSTEM SET asm_diskstring='/dev/oracleasm/disks/*,/dev/mapper/mpath*'
SCOPE=BOTH;
-- Verify ASM sees the disk now
SELECT path, header_status FROM v$asm_disk WHERE path LIKE '%DISK5%';
Terminal window
# Set correct ownership for ASM access
chown grid:asmadmin /dev/sdb1
chmod 660 /dev/sdb1
# For ASMLib disks
oracleasm createdisk DISK5 /dev/sdb1
oracleasm scandisks
oracleasm listdisks
# Apply UDEV rules
cat > /etc/udev/rules.d/99-oracle-asmdevices.rules <<EOF
KERNEL=="sdb1", OWNER="grid", GROUP="asmadmin", MODE="0660"
EOF
udevadm control --reload-rules
udevadm trigger
Terminal window
# Rescan SCSI bus for new LUNs
for h in /sys/class/scsi_host/host*; do
echo "- - -" > $h/scan
done
# Update multipath
multipath -v3
multipath -ll
# Update ASMLib
oracleasm scandisks
oracleasm listdisks
# Verify in ASM
sqlplus / as sysasm
SQL> SELECT path FROM v$asm_disk WHERE header_status='CANDIDATE';
-- For ASMLib environments
ALTER DISKGROUP data ADD DISK '/dev/oracleasm/disks/DISK5';
-- For multipath without ASMLib
ALTER DISKGROUP data ADD DISK '/dev/mapper/mpathf';
-- For raw partitions
ALTER DISKGROUP data ADD DISK '/dev/sdb1';
-- For ASM Filter Driver (AFD)
ALTER DISKGROUP data ADD DISK 'AFD:DISK5';

In RAC, all nodes must see the disk:

Terminal window
# Verify on each node
for node in node1 node2; do
ssh $node "ls -la /dev/oracleasm/disks/DISK5"
ssh $node "stat /dev/oracleasm/disks/DISK5 | grep -i access"
done
# Force cluster-wide rescan
crsctl stat res -t | grep -i diskgroup

Scenario 1: Adding Disk After New LUN Provision

Section titled “Scenario 1: Adding Disk After New LUN Provision”
ALTER DISKGROUP data ADD DISK '/dev/oracleasm/disks/DISK5';
ORA-15031: disk specification '/dev/oracleasm/disks/DISK5' matches no disks

Fix: Run oracleasm scandisks on all nodes, then retry.

CREATE DISKGROUP fra EXTERNAL REDUNDANCY DISK '/dev/mapper/mpathx';
ORA-15031: disk specification '/dev/mapper/mpathx' matches no disks

Fix: Add /dev/mapper/mpath* to asm_diskstring.

Disk visible at OS but ASM cannot match it.

Fix: Check disk is readable by grid user via sudo -u grid dd if=/dev/sdb1 of=/dev/null bs=1M count=1.

SQL> ALTER DISKGROUP data ADD DISK '/dev/oracleasm/disks/DISK5';
ALTER DISKGROUP data ADD DISK '/dev/oracleasm/disks/DISK5'
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15031: disk specification '/dev/oracleasm/disks/DISK5' matches no disks
SQL> SHOW PARAMETER asm_diskstring;
NAME TYPE VALUE
----------------- ----------- ------------------
asm_diskstring string /dev/mapper/mpath*
-- asm_diskstring doesn't include /dev/oracleasm/disks/*
-- Cover all expected path schemes
ALTER SYSTEM SET asm_diskstring=
'/dev/oracleasm/disks/*,/dev/mapper/mpath*,AFD:*'
SCOPE=BOTH;
#!/bin/bash
# Validate disk before adding to ASM
DISK=$1
if [ ! -e "$DISK" ]; then
echo "ERROR: $DISK does not exist"
exit 1
fi
OWNER=$(stat -c '%U:%G' "$DISK")
if [ "$OWNER" != "grid:asmadmin" ]; then
echo "ERROR: $DISK owned by $OWNER, expected grid:asmadmin"
exit 1
fi
if ! sudo -u grid dd if="$DISK" of=/dev/null bs=1M count=1 2>/dev/null; then
echo "ERROR: grid user cannot read $DISK"
exit 1
fi
echo "OK: $DISK ready for ASM"
#!/bin/bash
NODES="node1 node2"
DISK="/dev/oracleasm/disks/DISK5"
for node in $NODES; do
echo "=== $node ==="
ssh $node "ls -la $DISK 2>&1; stat -c 'owner=%U group=%G mode=%a' $DISK 2>&1"
done
  • ORA-15014: Path is not in the discovery set
  • ORA-15020: Discovered duplicate ASM disk
  • ORA-15025: Could not open disk
  • ORA-15032: Not all alterations performed
  • ORA-15042: ASM disk is missing
  • Verify asm_diskstring includes path pattern
  • Confirm device exists and is readable by grid user
  • Run oracleasm scandisks for ASMLib
  • Run multipath -v3 for multipath devices
  • Verify cluster-wide visibility in RAC
  • Check UDEV rules for permission persistence
  • Use correct path format for environment