We have an issue in memory allocation in Oracle installed in Linux environment. When I try to generate AWR or connect to TOAD or anything of that sort (something additional) we were getting the following error.
ORA-01034: ORACLE not available
ORA-27102: out of memory
Linux-x86_64 Error: 12: Cannot allocate memory
Additional information: 2663
Additional information: 749043713
Additional information: 1677721600
Here are more details on the history of what is done by us and when the error is coming.
1. Server version: Red Hat Enterprise Linux Server release 7.1 (Maipo)
2. The Linux server has 46GB RAM
3. In the beginning the file system /dev/shm was configured for only 24GB and I changed it to 40G (using the command mount -o remount,size=40G /dev/shm).
4. The MEMORY_TARGET is set to 32G.
5. I start the instance and bring up the application server.
6. We then with help of Unix Sys Admin understood that Oracle is somehow not taking from cache and only from Available memory and so tried to free up the cache and restarted the instance.
7. The issue has become less frequent but now the issue occurred during our application process runs(only once it happened).
I have few more queries and it would be great if you could educate me on this.
1. When I set MEMORY_TARGET to 32G, my assumption is that when instance is started Oracle tries to capture the entire 32G from shared memory at OS level.
2. However when I see free command or df –h command after instance is started it shows that only 17G is used. Is that the expected behavior because of Oracle AMM?
3. If yes, then how does it ensure that the remaining 15G that it hasn’t yet used be available to it only? Why it doesn’t occupy the entire 32G in the first time itself?
4. Is it a bug that Oracle is not able to extend the remaining memory from buffer/cache also and it is only able to take from Available memory? I assume once instance is shutdown, the memory that is released by Oracle is kept as “Available” and perhaps portion of it in “buffer/cache” also. And so the more number of times I restart the instance, the more memory goes away into buffer/cache.