How to Install and Configure ASMLIb on RHEL Linux 7

Make sure oracleasm packages are installed , go to Red Hat website to download the required ones:

$ rpm -qa|grep -i oracleasm
kmod-oracleasm-version.el7.x86_64
oracleasm-support-version.el7.x86_64
oracleasmlib-version.el7.x86_64

Check orcaleasm.service is activated:

# systemctl is-enabled oracleasm.service
enabled

Check  oracleasm kernel module is installed:

#modinfo oracleasm
filename: /lib/modules/3.10.0-514.el7.x86_64/weak-updates/oracleasm/oracleasm.ko
description: Kernel driver backing the Generic Linux ASM Library.
author: Joel Becker <joel.becker@oracle.com>
version: 2.0.8
license: GPL
rhelversion: 7.3
srcversion: 3AA2BF05E1F8A2D0EEAFD4E
depends:
vermagic: 3.10.0-510.el7.x86_64 SMP mod_unload modversions
signer: Red Hat Enterprise Linux Driver Update Program (key 3)
sig_key: BF:57:F3:E8:73:62:BC:72:29:D9:F4:65:32:17:73:DF:D1:F7:7A:80
sig_hashalgo: sha256
parm: use_logical_block_size:Prefer logical block size over physical (Y=logical, N=physical [default]) (bool)

Check whether oracleasm module is loaded into Linux kernel:

# lsmod | grep oracleasm
                          < -- not loaded yet

Initialize oracleasm module:

# oracleasm init
Creating /dev/oracleasm mount point: /dev/oracleasm
Loading module "oracleasm": oracleasm
Configuring "oracleasm" to use device physical block size
Mounting ASMlib driver filesystem: /dev/oracleasm

Check whether oracleasm module is loaded into Linux kernel:

# lsmod | grep oracleasm
oracleasm 63318 1

Configuring the Oracle ASM library driver:

# oracleasm configure -i
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 ('[]'). Hitting <ENTER> without typing an
answer will keep that current value. Ctrl-C will abort.

Default user to own the driver interface []: grid
Default group to own the driver interface []: dba
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done

Check oracleasm status:

# oracleasm status
Checking if ASM is loaded: yes
Checking if /dev/oracleasm is mounted: yes

#cd /etc/sysconfig
#ls -ltr *oracleasm*
-rw-r--r--. 1 root root 685 Jul 10 2014 oracleasm-_dev_oracleasm
lrwxrwxrwx. 1 root root 24 Aug 24 22:59 oracleasm -> 
                    oracleasm-_dev_oracleasm <---- this is required.

# oracleasm configure
ORACLEASM_UID=grid
ORACLEASM_GID=dba
ORACLEASM_SCANBOOT=true
ORACLEASM_SCANORDER="dm"
ORACLEASM_SCANEXCLUDE="sd"
ORACLEASM_USE_LOGICAL_BLOCK_SIZE="false"


# cat oracleasm

#
# This is a configuration file for automatic loading of the Oracle
# Automatic Storage Management library kernel driver. It is generated
# By running /etc/init.d/oracleasm configure. Please use that method
# to modify this file
#
# ORACLEASM_UID: Default user owning the /dev/oracleasm mount point.
ORACLEASM_UID=grid

# ORACLEASM_GID: Default group owning the /dev/oracleasm mount point.
ORACLEASM_GID=dba

# ORACLEASM_SCANBOOT: 'true' means scan for ASM disks on boot.
ORACLEASM_SCANBOOT=true

# ORACLEASM_SCANORDER: Matching patterns to order disk scanning
ORACLEASM_SCANORDER="dm"

# ORACLEASM_SCANEXCLUDE: Matching patterns to exclude disks from scan
ORACLEASM_SCANEXCLUDE="sd"

# ORACLEASM_USE_LOGICAL_BLOCK_SIZE: 'true' means use the logical block size
# reported by the underlying disk instead of the physical. The default
# is 'false'
ORACLEASM_USE_LOGICAL_BLOCK_SIZE=false

#

Scan ASM disks, and list ASM disks:

# oracleasm scandisks
Scanning the system for Oracle ASMLib disks: [ OK ]

#oracleasm listdisks
OCR_VOTE
ASM_DISK1
ASM_DISK2
...
..
.

Check oracleasm log:

$ vi /var/log/oracleasm

WARNING: FAILED to load library: /opt/oracle/extapi/64/asm/orcl/1/libasm.so

Database instance starts up failure with below errors:

