The In-Memory Option: Default Enabled, Easily Triggered, Frequently Missed
Oracle Database In-Memory Column Store is a licensable option within Oracle Database Enterprise Edition that accelerates analytical queries by storing column data in memory in compressed format. At list price, the option costs $23,000 per processor annually, which is approximately 50 percent of the $47,500 base cost of Enterprise Edition itself. But the critical licensing risk is not the price: it is that the In-Memory Column Store is enabled by default in all Oracle Database Enterprise Edition installations, and a single SQL command automatically triggers licensable usage with no built-in safeguard to prevent accidental activation.
In 2018, Redress advisors conducted detailed analysis of In-Memory Column Store licensing across 75 enterprise customers globally. Of those 75 deployments, 51 were using In-Memory features in production systems but had never purchased In-Memory Option licenses. Oracle's audit scripts, which run automatically during customer audit reviews, detect In-Memory usage instantly by scanning database data dictionary tables for evidence of compressed column storage. There is no gray area. Either you have purchased the In-Memory Option license or you have not, and Oracle's technical team can determine your compliance status within seconds of running a diagnostic script.
The feature's dangerous architecture stems from a design choice Oracle made in Database 12c: rather than require explicit license purchase before enabling In-Memory, Oracle ships the feature as part of the base Enterprise Edition install, enabled by default, and only triggers licensing obligations when a table is marked for in-memory storage. This creates a perfect compliance trap. Developers, without licensing knowledge, can inadvertently trigger In-Memory usage through a single CREATE TABLE statement or ALTER TABLE command. The licensing clock begins immediately. Neither the developer nor the database administrator may realize that a licensable feature has been activated.
Kevin Closson, Oracle's principal product manager for In-Memory technology, confirmed in public forums that there is currently no built-in mechanism to prevent accidental In-Memory usage: "There is yet no way I know to prevent accidental use." The burden of compliance falls entirely on the enterprise to implement manual controls, audit processes, and developer education programs to prevent unauthorized feature activation.
Audit Your In-Memory Licensing Position
Our Oracle licensing advisors will examine your database data dictionary for any evidence of In-Memory Column Store usage, determine whether you hold valid Option licenses for all databases using the feature, calculate the compliance gap if present, and prepare negotiation strategies with Oracle.
Schedule Compliance Review →How the Feature Gets Triggered: SQL Commands and Silent Activation
In-Memory Column Store usage is triggered by a single SQL command: CREATE TABLE ... INMEMORY or ALTER TABLE ... INMEMORY. The INMEMORY clause tells Oracle to compress the table's column data and store it in the In-Memory Column Store buffer. Once a table is marked as INMEMORY, Oracle automatically begins populating that table into the in-memory store the next time the table is scanned or accessed. The feature activates silently without user confirmation, warning message, or licensing validation.
Most accidental In-Memory activations occur in development and test environments first. A developer, reading Oracle Database documentation or following a troubleshooting guide, sees a suggestion to add the INMEMORY clause to improve query performance and implements the change without consulting the database licensing team. The development database now triggers In-Memory licensing. When that development code eventually migrates to production, the production database is now also marked for In-Memory usage. At that point, the enterprise has two databases incurring In-Memory Option licensing obligations.
A second common scenario involves inherited application code. Legacy applications developed years ago, before the In-Memory option was introduced, may be modified by new development teams who add the INMEMORY clause to optimize slow queries. The original developers never documented that the application was designed without In-Memory licensing. The new developers, unaware of licensing implications, implement the feature. Six months later, during an Oracle audit, the compliance gap surfaces.
A third scenario involves consultants and systems integrators. Database consultants hired to optimize performance may recommend In-Memory Column Store as a solution to slow analytical queries, implement the feature in test environments without explicitly confirming licensing availability, and then leave the project. The enterprise is then left with a database marked for In-Memory usage and a licensing obligation it never explicitly purchased.
Detection and Audit Risk: Oracle's Automated Scanning
Oracle detects In-Memory Column Store usage through its audit scripts, which are run during formal audit reviews and also through Oracle Management Cloud service if you are a subscriber. The detection mechanism is simple: Oracle queries the DBA_TABLES and DBA_TAB_PARTITIONS data dictionary views and looks for any tables with the INMEMORY column attribute set to YES. If Oracle finds even a single INMEMORY table in production, Oracle considers the entire database licensed for In-Memory usage and will pursue licensing fees for the entire processor count of the server running that database.
For example, if you have one INMEMORY table marked in a database running on an 8-core server, Oracle will claim that all 8 processors are subject to In-Memory Option licensing charges. You cannot reduce the licensing obligation by claiming you only use In-Memory features on 5 percent of your tables. Under Oracle's licensing rules, activation of the feature on even one table triggers licensing obligations for all processor cores.
During audit response, Oracle provides a listing of all tables with INMEMORY enabled and demands retroactive license fees going back to the date of first activation. Redress advisors have negotiated settlements ranging from $85,000 to $650,000 in cases where In-Memory was activated without corresponding license purchases. The variation depends on how long the feature was in use, how many processors were involved, and whether the activation was in a single database or across multiple systems.
The best defense against audit exposure is preventative: disable In-Memory features across all databases where it is not being used, maintain documentation of which databases require the option, cross reference that documentation to actual license ownership, and educate development teams on the licensing triggers. This approach costs money in planning time but saves far more in potential audit settlements.
Calculate Your In-Memory Exposure and Licensing Requirements
Use our interactive calculator to model In-Memory Option costs across your processor core inventory, estimate multi-year licensing fees including support, and compare the cost of the option to alternative performance optimization approaches.
Access the Calculator →Support Costs and the True Cost of In-Memory Licensing
The $23,000 per processor list price for In-Memory Option is an annual charge. Support costs, which are mandatory, add another 22 percent annually. On an 8-core server, the annual cost of In-Memory Option licensing is therefore $184,000 base plus $40,480 in support, for a total of $224,480 per year. Over a three-year technology refresh cycle, the cost is $673,440.
For enterprises with multiple database servers, In-Memory licensing costs accumulate rapidly. A firm with 12 databases running on 8-core servers will incur annual licensing and support charges of $2,693,760 for In-Memory capabilities. This assumes the feature is used intentionally and provides measurable business value. When the feature is accidentally activated, that $2.7 million annual expense is pure waste.
Support costs also lock enterprises into Oracle's support contract for the duration of the licensing agreement. You cannot reduce annual fees by accepting a lower support tier or deferring updates. The 22 percent annual support cost is mandatory and non-negotiable under standard Oracle licensing terms.
Some enterprises attempt to reduce In-Memory costs by purchasing the option on a subset of servers and then consolidating databases onto those licensed servers. This approach can work if the licensing team controls database placement. However, consolidation often triggers other licensing issues. Consolidating onto licensed servers may create processor core count mismatches between your purchase and your actual deployment, or it may trigger ULA (Unlimited License Agreement) renegotiation if you are under a ULA with processor-based caps.
Accidental Usage vs Intentional Deployment: Assessment and Recovery
The first step in controlling In-Memory licensing is determining whether your organization is using the feature intentionally or accidentally. Accidental usage is far more common than enterprises realize. To assess your position, conduct a data dictionary scan across all Enterprise Edition databases and identify every table with INMEMORY enabled. If those tables align to specific business-critical functions where sub-millisecond query performance is genuinely required, the activation may be intentional and the licensing purchase justified. If the INMEMORY tables were created during development, testing, or performance tuning experiments that no one still remembers, the activation is almost certainly accidental.
If accidental, the recovery path depends on whether your databases are in production. For development and test databases, simply remove the INMEMORY clause from all tables using ALTER TABLE ... NO INMEMORY, then drop the In-Memory Column Store buffer pool. Document the changes and retain records of the remediation. If audited, this documentation demonstrates good faith compliance correction and significantly reduces Oracle's leverage in demanding retroactive fees.
For production databases where In-Memory was accidentally activated, the recovery is more complex. Removing INMEMORY from live production tables can disrupt application performance if code was written assuming In-Memory acceleration. In these cases, consider purchasing In-Memory Option licenses retroactively to cover the period of accidental use, then implement a prospective policy requiring explicit approval before any new INMEMORY activations. This approach costs money but eliminates audit exposure and provides a clean licensing record going forward.
A third option is to migrate workloads from databases with accidental In-Memory usage to alternate systems or cloud infrastructure where licensing models differ. This is a significant undertaking but may be justified if the accidental activation spans multiple large servers. Some enterprises have found it more cost effective to migrate application workloads to lower-cost Oracle Database Standard Edition 2 on different hardware, then disable Enterprise Edition and In-Memory on the original servers, than to pay perpetual In-Memory license fees on expensive multi-core systems.
Prevention Strategy and Developer Education
The most cost effective In-Memory licensing control is prevention. Implement a policy requiring that the CREATE TABLE and ALTER TABLE commands can only be executed by the database administrator after explicit approval from the licensing team. This prevents developers from unilaterally activating In-Memory features.
Educate development teams about the licensing implications of In-Memory Column Store. Many developers believe the feature is free because it ships with Enterprise Edition. Make clear, in writing and in development documentation, that activating INMEMORY clauses triggers licensing obligations and requires prior approval. Include this requirement in your database administration standards document and your application development guidelines.
Implement automated scanning in your data dictionary management tools to flag any INMEMORY activations. Tools like Toad, SQL Developer, and third-party database governance platforms can be configured to alert when new INMEMORY tables are created or modified. Set up a weekly or daily automated job that queries your data dictionary and reports any tables with INMEMORY enabled, directing reports to the licensing team for validation.
For cloud deployments on Oracle Cloud Infrastructure, Oracle provides the In-Memory Advisor tool in Oracle Database 23ai and later versions. This tool recommends which tables and partitions would benefit most from In-Memory Column Store based on actual query workload patterns. However, the Advisor only provides recommendations; it does not activate In-Memory automatically. Always review Advisor recommendations against your actual licensing inventory before implementation.
Consider whether Oracle Diagnostics and Tuning Packs might provide equivalent performance benefits without additional option licensing. Tuning Pack includes SQL profile tuning, automatic index recommendations, and real-time performance optimization that can achieve significant performance gains without the In-Memory Column Store cost. For some workloads, Tuning Pack recommendations are sufficient to meet performance SLAs while avoiding the In-Memory licensing cost.
Confirm Your In-Memory Licensing Compliance Position
Whether you suspect accidental In-Memory activation or want to validate your existing licensing is correct, Redress advisors can review your data dictionary, identify all In-Memory usage, cross-reference to your actual license ownership, and advise on remediation if gaps exist. Most audits uncover unexpected In-Memory activations. Get ahead of Oracle's audit teams.