ExaCC: Start database with Small Pages after applying RU 19.27/23.8

With Release Update 19.27/23.8 (April 2025), Oracle removed the support to run a database with Small Pages on Engineered Systems. More details about this behavior change can be found in My Oracle Support Note Starting DBRU 19.27 and 23.8 Small Pages Are Not Allowed for RDBMS SGA In Exadata. (Doc ID 3081878.1).

In this blog post I will show a way to still use Small Pages on an ExaCC environment.

Issue

If the initialization parameter USE_LARGE_PAGES is set to FALSE, TRUE or AUTO the start of the database instance will fail with the following error, after the Release Update 19.27/23,.8 was applied (or the database was moved to 19.27/23.8 Oracle Home). The only allowed values are AUTO_ONLY and ONLY now.

2025-06-24T21:58:09.964954+02:00
ERROR: use_large_pages = FALSE is not a supported setting for database on Exadata
2025-06-24T21:58:09.965056+02:00
       : suggested values are AUTO_ONLY or ONLY

Workaround

The behavior change was implemented with Bug 37455042 – Disallow small pages to be used for sga for databases on exadata (Doc ID 37455042.8). This “fix” changes the default value of the underscore parameter _bug32498459_max_small_page_sga_size in 19c and _max_small_page_sga_size in 23ai from 34359738368 (32 GB) to 0. This parameter was introduced with 19.12 with Bug 32498459 – MANDATE LARGE PAGE ON EXADATA FOR SGA 32GB OR HIGHER (not public).

If you need to start your database instance with Small Pages because of missing Huge Pages and a memory scale-up is not possible, change the value of this parameter back to its former value.

# If all instances are down, create a Parameter File and set the parameter there
$> srvctl config database -db $ORACLE_UNQNAME | grep spfile
Spfile: +DATAC3/DB1/PARAMETERFILE/spfile.384.1152886777

$> sqlplus / as sysdba
SQL> CREATE PFILE = '/tmp/initDB.ora' FROM SPFILE = '+DATAC3/DB1/PARAMETERFILE/spfile.384.1152886777';
SQL> HOST echo "*._bug32498459_max_small_page_sga_size=34359738368" >> /tmp/initDB.ora
SQL> STARTUP NOMOUNT PFILE = '/tmp/initDB.ora';
SQL> CREATE SPFILE='+DATAC3' FROM PFILE = '/tmp/initDB.ora';
SQL> SHUTDOWN IMMEDIATE
SQL> EXIT

$> srvctl start database -db $ORACLE_UNQNAME

If one database is still running, you can change the parameter online.

SQL> ALTER SYSTEM SET "_bug32498459_max_small_page_sga_size"=34359738368 SCOPE = BOTH SID = '*';

Solution

As mentioned before, the main goal should be to use Huge Pages. To have more Huge Pages available on ExaCC, either the memory of the VM Cluster needs to be increased or the ratio between Small Pages and Huge Pages can be changed by running the following scripts as root on all nodes.

# Change the amount of Huge Pages to 70% of the available memory
$> /var/opt/oracle/ocde/assistants/exacc/hpages.pl 70

References

Leave a Reply

Your email address will not be published. Required fields are marked *