My system has 34GB RAM, however, I have set

memory_max_target = 3G
memory_target = 3G

Oracle memory parameters are specified using G (GB), M (MB) or K (KB)
...and I use AMM (Automatic Memory Management).

Even though that's the case when I check the current usage of my memory with

**free -m**

...it shows that around 33 GB of the total has been used. So I guess, Oracle also uses some of it (yes, I mean more than memory_max_target size, which is 3 GB).

So, my questions are:

  • Can Oracle use more memory than what we have set for memory_max_target?
  • Or is that a "hard" limit that Oracle never changes, even though the system has plenty of free memory?
  • " free -m it shows that around 33 GB of the total has been used" -- it's called caching – Philᵀᴹ Dec 26 '13 at 15:28

The output of free includes caches and buffers, and a lot of people fall into the trap of thinking that their memory is used while it is not. Visit this site for explanation: http://www.linuxatemyram.com/

On the other hand though, yes, Oracle can definitely use more memory than configured with the memory_max_target parameter. Parameters, such as memory_max_target, memory_max_size limit the size of the SGA only. Prior to 12c, PGA could not be limited, even though there is the hidden parameter _pga_max_size. That parameter limits the PGA size per session, but it does not account for all kinds of allocations, thus even 1 "rouge" session can eat up all the memory of the database server.

Starting with 12c, there is the parameter pga_aggregate_limit, which is a real hard limit for the PGA.



I realize this is an old thread, but in case someone else comes across this thread, I wanted to correct the first answer given, because it isn't accurate. The respondent said "Parameters, such as memory_max_target, memory_max_size limit the size of the SGA only". Not true. From Oracle's documentation:

The simplest way to manage instance memory is to allow the Oracle Database instance to automatically manage and tune it for you. To do so (on most platforms), you set only a target memory size initialization parameter (MEMORY_TARGET) and optionally a maximum memory size initialization parameter (MEMORY_MAX_TARGET). The instance then tunes to the target memory size, redistributing memory as needed between the system global area (SGA) and the instance program global area (instance PGA).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.