The Problem
The new disk has been assigned to a host and the user needs to run a scandisk. But the command fails to instantiate new disks with the below error.
# oracleasm scandisks Reloading disk partitions: done Cleaning any stale ASM disks... Scanning system for ASM disks... Instantiating disk "ASM_DISK_01" Unable to instantiate disk "ASM_DISK_01" Instantiating disk "ASM_DISK_02" Unable to instantiate disk "ASM_DISK_02" Instantiating disk "ASM_DISK_03" Unable to instantiate disk "ASM_DISK_03" ...
The setup details are as follows:
# uname -a Linux NGPRD1S08BKPMED35 3.10.0-693.11.6.el7.x86_64 #1 SMP Thu Dec 28 14:23:39 EST 2017 x86_64 x86_64 x86_64 GNU/Linux
# rpm -qa | grep -i oracleasm oracleasmlib-2.0.12-1.el7.x86_64 oracleasm-support-2.1.8-1.el6.x86_64 kmod-oracleasm-2.0.8-19.el7.x86_64
The oracleasm logfile shows below errors:
# tail /var/log/oracleasm log ==> /var/log/oracleasm <== Disk "ASM_DISK_01" does not exist or is not instantiated Instantiating disk "ASM_DISK_01" oracleasm-instantiate-disk: Unable to open manager: No such device or address Unable to instantiate disk "ASM_DISK_01" Disk "ASM_DISK_01" does not exist or is not instantiated Instantiating disk "ASM_DISK_02" oracleasm-instantiate-disk: Unable to open manager: No such device or address Unable to instantiate disk "ASM_DISK_02" ...
'oracleasm scandisks' runs successfully and returns no errors.
# /etc/init.d/oracleasm scandisks Scanning the system for Oracle ASMLib disks: [ OK ]
The Solution
/sbin/oracleasm V/s /etc/init.d/oracleasm
/sbin/oracleasm is the new command with ASMLib. The new /sbin/oracleasm command has imporved interface and new subcommands. So always use the new oracleasm command instead of the old /etc/init.d/oracleasm scandisks.
There could be 2 issues for the above issue and thus 2 solutions. Try them in below outlined order.
Solution 1
1. First check if the oracleasm modules are loaded and /dev/oracleasm is mounted on the system first. Use the below command:
# oracleasm status Checking if ASM is loaded: no Checking if /dev/oracleasm is mounted: no
2. In order to load the modules and mount /dev/oracleasm, use the below command:
# oracleasm init
3. verify the status of module:
# oracleasm status Checking if ASM is loaded: yes Checking if /dev/oracleasm is mounted: yes
4. Try rescanning the disks again.
# oracleasm scandisks Reloading disk partitions: done Cleaning any stale ASM disks... Scanning system for ASM disks... Instantiating disk "ASM_DISK_01" Instantiating disk "ASM_DISK_02" Instantiating disk "ASM_DISK_03" #
Solution 2
There could also be a situation where the modules are not loaded and "/etc/init.d/oracleasm configure" is also not run ar was interrupted. In that case, we need to first configure the oracleasm and then rescan the disks.
To configure the oracleasm:
# /etc/init.d/oracleasm configure Configuring the Oracle ASM library driver. This will configure the on-boot properties of the Oracle ASM library driver. The following questions will determine whether the driver is loaded on boot and what permissions it will have. The current values will be shown in brackets ('[]'). Hittingwithout typing an answer will keep that current value. Ctrl-C will abort. Default user to own the driver interface [oracle]: Default group to own the driver interface [oinstall]: Start Oracle ASM library driver on boot (y/n) [y]: Scan for Oracle ASM disks on boot (y/n) [y]: Writing Oracle ASM library driver configuration: done Initializing the Oracle ASMLib driver: [ OK ] Scanning the system for Oracle ASMLib disks: [ OK ]
Check the scandisks again:
# oracleasm scandisks Reloading disk partitions: done Cleaning any stale ASM disks... Scanning system for ASM disks... Instantiating disk "ASM_DISK_01" Instantiating disk "ASM_DISK_02" Instantiating disk "ASM_DISK_03" #