ORA-15183: ASMLIB initialization error [driver/agent not installed]
Wed Jan 31 17:48:16 2018
WARNING: FAILED to load library: /opt/oracle/extapi/64/asm/orcl/1/libasm.so

Check “oracleasm.service” with errors:

# systemctl status oracleasm.service
 oracleasm.service - Load oracleasm Modules
 Loaded: loaded (/usr/lib/systemd/system/oracleasm.service; enabled; vendor preset: disabled)
 Active: inactive (dead) since Wed 2018-01-31 18:31:50 AEDT; 2s ago
 Process: 34627 ExecStop=/usr/sbin/service oracleasm stop_sysctl (code=exited, status=0/SUCCESS)
 Process: 429 ExecStart=/usr/sbin/service oracleasm start_sysctl (code=exited, status=0/SUCCESS)
 Main PID: 429 (code=exited, status=0/SUCCESS)

Jan 31 17:58:46 racnode1 systemd[1]: Starting Load oracleasm Modules...
Jan 31 17:58:46 racnode1 service[429]: Initializing the Oracle ASMLib driver: [ OK ]
Jan 31 17:58:48 racnode1 service[429]: Scanning the system for Oracle ASMLib disks: [ OK ]
Jan 31 17:58:48 racnode1 systemd[1]: Started Load oracleasm Modules.
Jan 31 18:31:50 racnode1 systemd[1]: Stopping Load oracleasm Modules...
Jan 31 18:31:50 racnode1 service[34627]: Dropping Oracle ASMLib disks: [ OK ]
Jan 31 18:31:50 racnode1 service[34627]: Shutting down the Oracle ASMLib driver: [ OK ]

Stop “oracleasm.service’, and re-enable it. After this, all works fine and database instance can be started up successfully.

# systemctl stop oracleasm.service

# systemctl status oracleasm.service
 oracleasm.service - Load oracleasm Modules
 Loaded: loaded (/usr/lib/systemd/system/oracleasm.service; enabled; vendor preset: disabled)
 Active: inactive (dead) since Wed 2018-01-31 18:31:50 AEDT; 2s ago
 Process: 34627 ExecStop=/usr/sbin/service oracleasm stop_sysctl (code=exited, status=0/SUCCESS)
 Process: 429 ExecStart=/usr/sbin/service oracleasm start_sysctl (code=exited, status=0/SUCCESS)
 Main PID: 429 (code=exited, status=0/SUCCESS)

Jan 31 17:58:46 racnode1 systemd[1]: Starting Load oracleasm Modules...
Jan 31 17:58:46 racnode1 service[429]: Initializing the Oracle ASMLib driver: [ OK ]
Jan 31 17:58:48 racnode1 service[429]: Scanning the system for Oracle ASMLib disks: [ OK ]
Jan 31 17:58:48 racnode1 systemd[1]: Started Load oracleasm Modules.
Jan 31 18:31:50 racnode1 systemd[1]: Stopping Load oracleasm Modules...
Jan 31 18:31:50 racnode1 service[34627]: Dropping Oracle ASMLib disks: [ OK ]
Jan 31 18:31:50 racnode1 service[34627]: Shutting down the Oracle ASMLib driver: [ OK ]
Jan 31 18:31:50 racnode1 systemd[1]: Stopped Load oracleasm Modules.

# systemctl enable oracleasm.service

# systemctl start oracleasm.service

# systemctl status oracleasm.service
 oracleasm.service - Load oracleasm Modules
 Loaded: loaded (/usr/lib/systemd/system/oracleasm.service; enabled; vendor preset: disabled)
 Active: active (exited) since Wed 2018-01-31 18:32:30 AEDT; 2s ago
 Process: 35360 ExecStart=/usr/sbin/service oracleasm start_sysctl (code=exited, status=0/SUCCESS)
 Main PID: 35360 (code=exited, status=0/SUCCESS)

Jan 31 18:32:29 racnode1 systemd[1]: Starting Load oracleasm Modules...
Jan 31 18:32:29 racnode1 service[35360]: Initializing the Oracle ASMLib driver: [ OK ]
Jan 31 18:32:30 racnode1 service[35360]: Scanning the system for Oracle ASMLib disks: [ OK ]
Jan 31 18:32:30 racnode1 systemd[1]: Started Load oracleasm Modules.

Alert.log

Wed Jan 31 18:40:09 2018
NOTE: Loaded library: /opt/oracle/extapi/64/asm/orcl/1/libasm.so