For an Oracle database running on a Linux system, the best practice is to use hugepage. You might see this error when starting up an Oracle database on a Linux system with hugepage configured. That is usually because the database isn’t shutdown cleanly and memory isn’t released.
When you see this error, the simplest way to solve it is to reboot the machine. However, there might be times you don’t want to restart or you don’t have the root previledge to do so. Fortunately there is another way to get hugepages released.
First, check if there are still Oracle processes running and if so, kill them.
ps -ef|grep ora
before/after you kill it, check number of free hugepages with the following command:
grep -i huge /proc/meminfo
Second, use linux commands “ipcs” and “ipcrm” to check IPC resource information and remove Oracle semaphore if there are any.
List shared memory segments, message queues, semaphore arrays
ipcs
Remove shared memory segmentd using shmid:
ipcrm -m <shmid>
Then check number of freepages again. If you see number of Free is close to number of Total, you are good to start Oracle again.
[oracle@JOETESTDB /opt/oracle/admin]$grep -i hugepage /proc/meminfo
AnonHugePages: 876544 kB
HugePages_Total: 46592
HugePages_Free: 46592
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB