Since Oracle 26ai does not support Oracle Filter Drive, this is the process of migrating from ASMFD to ASMLIB v3.
This is the high level plan we are going to follow:
1. Verify AFD disks
2. Verify compatible parameter
3. crsctl stop has
4. acfsload stop
5. asmcmd afd_deconfigure
6. Install ASMLIB v3
7. oracleasm init
8. oracleasm configure -i
9. systemctl enable --now oracleasm
10. oracleasm scandisks
11. oracleasm listdisks
12. acfsload start
13. crsctl start has
14. Verify ORCL: paths
1. Verify AFD disks
[oracle@oraclelinux8 ~]$ asmcmd lsdsk
Path
AFD:DATA1
AFD:FRA1
AFD:FRA2
[oracle@oraclelinux8 ~]$
[oracle@oraclelinux8 ~]$ asmcmd lsdsk -p
Group_Num Disk_Num Incarn Mount_Stat Header_Stat Mode_Stat State Path
1 0 4076446309 CACHED MEMBER ONLINE NORMAL AFD:DATA1
2 0 4076446310 CACHED MEMBER ONLINE NORMAL AFD:FRA1
2 1 4076446311 CACHED MEMBER ONLINE NORMAL AFD:FRA2
[oracle@oraclelinux8 ~]$ asmcmd afd_lsdsk
--------------------------------------------------------------------------------
Label Filtering Path
================================================================================
DATA1 DISABLED /dev/sdb1
FRA1 DISABLED /dev/sdc1
FRA2 DISABLED /dev/sdd1
[oracle@oraclelinux8 ~]$ asmcmd dsget
parameter:/dev/sd*, AFD:*
profile:/dev/sd*,AFD:*
[oracle@oraclelinux8 ~]$ asmcmd lsdg
State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 512 4096 4194304 51196 47396 0 47396 0 N DATA/
MOUNTED EXTERN N 512 512 4096 4194304 40952 33652 0 33652 0 N FRA/
[oracle@oraclelinux8 ~]$
**save config just incase:
oracle@oraclelinux8 ~]$ mkdir -p /tmp/asmfd-migration
[oracle@oraclelinux8 ~]$ asmcmd lsdsk -p > /tmp/asmfd-migration/lsdsk-before.txt
[oracle@oraclelinux8 ~]$ asmcmd afd_lsdsk > /tmp/asmfd-migration/afd-before.txt
[oracle@oraclelinux8 ~]$ asmcmd dsget > /tmp/asmfd-migration/dsget-before.txt
[oracle@oraclelinux8 ~]$ asmcmd lsdg > /tmp/asmfd-migration/lsdg-before.txt
[oracle@oraclelinux8 ~]$ lsblk -o NAME,SIZE,TYPE,FSTYPE,WWN,SERIAL > /tmp/asmfd-migration/lsblk-before.txt
[oracle@oraclelinux8 ~]$ ls -l /dev/disk/by-id/ > /tmp/asmfd-migration/by-id-before.txt
2.Verify compatible parameter (Oracle recommends compatible.rdbms >= 12.2.0.1.0)
col NAME format a10
col COMPATIBILITY format a20
col DATABASE_COMPATIBILITY format a30
select name, compatibility, database_compatibility from v$asm_diskgroup;
NAME COMPATIBILITY DATABASE_COMPATIBILITY
---------- -------------------- ------------------------------
DATA 19.0.0.0.0 10.1.0.0.0
FRA 19.0.0.0.0 10.1.0.0.0
SQL>
If not, update with this:
[oracle@oraclelinux8 ~]$ asmcmd setattr -G DATA compatible.rdbms 19.0.0.0.0
[oracle@oraclelinux8 ~]$ asmcmd setattr -G FRA compatible.rdbms 19.0.0.0.0
col NAME format a10
col COMPATIBILITY format a20
col DATABASE_COMPATIBILITY format a30
select name, compatibility, database_compatibility from v$asm_diskgroup;
NAME COMPATIBILITY DATABASE_COMPATIBILITY
---------- -------------------- ------------------------------
DATA 19.0.0.0.0 19.0.0.0.0
FRA 19.0.0.0.0 19.0.0.0.0
3. crsctl stop has
[root@oraclelinux8 ~]# crsctl stop has
4. acfsload stop
[root@oraclelinux8 ~]# $ORACLE_HOME/bin/acfsload stop
5. asmcmd afd_deconfigure
[root@oraclelinux8 ~]# $ORACLE_HOME/bin/asmcmd afd_deconfigure
6. Install ASMLIB v3
Check repository can see the packages:
IF NO:
[root@oraclelinux8 ~]# dnf list available oracleasmlib oracleasm-support
Last metadata expiration check: 2:33:07 ago on Mon 21 Sep 2026 13:22:58 BST.
Error: No matching Packages to list
[root@oraclelinux8 ~]#
Enable ADDONS:
root@oraclelinux8 ~]# dnf repolist --all | grep -Ei 'addon|asm|uek'
ol8_UEKR6 Latest Unbreakable Enterprise Kernel Release disabled
ol8_UEKR6_RDMA Oracle Linux 8 UEK6 RDMA (x86_64) disabled
ol8_UEKR7 Latest Unbreakable Enterprise Kernel Release enabled
ol8_UEKR7_RDMA Oracle Linux 8 UEK7 RDMA (x86_64) disabled
ol8_addons Oracle Linux 8 Addons (x86_64) disabled
[root@oraclelinux8 ~]#
[root@oraclelinux8 ~]# dnf config-manager --enable ol8_addons
[root@oraclelinux8 ~]# dnf repolist --all | grep -Ei 'addon|asm|uek'
ol8_UEKR6 Latest Unbreakable Enterprise Kernel Release disabled
ol8_UEKR6_RDMA Oracle Linux 8 UEK6 RDMA (x86_64) disabled
ol8_UEKR7 Latest Unbreakable Enterprise Kernel Release enabled
ol8_UEKR7_RDMA Oracle Linux 8 UEK7 RDMA (x86_64) disabled
ol8_addons Oracle Linux 8 Addons (x86_64) enabled
[root@oraclelinux8 ~]#
[root@oraclelinux8 ~]# dnf clean metadata
[root@oraclelinux8 ~]# dnf makecache
[root@oraclelinux8 ~]# dnf list available oracleasmlib oracleasm-support
Last metadata expiration check: 0:01:00 ago on Mon 21 Sep 2026 16:02:28 BST.
Available Packages
oracleasm-support.src 3.1.1-6.el8 ol8_addons
oracleasm-support.x86_64 3.1.1-6.el8 ol8_addons
[root@oraclelinux8 ~]#
Install oracleasm-support:
[root@oraclelinux8 ~]# dnf install oracleasm-support
Download and Install oracleasmlib from Oracle ASMLib Downloads for Oracle Linux 8
[root@oraclelinux8 tmp]# dnf install ./oracleasmlib-3.1.3-1.el8.x86_64.rpm
Confirm both are installed:
[root@oraclelinux8 ~]# rpm -qa | grep -E 'oracleasm|oracleasmlib'
oracleasm-support-3.1.1-6.el8.x86_64
oracleasmlib-3.1.3-1.el8.x86_64
[root@oraclelinux8 ~]#
7. oracleasm init
[root@oraclelinux8 ~]# /usr/sbin/oracleasm init
oracleasm.service not started
Please run 'systemctl start oracleasm.service' to start oracleasm
[root@oraclelinux8 ~]# systemctl start oracleasm.service
[root@oraclelinux8 ~]#
[root@oraclelinux8 ~]# oracleasm status
Checking if the oracleasm kernel module is loaded: no (not required with UEK7)
Checking if /dev/oracleasm is mounted: no (not required with UEK7)
Checking which I/O Interface is in use: io_uring (KABI_V3)
Checking if ASMLIB can be loaded: no (loading library failed)
Checking if io_uring is enabled: yes
Checking if io_uring is accessible to the configured DB user: no (User ${ORACLEASM_UID} not found in /etc/passwd)
Checking if ASM disks have the correct ownership and permissions: yes
Checking if ASM I/O filter is set up: yes
[root@oraclelinux8 ~]#
8. oracleasm configure -i
[root@oraclelinux8 ~]# /usr/sbin/oracleasm configure -i
Configuring the Oracle ASM system service.
This will configure the on-boot properties of the Oracle ASM system
service. The following questions will determine whether the service
is started 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 ASM disk devices []: oracle
Default group to own the ASM disk devices []: asmdba
Start Oracle ASM system service on boot (y/n) [y]: y
Scan for Oracle ASM disks when starting the oracleasm service (y/n) [y]: y
Maximum number of ASM disks that can be used on system [2048]:
Enable iofilter if kernel supports it (y/n) [y]: y
Writing Oracle ASM system service configuration: done
Configuration changes only come into effect after the Oracle ASM
system service is restarted. Please run 'systemctl restart oracleasm'
after making changes.
WARNING: All of your Oracle and ASM instances must be stopped prior
to restarting the oracleasm service.
[root@oraclelinux8 ~]#
[root@oraclelinux8 ~]# grep "^[^#;]" /etc/sysconfig/oracleasm
ORACLEASM_UID=oracle
ORACLEASM_GID=asmdba
ORACLEASM_SCANBOOT=true
ORACLEASM_SCANORDER=""
ORACLEASM_SCANEXCLUDE=""
ORACLEASM_SCAN_DIRECTORIES=""
ORACLEASM_USE_LOGICAL_BLOCK_SIZE=
ORACLEASM_CONFIG_MAX_DISKS=2048
ORACLEASM_ENABLE_IOFILTER=true
[root@oraclelinux8 ~]#
9. systemctl enable –now oracleasm
[root@oraclelinux8 ~]# systemctl enable --now oracleasm
[root@oraclelinux8 ~]# systemctl status oracleasm
● oracleasm.service - Oracle ASM Service
Loaded: loaded (/usr/lib/systemd/system/oracleasm.service; enabled; vendor preset: disabled)
Active: active (exited) since Mon 2026-09-21 16:53:01 BST; 2min 27s ago
Main PID: 3829975 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 251416)
Memory: 0B
CGroup: /system.slice/oracleasm.service
Sep 21 16:53:00 oraclelinux8 systemd[1]: Starting Oracle ASM Service...
Sep 21 16:53:00 oraclelinux8 oracleasm.init[3829993]: Mounting oracleasm driver filesystem: Not applicable with UEK7
Sep 21 16:53:00 oraclelinux8 oracleasm.init[3830049]: Reloading disk partitions: done
Sep 21 16:53:00 oraclelinux8 oracleasm.init[3830049]: Cleaning any stale ASM disks...
Sep 21 16:53:00 oraclelinux8 oracleasm.init[3830049]: Setting up iofilter map for ASM disks: done
Sep 21 16:53:00 oraclelinux8 oracleasm.init[3830065]: Scanning system for ASM disks...
Sep 21 16:53:01 oraclelinux8 oracleasm.init[3830207]: Disk scan successful
Sep 21 16:53:01 oraclelinux8 systemd[1]: Started Oracle ASM Service.
[root@oraclelinux8 ~]#
10. oracleasm scandisks
[root@oraclelinux8 ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Setting up iofilter map for ASM disks: done
Scanning system for ASM disks...
[root@oraclelinux8 ~]#
11. oracleasm listdisks
[root@oraclelinux8 ~]# oracleasm listdisks
DATA1
FRA1
FRA2
[root@oraclelinux8 ~]#
12. acfsload start
[root@oraclelinux8 ~]# acfsload start
ACFS-9391: Checking for existing ADVM/ACFS installation.
ACFS-9392: Validating ADVM/ACFS installation files for operating system.
ACFS-9393: Verifying ASM Administrator setup.
ACFS-9308: Loading installed ADVM/ACFS drivers.
ACFS-9154: Loading 'oracleoks.ko' driver.
ACFS-9154: Loading 'oracleadvm.ko' driver.
ACFS-9154: Loading 'oracleacfs.ko' driver.
ACFS-9325: Driver OS kernel version = 5.15.0-201.135.6.el8uek.x86_64.
ACFS-9326: Driver build number = 260602.
ACFS-9231: Driver build version = 19.0.0.0.0 (19.32.0.0.0).
ACFS-9547: Driver available build number = 260602.
ACFS-9232: Driver available build version = 19.0.0.0.0 (19.32.0.0.0).
ACFS-9549: Kernel and command versions.
Kernel:
Build version: 19.0.0.0.0
Build full version: 19.32.0.0.0
Build hash: 9256567290
Bug numbers: NoTransactionInformation
Commands:
Build version: 19.0.0.0.0
Build full version: 19.32.0.0.0
Build hash: 9256567290
Bug numbers: NoTransactionInformation
ACFS-9327: Verifying ADVM/ACFS devices.
ACFS-9156: Detecting control device '/dev/asm/.asm_ctl_spec'.
ACFS-9156: Detecting control device '/dev/ofsctl'.
ACFS-9294: updating file /etc/sysconfig/oracledrivers.conf
ACFS-9322: completed
[root@oraclelinux8 ~]#
13. crsctl start has
[root@oraclelinux8 ~]# crsctl start has
14. Verify ORCL: paths
[oracle@oraclelinux8 ~]$ asmcmd lsdsk
Path
ORCL:DATA1
ORCL:FRA1
ORCL:FRA2
[oracle@oraclelinux8 ~]$
[oracle@oraclelinux8 ~]$ asmcmd lsdsk -p
Group_Num Disk_Num Incarn Mount_Stat Header_Stat Mode_Stat State Path
1 0 4074880182 CACHED MEMBER ONLINE NORMAL ORCL:DATA1
2 0 4074880183 CACHED MEMBER ONLINE NORMAL ORCL:FRA1
2 1 4074880184 CACHED MEMBER ONLINE NORMAL ORCL:FRA2
[oracle@oraclelinux8 ~]$ asmcmd lsdg
State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 512 4096 4194304 51196 47396 0 47396 0 N DATA/
MOUNTED EXTERN N 512 512 4096 4194304 40952 33608 0 33608 0 N FRA/
[oracle@oraclelinux8 ~]$ asmcmd dsget
parameter:/dev/sd*, AFD:*
profile:/dev/sd*,AFD:*
[oracle@oraclelinux8 ~]$
SQL> show parameter asm_diskstring
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
asm_diskstring string /dev/sd*, AFD:*
**** IF dsget still list AFD, we need to change:
[oracle@oraclelinux8 ~]$ asmcmd dsset 'ORCL:*'
[oracle@oraclelinux8 ~]$ asmcmd dsget
parameter:ORCL:*
profile:ORCL:*
[oracle@oraclelinux8 ~]$
Confirm it has been changed:
[oracle@oraclelinux8 ~]$ oracleasm listdisks
DATA1
FRA1
FRA2
[oracle@oraclelinux8 ~]$
[oracle@oraclelinux8 ~]$ asmcmd lsdsk
Path
ORCL:DATA1
ORCL:FRA1
ORCL:FRA2
[oracle@oraclelinux8 ~]$
SQL> show parameter asm_diskstring;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
asm_diskstring string ORCL:*
set lines 200
col path format a30
col name format a15
select group_number,
disk_number,
name,
path,
mount_status,
header_status,
state
from v$asm_disk
order by group_number, disk_number;
GROUP_NUMBER DISK_NUMBER NAME PATH MOUNT_S HEADER_STATU STATE
------------ ----------- --------------- ------------------------------ ------- ------------ --------
1 0 DATA1 ORCL:DATA1 CACHED MEMBER NORMAL
2 0 FRA1 ORCL:FRA1 CACHED MEMBER NORMAL
2 1 FRA2 ORCL:FRA2 CACHED MEMBER NORMAL
At this point, All should be done, just check all is up and running:
[oracle@oraclelinux8 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
ONLINE ONLINE oraclelinux8 STABLE
ora.FRA.dg
ONLINE ONLINE oraclelinux8 STABLE
ora.LISTENER.lsnr
ONLINE ONLINE oraclelinux8 STABLE
ora.asm
ONLINE ONLINE oraclelinux8 Started,STABLE
ora.ons
OFFLINE OFFLINE oraclelinux8 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
1 ONLINE ONLINE oraclelinux8 STABLE
ora.dbtest.db
1 ONLINE ONLINE oraclelinux8 Open,HOME=/u01/app/o
racle/product/19c/db
_1,STABLE
ora.diskmon
1 OFFLINE OFFLINE STABLE
ora.evmd
1 ONLINE ONLINE oraclelinux8 STABLE
--------------------------------------------------------------------------------
[oracle@oraclelinux8 ~]$
Comments