ORA-27102: out of memory

I got ” ORA-27102: out of memory ”  error in Oracle database.

 

ORA-27102: out of memory

 

Details of error are as follows.

ORA-27102: out of memory

Cause: Out of memory

Action: Consult the trace file for details

When trying to increase the SGA to approach half available RAM with an Oracle 64-bit version 
on a Linux 64-bit operating system, even though SHMMAX is set to match half the amount of RAM,
 you get the following error when trying to start the instance:

SQL> startup nomount
ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device

 

 

out of memory

This ORA-27102 errors are related with the Out of memory.

shmall is too small, most likely is set to the default setting of 2097152

$ cat /proc/sys/kernel/shmall
2097152

 

SHMALL is the total amount of shared memory, in pages, that the system can use at one time.

 

To solve this error, Set SHMALL equal to the sum of all the SGAs on the system, divided by the page size.

The page size can be determined using the following command:

 

$ getconf PAGE_SIZE
4096

For example, if the sum of all the SGAs on the system is 16Gb and the result of  ‘$ getconf PAGE_SIZE’ is 4096 (4Kb) then set shmall to 4194304 pages

As the root user set the SHMALL to 4194304 in the /etc/sysctl.conf file:

 

kernel.shmall = 4194304

then run the following command:

$ sysctl -p
$ cat /proc/sys/kernel/shmall
4194304

NOTE:
The above command loads the new value and a reboot is not necessary.

Switch back to the oracle user and retry the startup command.

Modifying /etc/sysctl.conf is a permanent workaround (applies at boot time). If for some reason you DO NOT want to change the system wide configuration, you can do it on the fly by directly changing the kernel pseudo FS AKA procfs.

e.g. echo "4194304" > /proc/sys/kernel/shmall

Using HUGEPAGES does not alter the calculation for configuring shmall.

 

Or you can remove SGA_* parameters from your pfile and set MEMORY_MAX_TARGET=500M MEMORY_TARGET=500M , then save pfile and restart database.

 

SQL> startup nomount pfile='/home/oracle/pfile.ora';
SQL> alter database mount;
SQL> alter database open;

 

 

Do you want to learn Oracle Database for Beginners, then read the following articles.

Oracle Tutorial | Oracle Database Tutorials for Beginners ( Junior Oracle DBA )

 

About Mehmet Salih Deveci

I am Founder of SysDBASoft IT and IT Tutorial and Certified Expert about Oracle & SQL Server database, Goldengate, Exadata Machine, Oracle Database Appliance administrator with 10+years experience.I have OCA, OCP, OCE RAC Expert Certificates I have worked 100+ Banking, Insurance, Finance, Telco and etc. clients as a Consultant, Insource or Outsource.I have done 200+ Operations in this clients such as Exadata Installation & PoC & Migration & Upgrade, Oracle & SQL Server Database Upgrade, Oracle RAC Installation, SQL Server AlwaysOn Installation, Database Migration, Disaster Recovery, Backup Restore, Performance Tuning, Periodic Healthchecks.I have done 2000+ Table replication with Goldengate or SQL Server Replication tool for DWH Databases in many clients.If you need Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS Consultancy and Training you can send my email adress [email protected].-                                                                                                                                                                                                                                                 -Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS ve linux Danışmanlık ve Eğitim için  [email protected] a mail atabilirsiniz.

Leave a Reply

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