The Oracle In-Memory option is one of the easiest paid options to switch on by accident and one of the hardest to argue your way out of. A DBA testing query performance sets a single initialization parameter — INMEMORY_SIZE — and the database silently allocates an In-Memory Column Store. That one parameter, set above zero, is enough to create a back-license claim across every processor running the database. Oracle's LMS audit scripts read the parameter and the feature-usage history in seconds. This guide explains exactly what triggers the Oracle In-Memory option license, how Oracle detects it, what it costs, and how to defend or right-size the exposure.
Short answer: Oracle Database In-Memory is a separately licensed Enterprise Edition option that triggers the moment the INMEMORY_SIZE parameter is set above zero — even if no table is ever populated into memory. It is licensed per processor on the same footprint as the database, so a 32-core Intel server means 16 processor licenses, roughly $368,000 at 2026 list price.
Short answer: Oracle Database In-Memory is a separately licensed Enterprise Edition option that maintains a columnar copy of tables in memory — the In-Memory Column Store — to accelerate analytic queries. It is not part of the base Enterprise Edition license, and using it requires the option on every processor running the database.
Oracle Database In-Memory, introduced in Oracle Database 12.1.0.2, stores selected tables, partitions, and materialized views in a compressed columnar format in a dedicated region of the System Global Area (SGA) called the In-Memory Column Store. Queries that scan large volumes of data run dramatically faster against the columnar copy, because the engine can skip irrelevant columns and use SIMD vector processing. It is a performance option aimed at analytics and reporting workloads running on the same database as transactional data.
The licensing trap is structural. Unlike a feature that requires a deliberate, visible action, In-Memory is armed by a single initialization parameter. A DBA evaluating whether In-Memory would help a slow report sets INMEMORY_SIZE, restarts the instance, and the column store is allocated. Nothing warns them that the option is unlicensed, and the database does not refuse to start. Oracle's playbook relies on this: the easier an option is to enable without thinking, the larger the eventual back-license claim.
The parameter is the trigger, not the usage: You do not have to populate a single table into the column store to owe the license. Setting INMEMORY_SIZE above zero is recorded as feature usage in its own right, and Oracle treats the allocation as use of the option.
Short answer: The In-Memory option license triggers when INMEMORY_SIZE is set above zero, when any object is given the INMEMORY attribute, or when In-Memory-specific features such as In-Memory aggregation or expressions are used. The parameter setting alone is sufficient, regardless of whether data is populated.
The option is licensed per processor on the same metric and footprint as the underlying Enterprise Edition database. The following actions each create a license requirement, and several of them happen without any explicit decision to "use In-Memory":
Licensing follows the Oracle Core Factor Table: physical cores multiplied by the applicable core factor (typically 0.5 on x86) give the processor count to license. There is no minimum size threshold above the Base Level and no grace period. Our Oracle compliance review measures which databases have a non-zero INMEMORY_SIZE before Oracle's LMS team does.
Short answer: Partly. From Oracle Database 19c, a Base Level permits up to 16GB of In-Memory Column Store without the option license — but only if INMEMORY_FORCE is set to BASE_LEVEL. If that guardrail is not configured and INMEMORY_SIZE exceeds zero, full option licensing applies, and the Base Level is not available on Engineered Systems.
Oracle introduced the In-Memory Base Level in 19c to let customers try In-Memory at small scale without buying the option. The Base Level is genuinely free, but it comes with strict guardrails that are easy to miss. INMEMORY_FORCE must be set to BASE_LEVEL, and INMEMORY_SIZE must not exceed 16GB. If a DBA sets INMEMORY_SIZE to, say, 32GB without setting INMEMORY_FORCE to BASE_LEVEL, the database is using the full option and the Base Level protection does not apply. The 16GB limit is also per-instance, and the Base Level is explicitly excluded on Oracle Engineered Systems such as Exadata.
In audit practice, the Base Level is both a defense and a trap. It is a defense where a customer genuinely configured INMEMORY_FORCE = BASE_LEVEL and stayed under 16GB — in that case no option license is owed and the claim should be rejected. It is a trap where a customer assumed "under 16GB means free" without setting the parameter, because Oracle will treat the unguarded allocation as full option usage. Establishing exactly how the parameters were configured is central to defending an In-Memory claim — see our Oracle audit defense guide for how parameter-level evidence is used.
Short answer: Oracle Database In-Memory lists at approximately $23,000 per processor or $460 per Named User Plus, plus 22% annual support, under the 2026 Oracle Technology Price List. Because it is processor-licensed, the cost scales with server core count, not with how much data you actually place in memory.
The list price is the basis Oracle uses for back-license settlements, and it is rarely discounted in an audit context. The table below shows In-Memory cost at list across common Intel x86 deployments using the 0.5 core factor, including the multi-year back-license claim Oracle constructs once it establishes a first-use date from the feature-usage history.
| Deployment | Processors Licensed | Annual List Cost | 3-Year Back-License Claim |
|---|---|---|---|
| Single EE host, 16 cores | 8 (16 × 0.5) | $184,000 | ~$552,000 |
| Analytics host, 32 cores | 16 (32 × 0.5) | $368,000 | ~$1.1M |
| Enterprise estate, 128 cores | 64 (128 × 0.5) | $1.47M | ~$4.4M |
Oracle applies a 22% annual support uplift on top of the base back-license value and calculates the claim from the first date In-Memory was used. In our engagements, roughly half of In-Memory option claims trace to a non-production database where a DBA tested the feature and never reset INMEMORY_SIZE to zero (Oracle Licensing Experts benchmark, 2026). That pattern — a test that was never unwound — is frequently the strongest basis for narrowing scope and challenging the back-license period. Our Oracle audit defense service works the parameter and feature-usage evidence to reduce these claims.
Short answer: Oracle LMS scripts read V$OPTION, the INMEMORY_SIZE value from V$PARAMETER, V$IM_SEGMENTS for populated objects, and DBA_FEATURE_USAGE_STATISTICS for first-use and last-use dates. Because the parameter setting itself is recorded, In-Memory configured and never populated still appears in the audit trail.
Detection is more certain than for almost any other option, because the trigger is a visible parameter rather than buried usage. The USMM and Review Lite scripts capture In-Memory from several sources and correlate them. The representative queries below show what the LMS team runs:
-- In-Memory Column Store size (the primary trigger)
SELECT name, value FROM v$parameter
WHERE name IN ('inmemory_size','inmemory_force');
-- Objects currently populated in memory
SELECT owner, segment_name, segment_type, bytes_in_mem
FROM v$im_segments;
-- Objects marked INMEMORY at the table level
SELECT owner, table_name, inmemory, inmemory_priority
FROM dba_tables WHERE inmemory = 'ENABLED';
-- Historical feature activation with first-use date
SELECT name, detected_usages, first_usage_date, last_usage_date
FROM dba_feature_usage_statistics
WHERE name LIKE 'In-Memory%';
The decisive view is DBA_FEATURE_USAGE_STATISTICS, populated by DBMS_FEATURE_USAGE_STATISTICS. It records the first and last dates In-Memory was used and is not reset by setting INMEMORY_SIZE back to zero. This is why post-audit remediation reduces ongoing liability but cannot erase the historical record. V$OPTION additionally reports whether In-Memory is installed and enabled at the instance level, independent of segment-level population.
Our forensic Oracle compliance review checks every database for In-Memory parameter settings, populated segments and feature-usage history, and calculates exact exposure — before Oracle's LMS team does. Former Oracle insiders, 100% buyer-side.
Based on our forensic compliance reviews across hundreds of enterprise estates, the following scenarios are the most common sources of undiscovered In-Memory exposure.
Abandoned proof-of-concept testing: The classic case. A DBA enables In-Memory on a development or staging database to benchmark a slow report, sees the improvement, files it away as "something to consider," and never resets INMEMORY_SIZE. Months later the parameter is still non-zero and the feature-usage history is accumulating.
Templated database builds: Where a gold-image or DBCA template was created with INMEMORY_SIZE set, every database provisioned from that template inherits the parameter. A single misconfigured template can propagate In-Memory exposure across dozens of databases without anyone deciding to use the feature.
Cloned production-to-test refreshes: When a production database that uses In-Memory is cloned to build test or QA copies, the parameter and the INMEMORY object attributes travel with it. Non-production environments require the option on the same basis as production.
Cloud and Exadata migrations: In-Memory is included differently across Oracle Cloud Infrastructure and Exadata. Workloads migrated from OCI or Exadata to standard on-premises Enterprise Edition servers carry the In-Memory dependency with them — a trap our cloud advisory team sees repeatedly, and the Base Level is unavailable on Engineered Systems.
Mergers and acquisitions: Acquired databases arrive with unknown parameter histories. Oracle's LMS team targets recently acquired companies, anticipating unlicensed options. Quantifying In-Memory exposure before close is part of any disciplined Oracle database licensing due-diligence process.
If a compliance review reveals In-Memory exposure and buying the option is not the preferred outcome, remediation is technically simple but the evidence handling is what matters. The right path depends on whether an audit letter has already arrived.
The evidence question is decisive. Oracle's scripts measure current state, but DBA_FEATURE_USAGE_STATISTICS retains the historical first-use date — so remediation before any audit measurement eliminates current exposure, while remediation after an audit letter reduces future liability without erasing the historical claim. If you genuinely need In-Memory at scale, the option is often worth licensing within an Oracle contract negotiation or ULA, where the incremental cost of bundling In-Memory is far lower than a standalone back-license settlement. Our case studies document multi-million-dollar reductions achieved by combining remediation with negotiation leverage, and our license optimization service right-sizes the option footprint across the estate.
Comprehensive guide to all Oracle Database options, metrics, and compliance traps — written by former Oracle insiders for enterprise IT and procurement teams.
No. Oracle Database In-Memory is a separately licensed Enterprise Edition option and is not included in the base Enterprise Edition license. The option is required the moment the INMEMORY_SIZE initialization parameter is set above zero, regardless of whether any table is actually populated into the In-Memory Column Store.
The license triggers when INMEMORY_SIZE is set to any value greater than zero. Setting the parameter allocates the In-Memory Column Store in the SGA and is recorded as feature usage even if no objects are marked INMEMORY. Marking a table, partition, or materialized view with the INMEMORY attribute also triggers the option.
Oracle Database In-Memory lists at approximately $23,000 per processor or $460 per Named User Plus, plus 22% annual support, under the 2026 Oracle Technology Price List. On an Intel server with a 0.5 core factor, a 32-core host requires 16 processor licenses, or roughly $368,000 at list before any negotiated discount.
Oracle LMS scripts read V$OPTION, the INMEMORY_SIZE parameter from V$PARAMETER, V$IM_SEGMENTS for populated objects, and DBA_FEATURE_USAGE_STATISTICS, which records first and last use dates. Because the parameter setting itself is recorded, In-Memory configured and never used can still appear in the audit trail.
Oracle introduced a Base Level in 19c that permits up to 16GB of column store without the option, but it requires INMEMORY_FORCE to be set to BASE_LEVEL. If that parameter is not set and INMEMORY_SIZE exceeds zero, full option licensing applies. The Base Level is also unavailable on Engineered Systems such as Exadata.
Setting INMEMORY_SIZE back to zero and removing INMEMORY attributes stops current usage, but DBA_FEATURE_USAGE_STATISTICS retains the historical first-use date. Remediation before any audit measurement eliminates current exposure; remediation after an audit letter reduces future liability but does not erase the back-license claim for the period the option was active.
Weekly briefing on Oracle audit tactics, license changes, and negotiation intelligence — read by 2,000+ Oracle stakeholders at Fortune 500 enterprises.
Independent. Buyer-side. Not affiliated with Oracle Corporation.
Oracle's LMS team reads INMEMORY_SIZE and the feature-usage history in seconds. A forensic compliance review identifies every In-Memory dependency, calculates exact exposure, and gives you the evidence base to defend, remediate, or negotiate — before Oracle arrives.
Not affiliated with Oracle Corporation. 100% independent, buyer-side advisory.