Question:
I need to understand how
the inmemory_size parameter woks in Oracle 12c. Can
you describe the inmemory_size parameter? How does
the inmemory_size parameter work in Oracle? How does
the inmemory_size server as an alternative to the KEEP pool?
Answer: The inmemory_size parameter
is used to define the RAM region available for caching
tables in Oracle 12c release 1 and beyond.
There are
other inmemory parameters:
SQL> show parameter inmemory
NAME
TYPE
VALUE
------------------------------------
--------------------------------- -----
inmemory_clause_default
string
inmemory_force
string
DEFAULT
inmemory_max_populate_servers
integer
1
inmemory_query
string
ENABLE
inmemory_size
big integer
256G
inmemory_trickle_repopulate_servers_ integer
1
percent
optimizer_inmemory_aware
boolean
TRUE
The inmemory_size parameter sets the size of the IM column
store in a database instance. The default for inmemory_size
=0, which means that IM column storage is not used. This
initialization parameter must be set to a non-zero value to
enable the IM column store. If the parameter is set to a
non-zero value, then the minimum setting is 100M.
In
a 12c multitenant environment, the setting for inmemory_size
in the root is the setting for the entire multitenant
container database (CDB).
The inmemory_size can also
be set in each pluggable database (PDB) to limit the maximum
size of the IM column store for each PDB. The sum of the PDB
values can be less than, equal to, or greater than the CDB
value. However, the CDB value is the maximum amount of
memory available in the IM column store for the entire CDB,
including the root and all of the PDBs.
Unless the
inmemory_size is specifically set for a PDB, the PDB
inherits the CDB value, which means that the PDB can use all
of the available IM column store for the CDB.