Database In-Memory features a highly optimized in-memory column store (IM column store) that functions with the existing row formatted buffer cache. The main purpose of the IM column store is to improve performance of column-oriented data accesses made by analytics operations.
You could think of this as having a conventional index (for analytics) for every column in a table. However, it differs from the regular index, requiring no logging, or any writes to the database. If your application performs a great deal of analytics, then you may benefit from implementing this memory feature.
The In-Memory feature requires an extra license from Oracle to use. However, starting with Oracle 21c, this feature is available at no extra cost when implemented in a limited “base-level” fashion. Base-level In-Memory is instantiated by setting INMEMORY_FORCE to BASE_LEVEL.
This base level allows you to experiment with the In-Memory feature without purchasing the In-Memory option. When the base level is enabled, the IM column store is limited to 16GB for a container database. Additionally,
in the base level, the compression level for In-Memory objects is set to QUERY LOW automatically. The Oracle Database Licensing Information User Manual has details on which In-Memory features are available for different editions and services.
Since In-Memory is an extra cost option, and there are a great deal of features available, I’m going to point you to the Oracle Database In-Memory Guide (281 pages as of the writing of this book) for more details on this feature. It is beyond the scope of this book to describe all of the features and implementation details.
Note The INMEMORY_SIZE can be set in a pluggable database to limit the maximum size of the in-memory column store for that pluggable database.
The sum of the pluggable database values does not have to equal the container database setting (the sum of the pluggable database settings can be greater than the container database setting).