Calling the DBCA is easy and we have a lot of options, the option initParams allows us to send any parameter that we want during database creation. But for ASMCA? Can we send parameters during the creation of the ASM instance? The answer is Yes and let’s check how to easily do this during the Oracle Grid creation/installation.
But why?
There are several occasions that we need to do that. One example is setting the parameter “_disk_sector_size_override” that disables the check for sector size at the O.S. level (allowing us to play with different sector sizes). The second is allowing us to install Oracle 23ai using the parameter “_exadata_feature_on=true” at the installation/creation phase (for lab and test purposes in a non-Engineered System environment while Oracle does not release it for On-Prem).
For dbca it is easy to do that, but for asmca? Today there was two options for Grid/ASM: The first is install Grid 19c, set the parameter “_exadata_feature_on=true”, and upgrade to 23ai (similar what I described here). The second is install Grid, call the root.sh, wait for the error, set the parameter, and resume/try again (Martin Klier described here how to do this).
The ASMCA_ARGS option
But there is another approach, that is cleaner and avoids installing 19c or waiting for the installation error. The way it is setting the ASMCA_ARGS at file crsconfig_params. If you look, during the call of root.sh (after installing the GRID) you have this:
... Using configuration parameter file: /u01/app/23.7.0.0/grid/crs/install/crsconfig_params The log of current session can be found at: /u01/app/grid/crsdata/oel8n1-23a/crsconfig/rootcrs_oel8n1-23a_2025-02-08_00-27-55AM.log ...
So, the root.sh will use this crsconfig_params as the source of configuration and inside of it we can find these parameters:
# ASM consts ASM_UPGRADE=false ASM_DISCOVERY_STRING=/dev/sd* ASM_CONFIG=near ASM_CREDENTIALS= ASMCA_ARGS=
The parameter ASMCA_ARGS is not documented (even inside MOS/CMOS) and appears to exists since Oracle 11.2. But the name is pretty clear what it does, and using some logic on how to set it, we can do this:
[root@oel8n1-23a ~]# cat /u01/app/23.7.0.0/grid/crs/install/crsconfig_params |grep ASMCA_ARGS ASMCA_ARGS= [root@oel8n1-23a ~]# [root@oel8n1-23a ~]# vi /u01/app/23.7.0.0/grid/crs/install/crsconfig_params [root@oel8n1-23a ~]# [root@oel8n1-23a ~]# cat /u01/app/23.7.0.0/grid/crs/install/crsconfig_params |grep ASMCA_ARGS ASMCA_ARGS=-param "_exadata_feature_on=true" [root@oel8n1-23a ~]# [root@oel8n1-23a ~]#
The “root.sh”, during the step for InitConfig, will add the value of this parameter (as is) to the asmca call. Inside the logs we can notice this (check the asmca call):
2025-02-08 00:29:38: This is the first node to start 2025-02-08 00:29:38: Performing initial configuration for cluster 2025-02-08 00:29:38: Executing the step [asm_ConfigFirstNode_step_2] to configure ASM on the first node 2025-02-08 00:29:38: Start to configure legacy/near ASM on the first node ... 2025-02-08 00:29:38: Configuring ASM for fresh install ... 2025-02-08 00:29:38: Configuring ASM via ASMCA 2025-02-08 00:29:38: Reuse Disk Group is set to 0 2025-02-08 00:29:38: s_run_as_user2 executing: /bin/su grid -c ' echo CLSRSC_START; /u01/app/23.7.0.0/grid/bin/asmca -silent -diskGroupName SYSTEMDG -diskList "/dev/sdb14" -redundancy EXTERNAL -diskString "/dev/sd*" -configureLocalASM -passwordFileLocation +SYSTEMDG/orapwASM -au_size 4 -param "_exadata_feature_on=true" '
Here you can see the full execution, setting the parameter and calling the root.sh:
[root@oel8n1-23a ~]# cat /u01/app/23.7.0.0/grid/crs/install/crsconfig_params |grep ASMCA_ARGS ASMCA_ARGS= [root@oel8n1-23a ~]# [root@oel8n1-23a ~]# vi /u01/app/23.7.0.0/grid/crs/install/crsconfig_params [root@oel8n1-23a ~]# [root@oel8n1-23a ~]# cat /u01/app/23.7.0.0/grid/crs/install/crsconfig_params |grep ASMCA_ARGS ASMCA_ARGS=-param "_exadata_feature_on=true" [root@oel8n1-23a ~]# [root@oel8n1-23a ~]# /u01/app/23.7.0.0/grid/root.sh Performing root user operation. The following environment variables are set as: ORACLE_OWNER= grid ORACLE_HOME= /u01/app/23.7.0.0/grid Enter the full pathname of the local bin directory: [/usr/local/bin]: The contents of "dbhome" have not changed. No need to overwrite. The contents of "oraenv" have not changed. No need to overwrite. The contents of "coraenv" have not changed. No need to overwrite. Entries will be added to the /etc/oratab file as needed by Database Configuration Assistant when a database is created Finished running generic part of root script. Now product-specific root actions will be performed. RAC option is not linked in Relinking oracle with rac_on option Executing command '/u01/app/23.7.0.0/grid/perl/bin/perl -I/u01/app/23.7.0.0/grid/perl/lib -I/u01/app/23.7.0.0/grid/crs/install /u01/app/23.7.0.0/grid/crs/install/rootcrs.pl ' Using configuration parameter file: /u01/app/23.7.0.0/grid/crs/install/crsconfig_params The log of current session can be found at: /u01/app/grid/crsdata/oel8n1-23a/crsconfig/rootcrs_oel8n1-23a_2025-02-08_00-27-55AM.log 2025/02/08 00:28:00 CLSRSC-594: Executing installation step 1 of 19: 'ValidateEnv'. 2025/02/08 00:28:00 CLSRSC-594: Executing installation step 2 of 19: 'CheckRootCert'. 2025/02/08 00:28:01 CLSRSC-594: Executing installation step 3 of 19: 'GenSiteGUIDs'. 2025/02/08 00:28:01 CLSRSC-594: Executing installation step 4 of 19: 'SetupOSD'. Redirecting to /bin/systemctl restart rsyslog.service 2025/02/08 00:28:01 CLSRSC-594: Executing installation step 5 of 19: 'CheckCRSConfig'. 2025/02/08 00:28:01 CLSRSC-594: Executing installation step 6 of 19: 'SetupLocalGPNP'. 2025/02/08 00:28:05 CLSRSC-594: Executing installation step 7 of 19: 'CreateRootCert'. 2025/02/08 00:28:09 CLSRSC-594: Executing installation step 8 of 19: 'ConfigOLR'. 2025/02/08 00:28:14 CLSRSC-594: Executing installation step 9 of 19: 'ConfigCHMOS'. 2025/02/08 00:28:14 CLSRSC-594: Executing installation step 10 of 19: 'CreateOHASD'. 2025/02/08 00:28:15 CLSRSC-594: Executing installation step 11 of 19: 'ConfigOHASD'. 2025/02/08 00:28:20 CLSRSC-330: Adding Clusterware entries to file 'oracle-ohasd.service' 2025/02/08 00:28:30 CLSRSC-594: Executing installation step 12 of 19: 'SetupTFA'. 2025/02/08 00:28:30 CLSRSC-594: Executing installation step 13 of 19: 'InstallAFD'. 2025/02/08 00:28:41 CLSRSC-594: Executing installation step 14 of 19: 'InstallACFS'. 2025/02/08 00:29:06 CLSRSC-594: Executing installation step 15 of 19: 'CheckFirstNode'. 2025/02/08 00:29:06 CLSRSC-594: Executing installation step 16 of 19: 'InitConfig'. CRS-4256: Updating the profile Successful addition of voting disk 964148aedfe64fdabf2fed25e30ac0a6. Successfully replaced voting disk group with +SYSTEMDG. CRS-4256: Updating the profile CRS-4266: Voting file(s) successfully replaced ## STATE File Universal Id File Name Disk group -- ----- ----------------- --------- --------- 1. ONLINE 964148aedfe64fdabf2fed25e30ac0a6 (AFD:ASM01_SYSTEMDG_04) [SYSTEMDG] Located 1 voting disk(s). 2025/02/08 00:30:59 CLSRSC-4002: Successfully installed Oracle Autonomous Health Framework (AHF). 2025/02/08 00:30:59 CLSRSC-594: Executing installation step 17 of 19: 'StartCluster'. 2025/02/08 00:31:31 CLSRSC-343: Successfully started Oracle Clusterware stack 2025/02/08 00:31:32 CLSRSC-594: Executing installation step 18 of 19: 'ConfigNode'. clscfg: EXISTING configuration version 23 detected. Successfully accumulated necessary OCR keys. Creating OCR keys for user 'root', privgrp 'root'.. Operation successful. 2025/02/08 00:32:19 CLSRSC-594: Executing installation step 19 of 19: 'PostConfig'. 2025/02/08 00:32:49 CLSRSC-325: Configure Oracle Grid Infrastructure for a Cluster ... succeeded [root@oel8n1-23a ~]# [root@oel8n1-23a ~]# cat /u01/app/grid/crsdata/oel8n1-23a/crsconfig/rootcrs_oel8n1-23a_2025-02-08_00-27-55AM.log |grep asmca 2025-02-08 00:29:38: s_run_as_user2 executing: /bin/su grid -c ' echo CLSRSC_START; /u01/app/23.7.0.0/grid/bin/asmca -silent -diskGroupName SYSTEMDG -diskList "/dev/sdb14" -redundancy EXTERNAL -diskString "/dev/sd*" -configureLocalASM -passwordFileLocation +SYSTEMDG/orapwASM -au_size 4 -param "_exadata_feature_on=true" ' [root@oel8n1-23a ~]#
If you want to have a clean installation of Oracle Grid 23ai (for lab and testing purpose while it is not released On-Prem), or set any parameter during the ASM creation, you can change the ASMCA_ARGS at file crsconfig_params.
Simple Steps
Resuming you need to do (in order):
- Install the Oracle Grid normally.
- Edit the file crsconfig_params to set the ASMCA_ARGS with the desired value.
- Call the root.sh.
Doing this in all nodes of the cluster, you will have clean installation.
Disclaimer: “The postings on this site are my own and don’t necessarily represent my actual employer positions, strategies, or opinions. The information here was edited to be useful for general purposes, and specific data and identifications were removed to allow reach the generic audience and to be useful for the community. Post protected by copyright.”