I've just installed Oracle Database 12c Enterprise for Windows. The first thing I've noticed is it preallocates almost 10GB ram. How can I configure Oracle to only allocate and deallocate ram as needed to hold indexes and to perform normal database operations?
To be clear, I am happy for Oracle to use 10GB ram when it's actually needed, so I don't just want to set a lower value on SGA_TARGET and have Oracle struggle to work in the confines of a much smaller limit when a big index is created.
Edit: (answers to comments)
@a_horse_with_no_name I tried disabling pre_page_sga and restarting Oracle but I'm still seeing "Oracle RDBMS Kernel Executable" using up 10GB of RAM after the restart.
The RAM is used for offline scientific scripts whose performance scale according to the amount of free RAM. These scripts are run manually and they must be run on this server as it's the only high performance server we can afford right now.
This wasn't a problem on our old server, it just seems that Oracle 12c allocates 10GB RAM off the bat and never releases it.
Best Answer
You probably have
pre_page_sga
set totrue
. To disable this, change the value ofpre_page_sga
to false:then restart Oracle.