[Copied from ServerFault to what seems like a better-suited forum]
Our Oracle server (version 12c) is running on a RedHat-6.7 server with 128GB of RAM.
The current size of the only database on it is only about 60GB.
Yet, we see plenty of disk reads -- on the device where the database is stored -- in the
iostat-output (shown in blue). There are some writes (shown in yellow) too, of course:
While the writes to permanent storage make sense because we do make modifications to the data some times, the reads do not -- the entire DB can fit in memory twice over... Indeed, we should be able to store it on a USB-stick and still have good read-times -- comparable to those of Redis, for example.
What parts of the Oracle-configuration should we examine and tune to make the server use all available RAM?
We will look at the INMEMORY settings. But it would seem, the
inmemory_* parameters come into play only, when the server has to (because of RAM shortage) decide, what to drop from memory to be re-read back later. In our case nothing should ever be dropped from memory, because there is room for everything. And yet some things are, evidently, being (re)read again and again...
Update: the output of
free on the server currently reads:
total used free shared buffers cached
Mem: 132044132 99974992 32069140 89131408 292508 93060984
-/+ buffers/cache: 6621500 125422632
Swap: 33554428 0 33554428
The processes owned by the
oracle-user all seem to share the above-mentioned 85GB memory piece. Maybe, we really are just constraining the server ourselves -- the 30GB unused memory seems to suggest that. How do we tell the server to use more?