Understanding Oracle Database In-Memory

The IMCS is a static pool in the Oracle System Global Area (SGA) associated with the Oracle Database. It stores copies of objects in the memory in a columnar format. The IMCS does not replace the buffer cache but supplements it so that both the memory areas can store data in different formats.

The Oracle Database reads data from IMCS or the database buffer cache or both within the same query. The Online Transaction Processing (OLTP) queries fetch data from the buffer cache, where the data is formatted in rows. Analytical or reporting queries fetch data from the IMCS. This dual format:

  • Improves the performance of the database.

  • Allows more analytical queries to run with real-time transaction data without affecting the existing workload.

  • Makes the database active and simultaneously consistent in all transactions.

  • Structures the data optimized for rapid scans.

This example shows data in Oracle SGA stored in the IMCS in a column format and in the database buffer cache in a row format.

Dual Memory Formats in the Oracle Database

You can specify the amount of memory allocated for IMCS using the INMEMORY_SIZE parameter. Only objects specified as INMEMORY using DDL statements are populated into the IMCS.