Introduction

As I had explained in my two previous posts, the ASMlib v3 provide support for database servers running in Oracle Linux 8 and 9 with moderns kernels like UEK 5.15 and RHCK 5.14. In my last post, I demonstrated how to install the new ASMlib v3 in a new build. In this post, I will show you how to update an exisiting installation from ASMlib v2 to ASMlib v3, which allow us to update the Kernel from UEK6 to UEK7 smootly.

About the plan

If your database server don’t use the pattern ‘ORCL:*’ as prefix to discover the ASM disks, you need make sure that “asm_diskstring” parameter is updated in SPFILE to this value before shutdown the ASM instance or Grid stack. With the parameter updated in ASM spfile, we can shutdown the Grid stack and update the oracleasm-support and oracleasmlib packages.

After complete the ASMlib upgrade and validate that ASM instance can startup and mount the diskgroups normally, you can stop the Grid stack again and proceed to OS kernel update. You could update the ASMlib after the Kernel, or even update the Kernel as part of the ASMlib update before starting the Grid infrastructure, but I really recommend you to isolate these two things.

If you update the Kernel first, and you face any issue with the ASMlib update that require rollback, you will need rollback the Kernel to reinstall the ASMlib v2. Also, if you update the Kernel and reboot the SO before validate the ASM instance using the new ASMlib, in case of any problem, you will not know if the root cause was the ASMlib update, or the Kernel update.

Before begin (Known issues)

If your database server has ASM Disk with Physical Sector Size different from Logical Sector Size and you are not yet using ORCL:* asm diskstring, you must analyse the Doc ID 1500460.1 carefully. This note from Oracle Support contains detalied information about some issues that you can face when move from directly reference for disk devices to ASMlib label interface (ORCL:*).

Thank you Allan Graves for this comment on my Linkedin post:

if you are using Clusterware, please ensure you have the latest ASMLib and Bug# 37405185 – ADD SUPPORT FOR ASMLIB V3 IN ADVM installed. Please see known issues: https://docs.oracle.com/en/operating-systems/oracle-linux/asmlib/asmlib-AboutASMLib.html#asmlib3.0-relnotes

Downloads

You can see my last post here showing how to download the new ASMlib packages.

Important to note, the version used in this example can become obsolete over the time, so always download the latest version available in repository.

Step by step

1) Connect to the ASM instance and make sure that asm_diskstring is defined to ‘ORCL:*’ in SPFILE:

 SQL> alter system set asm_diskstring='ORCL:*' scope=spfile;

2) As root user, shutdown the Grid stack:

crsctl stop has

3) Stop the ASMlib service in systemd:

systemctl stop oracleasm

4) Now install the oracleasm-support v3 rpm:

dnf localinstall oracleasm-support-3.0.0-7.el8.x86_64.rpm

5) So install the oracleasmlib v3 rpm:

dnf localinstall oracleasmlib-3.0.0-13.el8.x86_64.rpm

6) OPTIONAL: Check the current state of “/etc/sysconfig/oracleasm” file:

cat /etc/sysconfig/oracleasm

7) We need execute the “oracleasm configure -i”, so the ASMlib will update the “/etc/sysconfig/oracleasm” file with two new parameters.

Just accept the pre-defined value:

oracleasm configure -i

8) OPTIONAL: Checking the configuration file:

cat /etc/sysconfig/oracleasm

You should see these new parameters added by the step 7:

# ORACLEASM_CONFIG_MAX_DISKS: Maximum number of ASM disks that may be
# used in the system. The default is 2048.
ORACLEASM_CONFIG_MAX_DISKS=2048

# ORACLEASM_ENABLE_IOFILTER: 'true' means to setup iofilter for ASM disks
# if the kernel supports BPF.
ORACLEASM_ENABLE_IOFILTER=true

9) Start the ASMlib service again:

systemctl start oracleasm

