ORA-27106: system pages not available to allocate memory
July 14, 2025 Leave a comment
Oracle error ORA-27106: system pages not available to allocate memory can appear when starting up a database instance, particularly when HugePages are misconfigured or unavailable. This post walks through a real-world scenario where the error occurs, explains the underlying cause, and provides step-by-step resolution.
Problem
Attempting to start up the Oracle database instance results in the following error:
oracle@mk23ai-b:~$ sqlplus / as sysdba
SQL*Plus: Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems on Thu Jul 3 00:15:46 2025
Version 23.7.0.25.01
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORA-27106: system pages not available to allocate memory
Additional information: 6506
Additional information: 2
Additional information: 3
Cause
This error is most often seen on Linux platforms when HugePages are either:
- Not configured,
- Insufficiently allocated,
- and the database is explicitly configured to use only HugePages with:
use_large_pages='ONLY'
Troubleshooting
1) Identify the SPFILE path of the database
$ srvctl config database -db orclasm
Output:
Database unique name: orclasm
Database name: orclasm
Oracle home: /u01/app/oracle/product/23ai/dbhome_1
Oracle user: oracle
Spfile: +DATA/ORCLASM/PARAMETERFILE/spfile.274.1201294643
Password file:
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Disk Groups: DATA
Services:
OSDBA group:
OSOPER group:
Database instance: orclasm
2) Create a PFILE from the SPFILE
You can create a pfile from an spfile without starting the instance, which is particularly useful when the instance cannot be started.
$ export ORACLE_SID=orclasm
$ sqlplus / as sysdba
SQL> create pfile='/tmp/temppfile.ora' from spfile='+DATA/ORCLASM/PARAMETERFILE/spfile.274.1201294643';
File created.
SQL> exit
Now, inspect the HugePages configuration setting:
$ grep -i use_large_pages /tmp/temppfile.ora
*.use_large_pages='ONLY'
3) Check HugePages availability on the system
$ grep Huge /proc/meminfo
Example output (problem scenario):
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
HugePages are not configured on the system in this case. If it is configured for you, then the HugePages_Free value is insufficient.
Solution
1) Estimate required HugePages
You can estimate the needed HugePages based on total SGA:
π: HugePages = (SGA size in MB) / Hugepagesize
For example, if SGA is 24 GB (24576 MB) and Hugepagesize = 2 MB, then required
HugePages = 24576 / 2 = 12288
2) Configure HugePages at OS level
Edit /etc/sysctl.conf:
vm.nr_hugepages = 12288
Then apply:
# sysctl -p
3) Start the database in nomount to verify it is startable
$ sqlplus / as sysdba
SQL>startupnomount
4) Reboot and verify
Restart the system to ensure that everything is functioning properly after the reboot and double check the config:
$ grep Huge /proc/meminfo
Expected output:
HugePages_Total: 12288
HugePages_Free: 12288
Hugepagesize: 2048 kB
β οΈ Temporary Workaround (not recommended for production)
If you need to get the database up urgently and cannot configure HugePages immediately, change the parameter to:
use_large_pages='TRUE'
This allows fallback to regular memory pages. However, for best performance and to avoid fragmentation, itβs strongly recommended to configure HugePages correctly and use use_large_pages='ONLY' in production.