ORA-27106: system pages not available to allocate memory

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>
startup nomount

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.

Unknown's avatarAbout Mariami Kupatadze
Oracle Certified Master Linkedin: https://www.linkedin.com/in/mariami-kupatadze-01074722/

Leave a Reply