10) Execute the “oracleasm listdisks” to confirm that disks was successfully scanned and recognized by the new ASMlib version:

oracleasm listdisks

12) So, start the Grid services:

crsctl start has

13) Validation: Connect to the ASM instance with SQLPLUS and check the following parameters:

  • Confirm that ASM instance is using SPFILE
  • Confirm that asm_diskstring parameter is using ‘ORCL:*’ prefix
  • Query the V$ASM_DISK and confirm that disks was recognized with ORCL:* path
show parameter spfile;
show parameter asm_diskstring
select path from v$asm_disk;

Demo with Oracle Restart

[grid@lab01 ~]$ sqlplus / as sysasm

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Feb 18 20:57:15 2025
Version 19.24.0.0.0

Copyright (c) 1982, 2024, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.24.0.0.0

SQL> show parameter spfile;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
spfile				     string	 +DATA/ASM/ASMPARAMETERFILE/reg
						 istry.253.1168022355
SQL> show parameter asm_diskstring;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
asm_diskstring			     string	 /dev/oracleasm/disks/*
SQL>
SQL> set lines 300
col name format a30
select group_number, name, state, type, sector_size, logical_sector_size, offline_disks from v$asm_diskgroup;SQL> SQL>

GROUP_NUMBER NAME			    STATE	TYPE   SECTOR_SIZE LOGICAL_SECTOR_SIZE OFFLINE_DISKS
------------ ------------------------------ ----------- ------ ----------- ------------------- -------------
	   1 DATA			    MOUNTED	EXTERN	       512		   512		   0
	   2 RECO			    MOUNTED	EXTERN	       512		   512		   0

SQL>
SQL>
SQL> set pages 50
set lines 300
col path format a30
col header_status format a20
col mount_status format a20
select inst_id, group_number, disk_number, path, header_status, mount_status, state, sector_size, logical_sector_size
from gv$asm_disk
order by 1,2,3;SQL> SQL> SQL> SQL> SQL>   2    3

   INST_ID GROUP_NUMBER DISK_NUMBER PATH			   HEADER_STATUS	MOUNT_STATUS	     STATE    SECTOR_SIZE LOGICAL_SECTOR_SIZE
---------- ------------ ----------- ------------------------------ -------------------- -------------------- -------- ----------- -------------------
	 1	      1 	  0 /dev/oracleasm/disks/DATA1	   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      1 	  1 /dev/oracleasm/disks/DATA2	   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      1 	  2 /dev/oracleasm/disks/DATA3	   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      1 	  3 /dev/oracleasm/disks/DATA4	   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      1 	  4 /dev/oracleasm/disks/DATA5	   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      1 	  5 /dev/oracleasm/disks/DATA6	   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      1 	  6 /dev/oracleasm/disks/DATA7	   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      1 	  7 /dev/oracleasm/disks/DATA8	   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      2 	  0 /dev/oracleasm/disks/RECO4	   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      2 	  1 /dev/oracleasm/disks/RECO3	   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      2 	  2 /dev/oracleasm/disks/RECO2	   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      2 	  3 /dev/oracleasm/disks/RECO1	   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      2 	  4 /dev/oracleasm/disks/RECO5	   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      2 	  5 /dev/oracleasm/disks/RECO6	   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      2 	  6 /dev/oracleasm/disks/RECO7	   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      2 	  7 /dev/oracleasm/disks/RECO8	   MEMBER		CACHED		     NORMAL	      512		  512

16 rows selected.

SQL> alter system set asm_diskstring='ORCL:*' scope=spfile;

System altered.

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.24.0.0.0
[grid@lab01 ~]$
[grid@lab01 ~]$ crsctl stop has
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'lab01'
CRS-2673: Attempting to stop 'ora.cdbdg_a.db' on 'lab01'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'lab01'
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'lab01' succeeded
CRS-2677: Stop of 'ora.cdbdg_a.db' on 'lab01' succeeded
CRS-2673: Attempting to stop 'ora.RECO.dg' on 'lab01'
CRS-2677: Stop of 'ora.RECO.dg' on 'lab01' succeeded
CRS-2673: Attempting to stop 'ora.cdbtst.db' on 'lab01'
CRS-2677: Stop of 'ora.cdbtst.db' on 'lab01' succeeded
CRS-2673: Attempting to stop 'ora.DATA.dg' on 'lab01'
CRS-2677: Stop of 'ora.DATA.dg' on 'lab01' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'lab01'
CRS-2677: Stop of 'ora.asm' on 'lab01' succeeded
CRS-2673: Attempting to stop 'ora.evmd' on 'lab01'
CRS-2677: Stop of 'ora.evmd' on 'lab01' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'lab01'
CRS-2677: Stop of 'ora.cssd' on 'lab01' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'lab01' has completed
CRS-4133: Oracle High Availability Services has been stopped.
[grid@lab01 ~]$
[grid@lab01 ~]$ exit
logout
[root@lab01 ~]#
[root@lab01 ~]# dnf list installed | grep oracleasm
oracleasm-support.x86_64              2.1.12-1.el8                        @@commandline
oracleasmlib.x86_64                   2.0.17-1.el8                        @@commandline
[root@lab01 ~]#
[root@lab01 ~]# oracleasm version
oracleasm version 2.1.12
[root@lab01 ~]#
[root@lab01 ~]# ls -lrt *.rpm
-rw-r--r-- 1 root root  99852 Feb 28  2020 oracleasm-support-2.1.12-1.el8.x86_64.rpm
-rw-r--r-- 1 root root  27092 Jun  1  2020 oracleasmlib-2.0.17-1.el8.x86_64.rpm
-rw-r--r-- 1 root root  47512 Feb 17 21:14 oracleasmlib-3.0.0-13.el8.x86_64.rpm
-rw-r--r-- 1 root root 111504 Feb 18 20:55 oracleasm-support-3.0.0-7.el8.x86_64.rpm
[root@lab01 ~]#
[root@lab01 ~]# systemctl stop oracleasm
[root@lab01 ~]#
[root@lab01 ~]# dnf localinstall oracleasm-support-3.0.0-7.el8.x86_64.rpm
Last metadata expiration check: 3:18:29 ago on Tue 18 Feb 2025 05:41:57 PM -03.
Dependencies resolved.
============================================================================================================================================================================================================================================
 Package                                                       Architecture                                       Version                                                    Repository                                                Size
============================================================================================================================================================================================================================================
Upgrading:
 oracleasm-support                                             x86_64                                             3.0.0-7.el8                                                @commandline                                             109 k

Transaction Summary
============================================================================================================================================================================================================================================
Upgrade  1 Package

Total size: 109 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                                                                    1/1
  Running scriptlet: oracleasm-support-3.0.0-7.el8.x86_64                                                                                                                                                                               1/1
  Upgrading        : oracleasm-support-3.0.0-7.el8.x86_64                                                                                                                                                                               1/2
  Running scriptlet: oracleasm-support-3.0.0-7.el8.x86_64                                                                                                                                                                               1/2
Note: Forwarding request to 'systemctl enable oracleasm.service'.
Synchronizing state of oracleasm.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable oracleasm

  Cleanup          : oracleasm-support-2.1.12-1.el8.x86_64                                                                                                                                                                              2/2
  Running scriptlet: oracleasm-support-2.1.12-1.el8.x86_64                                                                                                                                                                              2/2
  Verifying        : oracleasm-support-3.0.0-7.el8.x86_64                                                                                                                                                                               1/2
  Verifying        : oracleasm-support-2.1.12-1.el8.x86_64                                                                                                                                                                              2/2

Upgraded:
  oracleasm-support-3.0.0-7.el8.x86_64

Complete!
[root@lab01 ~]#
[root@lab01 ~]# dnf localinstall oracleasmlib-3.0.0-13.el8.x86_64.rpm
Last metadata expiration check: 3:18:44 ago on Tue 18 Feb 2025 05:41:57 PM -03.
Dependencies resolved.
============================================================================================================================================================================================================================================
 Package                                                   Architecture                                        Version                                                      Repository                                                 Size
============================================================================================================================================================================================================================================
Upgrading:
 oracleasmlib                                              x86_64                                              3.0.0-13.el8                                                 @commandline                                               46 k

Transaction Summary
============================================================================================================================================================================================================================================
Upgrade  1 Package

Total size: 46 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                                                                    1/1
  Upgrading        : oracleasmlib-3.0.0-13.el8.x86_64                                                                                                                                                                                   1/2
  Cleanup          : oracleasmlib-2.0.17-1.el8.x86_64                                                                                                                                                                                   2/2
  Running scriptlet: oracleasmlib-2.0.17-1.el8.x86_64                                                                                                                                                                                   2/2
  Verifying        : oracleasmlib-3.0.0-13.el8.x86_64                                                                                                                                                                                   1/2
  Verifying        : oracleasmlib-2.0.17-1.el8.x86_64                                                                                                                                                                                   2/2

Upgraded:
  oracleasmlib-3.0.0-13.el8.x86_64

Complete!
[root@lab01 ~]#
[root@lab01 ~]# cat /etc/sysconfig/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_ENABLED: 'true' means to load the driver on boot.
ORACLEASM_ENABLED=true

# 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=oinstall

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

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

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

# ORACLEASM_SCAN_DIRECTORIES: Scan disks under these directories
ORACLEASM_SCAN_DIRECTORIES=""

# 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

[root@lab01 ~]#
[root@lab01 ~]# 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 [oinstall]:
Start Oracle ASM library driver on boot (y/n) [y]:
Scan for Oracle ASM disks on boot (y/n) [y]:
Maximum number of disks that may be used in ASM system [2048]:
Enable iofilter if kernel supports it (y/n) [y]:
Writing Oracle ASM library driver configuration: done
[root@lab01 ~]#
[root@lab01 ~]# cat /etc/sysconfig/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_ENABLED: 'true' means to load the driver on boot.
ORACLEASM_ENABLED=true

# 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=oinstall

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

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

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

# ORACLEASM_SCAN_DIRECTORIES: Scan disks under these directories
ORACLEASM_SCAN_DIRECTORIES=""

# 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

# ORACLEASM_CONFIG_MAX_DISKS: Maximum number of ASM disks that may be
# used in the system. The default is 2048.
ORACLEASM_CONFIG_MAX_DISKS=2048

# ORACLEASM_ENABLE_IOFILTER: 'true' means to setup iofilter for ASM disks
# if the kernel supports BPF.
ORACLEASM_ENABLE_IOFILTER=true

[root@lab01 ~]#
[root@lab01 ~]# system start oracleasm
-bash: system: command not found
[root@lab01 ~]#
[root@lab01 ~]# systemctl start oracleasm
[root@lab01 ~]#
[root@lab01 ~]# systemctl status oracleasm
● oracleasm.service - Load oracleasm Modules
   Loaded: loaded (/usr/lib/systemd/system/oracleasm.service; enabled; vendor preset: disabled)
   Active: active (exited) since Tue 2025-02-18 21:01:36 -03; 4s ago
  Process: 47031 ExecStart=/usr/sbin/oracleasm.init start_sysctl (code=exited, status=0/SUCCESS)
  Process: 47029 ExecStartPre=/usr/bin/udevadm settle -t 120 (code=exited, status=0/SUCCESS)
 Main PID: 47031 (code=exited, status=0/SUCCESS)

Feb 18 21:01:35 lab01 systemd[1]: Starting Load oracleasm Modules...
Feb 18 21:01:35 lab01 oracleasm.init[47031]: Initializing the Oracle ASMLib driver: OK
Feb 18 21:01:36 lab01 oracleasm.init[47031]: Scanning the system for Oracle ASMLib disks: OK
Feb 18 21:01:36 lab01 systemd[1]: Started Load oracleasm Modules.
[root@lab01 ~]#
[root@lab01 ~]#
[root@lab01 ~]# oracleasm listdisks
DATA1
DATA2
DATA3
DATA4
DATA5
DATA6
DATA7
DATA8
RECO1
RECO2
RECO3
RECO4
RECO5
RECO6
RECO7
RECO8
[root@lab01 ~]#
[root@lab01 ~]# su - grid
Last login: Tue Feb 18 20:56:26 -03 2025 on pts/1
[grid@lab01 ~]$
[grid@lab01 ~]$ crsctl start has
CRS-4123: Oracle High Availability Services has been started.
[grid@lab01 ~]$
[grid@lab01 ~]$ sqlplus / as sysasm

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Feb 18 21:04:52 2025
Version 19.24.0.0.0

Copyright (c) 1982, 2024, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.24.0.0.0

SQL> show parameter spfile;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
spfile				     string	 +DATA/ASM/ASMPARAMETERFILE/reg
						 istry.253.1168022355
SQL> show parameter asm_diskstring;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
asm_diskstring			     string	 ORCL:*
SQL>
SQL>
SQL> set lines 300
col name format a30
select group_number, name, state, type, sector_size, logical_sector_size, offline_disks from v$asm_diskgroup;SQL> SQL>

GROUP_NUMBER NAME			    STATE	TYPE   SECTOR_SIZE LOGICAL_SECTOR_SIZE OFFLINE_DISKS
------------ ------------------------------ ----------- ------ ----------- ------------------- -------------
	   1 DATA			    MOUNTED	EXTERN	       512		   512		   0
	   2 RECO			    MOUNTED	EXTERN	       512		   512		   0

SQL>
SQL> set pages 50
set lines 300
col path format a30
col header_status format a20
col mount_status format a20
select inst_id, group_number, disk_number, path, header_status, mount_status, state, sector_size, logical_sector_size
from gv$asm_disk
order by 1,2,3;SQL> SQL> SQL> SQL> SQL>   2    3

   INST_ID GROUP_NUMBER DISK_NUMBER PATH			   HEADER_STATUS	MOUNT_STATUS	     STATE    SECTOR_SIZE LOGICAL_SECTOR_SIZE
---------- ------------ ----------- ------------------------------ -------------------- -------------------- -------- ----------- -------------------
	 1	      1 	  0 ORCL:DATA1			   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      1 	  1 ORCL:DATA2			   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      1 	  2 ORCL:DATA3			   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      1 	  3 ORCL:DATA4			   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      1 	  4 ORCL:DATA5			   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      1 	  5 ORCL:DATA6			   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      1 	  6 ORCL:DATA7			   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      1 	  7 ORCL:DATA8			   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      2 	  0 ORCL:RECO4			   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      2 	  1 ORCL:RECO3			   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      2 	  2 ORCL:RECO2			   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      2 	  3 ORCL:RECO1			   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      2 	  4 ORCL:RECO5			   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      2 	  5 ORCL:RECO6			   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      2 	  6 ORCL:RECO7			   MEMBER		CACHED		     NORMAL	      512		  512
	 1	      2 	  7 ORCL:RECO8			   MEMBER		CACHED		     NORMAL	      512		  512

16 rows selected.

SQL>

How it Works with Oracle RAC

With Oracle RAC, we can use the same procedure in rolling mode, one node per time, like a DB or GI patching. The ASM cluster nodes can run normally with different asm_diskstring during the update process. For example, we can restart Node1 with asm_diskstring ‘ORCL:*’ and ASMlib V3, while Node2 still using asm_diskstring ‘/dev/oracleasm/disks’ (or anything else) with ASMlib v2.

Thank you Allan Graves for this comment on my Linkedin post:

if you are using Clusterware, please ensure you have the latest ASMLib and Bug# 37405185 – ADD SUPPORT FOR ASMLIB V3 IN ADVM installed. Please see known issues: https://docs.oracle.com/en/operating-systems/oracle-linux/asmlib/asmlib-AboutASMLib.html#asmlib3.0-relnotes

ASMlib v3 with UEK6 vs UEK7

The ASMlib v3 supports both UEK6 and UEK7, but uses a different internel interface to work properly on each kernel. When running in UEK6, the ASMlib v3 still using the same interface as ASMlib v2 (you should see “KABI_V2” in “oracleasm status”), and when running in UEK7, the ASMlib v3 uses the new IO_URING interface, which is identified as “KABI_V3” in the “oracleasm status” command.

Example 1: ASMlib v2 on OEL8.10 with UEK6.

Before update the ASMlib, you will see anything like this:

[root@lab01 ~]# uname -r
5.4.17-2136.317.5.5.el8uek.x86_64
[root@lab01 ~]#
[root@lab01 ~]# oracleasm version
oracleasm version 2.1.12
[root@lab01 ~]#
[root@lab01 ~]# oracleasm status
Checking if ASM is loaded: yes
Checking if /dev/oracleasm is mounted: yes

Example 2: ASMlib v3 on OEL 8.10 with UEK6

After update the ASMlib to version 3 and before update the Kernel to UEK7, you should see the new version of ASMlib using the interface KABI_V2. It is essentially the same interface used in the ASMlib v2, although this is not showed in the status of the old version.

[root@lab01 ~]# uname -r
5.4.17-2136.317.5.5.el8uek.x86_64
[root@lab01 ~]#
[root@lab01 ~]# oracleasm version
oracleasm version 3.0.0
[root@lab01 ~]#
[root@lab01 ~]# oracleasm status
Checking if the oracleasm kernel module is loaded: yes
Checking if /dev/oracleasm is mounted: yes
Checking which I/O Interface is in use: oracleasm driver (KABI_V2)

Example 3: ASMlib v3 on OEL 8.10 with UEK7

And after update the OS Kernel to UEK7, now you can see the ASMlib v3 using the new interface KABI_V3, which uses IO_URING:

[root@lab01 ~]# uname -r
5.15.0-306.177.4.el8uek.x86_64
[root@lab01 ~]#
[root@lab01 ~]# oracleasm version
oracleasm version 3.0.0
[root@lab01 ~]#
[root@lab01 ~]# oracleasm status
Checking if the oracleasm kernel module is loaded: no (Not required with kernel 5.15.0)
Checking if /dev/oracleasm is mounted: no (Not required with kernel 5.15.0)
Checking which I/O Interface is in use: io_uring (KABI_V3)
Checking if io_uring is enabled: yes
Checking if ASM disks have the correct ownership and permissions: yes

Conclusion

After complete these steps, you are ready to update the OS Kernel from UEK6 to UEK7. I have successfully performed several tests with Oracle Restart and Oracle Clusterware before writing this blog post, but I really recommend you to execute your own test in your own Infrastructure before execute this in production environment.

Again, if you are not using ORCL:* as disk prefix yet, and your database server has disks with Physical Sector size greater than Logical Sector size, you need review the Doc ID 1500460.1 carefully. If you are not sure about that, I recommend you to open a Service Request to Oracle Support.

4 thoughts on “How to Update Your Existing ASM Installation to ASMlib v3 in Oracle Linux 8.10”
  1. In my last post, I demonstrated how to install the new ASMlib v3 in a new build : could you please send me link

Leave a Reply to Maicon CarneiroCancel reply

Discover more from Blog do Dibiei

Subscribe now to keep reading and get access to the full archive.

Continue reading