📖 Companion guide: Step-by-Step Analysing Oracle LMS Tool Output for Database Licensing
Read the Guide →Key Output Files at a Glance
| Output File | What It Contains | Licensing Relevance |
|---|---|---|
| LMS_OVERVIEW.csv | Host name, instance name, Oracle version & edition, CPU/core counts, cluster info | Critical — maps instances to processor licences, verifies edition |
| LMS_OPTIONS.csv | Status (TRUE/FALSE) and usage counts for each database option and management pack | Critical — directly identifies unlicensed feature usage |
| Installed_Products.txt | All Oracle components installed in the Oracle Home directory | High — reveals what's physically present and could be accidentally used |
| Feature Usage (DBA_FEATURE_USAGE_STATISTICS) | Granular sub-feature usage with detected counts, currently-used flags, first/last dates | High — forensic detail behind option flags; pinpoints what triggered usage |
| LMS_DBA_USERS.csv | Database user accounts with status (OPEN/LOCKED/EXPIRED) | High — ties into Named User Plus (NUP) licensing and minimum calculations |
| LMS_DETAIL.csv | Granular schema/PDB-level details | Medium — supplementary deep-dive data |
| LMS_V$LICENSE.csv | High-water mark concurrent session stats | Low — rarely a direct compliance driver today |
| LMS_V$SESSION.csv | Snapshot of active sessions at script runtime | Low — usage pattern indicator, not a direct licence metric |
LMS_OVERVIEW.csv — Environment & Instance Summary
The LMS_OVERVIEW.csv provides a high-level summary of each scanned Oracle database instance: server/host name, instance name/SID, Oracle version and edition, hardware/CPU info (cores, chip type), and environment metadata (OS, cluster name, virtualisation info).
What to Check
| Data Point | What to Verify | Compliance Impact |
|---|---|---|
| Edition (EE vs SE) | Confirm each instance matches the edition you've licensed | Using Enterprise Edition without EE licences is a major compliance issue |
| CPU core count | Cross-reference with purchased processor licences using Oracle's core factor table | Under-licensed processors = compliance gap |
| Cluster / RAC info | If clustered, RAC option must be licensed for each node | RAC is a separately licensed option — unlicensed RAC is a critical finding |
| All instances listed | Ensure every Oracle DB in your environment appears — forgotten test/dev DBs still need licensing | Missing instances = unaccounted compliance exposure |
Sample Interpretation
Interpretation: Enterprise Edition on 16 Intel cores requires 8 processor licences (core factor 0.5). Two-node RAC means the RAC option must also be licensed on those 8 processors. Verify you have at least 8 EE Database licences and 8 RAC option licences for this environment.
LMS_OPTIONS.csv — Database Options & Packs Usage
This is the most critical output file. It lists the status and usage of every separately licensable database option (Partitioning, Advanced Compression, Advanced Security, RAC, etc.) and management pack (Diagnostics Pack, Tuning Pack). Each row shows the option name, a used flag (TRUE/FALSE), detected usage count, and last usage date.
Sample Output & Interpretation
| Option | Result | What It Means | Action Required |
|---|---|---|---|
| Partitioning = TRUE (5 uses) | Non-compliant (if unlicensed) | Partitioned tables/indexes exist or existed. Even past usage counts. Oracle expects licences for the period it was used. | Verify if licensed. If not: purchase licences or remove partitioned objects and disable. |
| Adv. Compression = FALSE (0) | Compliant | No compression features requiring this option have been used. No licence needed. | None — but ensure DBAs don't enable compression features inadvertently. |
| Diagnostics Pack = TRUE (1 use) | Non-compliant (if unlicensed) | AWR, ADDM, or ASH accessed. Often triggered unknowingly via OEM or built-in health checks. | Disable pack via CONTROL_MANAGEMENT_PACK_ACCESS = NONE. Purchase if genuinely needed. |
| RAC = TRUE | Non-compliant (if unlicensed) | Database is configured for multi-node clustering. Must be licensed per processor per node. | Verify RAC option licences exist for all nodes. If not: break cluster or procure. |
📚 Related Reading
Installed_Products.txt — Inventory of Installed Components
This file lists all Oracle software components found in the Oracle Home directory — everything the installer placed on disk, regardless of whether it's been used. A typical Enterprise Edition install includes dozens of components: Partitioning, OLAP, Data Mining, Label Security, RAC binaries, and more.
⚠️ Risk: Installed ≠ Used, But...
- Oracle's policy: you only need to licence options when used, not just because they're installed
- But having them installed is risky — a DBA might inadvertently enable them
- If Installed_Products shows Enterprise Edition but you only licensed Standard Edition, that's a major compliance issue regardless of feature usage
✅ How to Use This File
- Verify no unexpected Oracle products are lurking on the server
- Confirm the edition matches your licence (EE vs SE)
- Cross-reference with LMS_OPTIONS: installed + used = must licence; installed + not used = monitor closely
- If you'll never use certain options, consider removing binaries to eliminate risk
Feature Usage — Granular Usage Statistics
This granular view (from DBA_FEATURE_USAGE_STATISTICS) breaks each option into sub-features with individual usage counts, currently-used flags, and first/last dates. It provides the forensic evidence behind the summary in LMS_OPTIONS.csv.
Sample Output & Interpretation
| Feature | Interpretation | Licence Implication |
|---|---|---|
| Partitioning (user) = 5 uses, FALSE currently | Partitioned objects were created but may have been dropped. Oracle still counts the historical usage. | Partitioning option required |
| Partitioning (system) = 3 uses, TRUE | Oracle internally used partitioning (e.g. partitioned indexes for XML). If user = 0 and only system = TRUE, Oracle may not enforce — nuanced point. | Usually not charged if user = 0, but confirm |
| Adv. Index Compression = 1 use, TRUE | An index was created with compression. Any sub-feature use triggers the full option licence requirement. | Advanced Compression option required |
| SecureFile Compression = 0 uses | Not all sub-features were used — but doesn't matter since another sub-feature was. One part used = full option needed. | Already covered above |
| TDE = 12 uses, TRUE | Encrypted columns or tablespaces exist. TDE is part of the Advanced Security Option (ASO). | ASO licence required — difficult to remediate since encryption may be a security requirement |
LMS_DBA_USERS.csv — Database Users & Named User Licensing
This file lists every database user account (username, account status, creation date). It ties directly into Oracle's Named User Plus (NUP) licensing metric.
NUP Minimum Calculation
| Scenario | Calculation | NUP Licences Required |
|---|---|---|
| 10 users on a 2-processor EE server | Minimum = 2 processors × 25 NUP = 50 | 50 (minimum overrides actual count) |
| 100 users on a 4-processor EE server | Minimum = 4 × 25 = 100; actual = 100 | 100 (actual meets minimum) |
| 120 users on a 4-processor EE server | Minimum = 100; actual = 120 (actual exceeds) | 120 (actual count governs) |
Common Red Flags in LMS Output
| Red Flag | What to Look For | Risk Level |
|---|---|---|
| Unlicensed options showing "Used" | Partitioning, Advanced Compression, Advanced Security, RAC, OLAP, Database Vault, Label Security with TRUE status | Critical |
| Management packs enabled | Diagnostics Pack or Tuning Pack = TRUE; AWR, ADDM, ASH, SQL Tuning Advisor usage | Critical |
| RAC on standby/test systems | RAC enabled on standby or test nodes without separate licences — Oracle requires RAC licensing on all nodes | Critical |
| High CPU on Standard Edition | SE2 on a machine exceeding 2 sockets or core limits — Oracle could insist on EE licensing | Critical |
| Unexpected products installed | GoldenGate, Spatial and Graph, or other products in Installed_Products.txt that you didn't licence | High |
| NUP minimums not met | Few users on large servers with EE — Oracle's per-processor minimums still apply regardless | High |
| Multiple features on same DB | Partitioning + TDE + RAC all TRUE on one instance — compounded exposure if unlicensed | Critical |
| Edition mismatch | Installed_Products shows Enterprise Edition but you only purchased Standard Edition | Critical |
| Virtualisation (VMware) | Server names indicating VMs — Oracle may demand licensing all physical hosts in the cluster | Critical |
Cross-Referencing LMS Output with Entitlements
Interpreting the data is only half the battle. The next step is comparing findings against your contracts and licences. Here's a systematic reconciliation process:
- Gather all Oracle licence documentation — contracts, ordering documents, support renewal summaries. Create a master spreadsheet: product name, quantities, edition, options/packs, CSI numbers, assigned servers.
- Map each database instance to a licence — using LMS_OVERVIEW.csv, verify every instance has a corresponding entitlement. Missing instances = unlicensed installations to address.
- Verify edition compliance — Standard Edition licences cannot cover Enterprise Edition deployments. If any SE database runs on hardware exceeding SE restrictions, it forces EE licensing.
- Reconcile options and packs — for every TRUE in LMS_OPTIONS.csv, check if that option is purchased for the same processor/NUP count as the base database. Build a matrix: each DB × each option, mark "Used Y/N" and "Licensed Y/N". Any cell with Used=Yes and Licensed=No is a gap.
- Match Named User counts — compare LMS_DBA_USERS.csv active accounts to NUP licence quantities. Ensure per-processor minimums (25 NUP per processor for EE) are met.
- Verify processor counts — use CPU core data from LMS_OVERVIEW.csv plus Oracle's core factor table to calculate required processor licences. Compare to purchased quantity.
- Check for ULA or bundle coverage — some features may be covered by Unlimited Licence Agreements or product bundles. Verify exact terms of what the ULA includes.
- Document all gaps — create a clear list of discrepancies: instances without licences, options used without licences, insufficient NUP counts. This becomes your action plan.
🎯 Compliance Matrix Template
For each database, create a row with columns for: Instance Name, Server, Edition, Cores, Processor Licences Required, Processor Licences Owned, each Option (Partitioning, RAC, Adv. Compression, Adv. Security, Diagnostics Pack, Tuning Pack, etc.) with Used/Licensed columns, NUP Count, NUP Minimum, NUP Owned. Any row with a shortfall is highlighted for action. This single document becomes your audit-readiness report card.
Actions for Unexpected or Unlicensed Usage
CONTROL_MANAGEMENT_PACK_ACCESS = NONE; unpartition tables if Partitioning is unlicensed; break RAC clusters on test systems. Stop the bleeding to prevent further non-compliant use.DBA_FEATURE_USAGE_STATISTICS again to confirm "currently_used" is now FALSE. Schedule periodic checks to catch reactivation.CONTROL_MANAGEMENT_PACK_ACCESS at instance level. Integrate licence checks into your change management process for any new Oracle deployment.Best Practices for Reviewing & Organising LMS Output
| Practice | Details |
|---|---|
| Review internally before submitting to Oracle | Always review LMS output internally (or with a trusted consultant) before handing it to Oracle. Find and fix issues proactively. |
| Use a structured analysis template | Develop a checklist/spreadsheet for each instance: edition, cores, each option (Used Y/N, Licensed Y/N), user counts, notes. This becomes your internal audit report. |
| Run scripts periodically, not just at audit time | Schedule quarterly or annual LMS runs internally to catch compliance gaps early — not just when Oracle requests it. |
| Keep historical records | Maintain a repository of past LMS outputs to track trends: if Partitioning wasn't used last year but is this year, something changed — investigate. |
| Cross-reference with CMDB | Ensure every Oracle database server had the script run. Leaving a server out (intentionally or accidentally) is disastrous if Oracle finds it via other means. |
| Never edit raw output files | Editing files sent to Oracle could be seen as tampering. Manipulate copies for internal analysis only. |
| Leverage SAM tools | Tools like Snow, Flexera, or Licenseware can import LMS output and produce digestible compliance reports. Always sanity-check tool results manually. |
| Prepare an audit-ready packet | Summary report, DB-to-licence mapping table, remediation documentation, copies of licence documents. Be ready to produce an organised explanation at any time. |
| Translate for executives | Leadership doesn't need CSV details — they need "are we compliant?" and "what's the financial exposure?" Translate technical findings into business terms. |
| Implement preventive controls | DBAs run DBA_FEATURE_USAGE_STATISTICS monthly; restrict privileges for licensed features; use Oracle's built-in parameters to enforce compliance by configuration. |
How Redress Compliance Helps with Oracle Audits
Need Help Interpreting Oracle LMS Output?
Oracle's LMS Database script output can be overwhelming — hundreds of queries, dozens of files, and complex licensing rules that determine whether a "TRUE" flag costs you nothing or millions. Our Oracle licensing experts review LMS output for enterprises worldwide, identifying compliance gaps, challenging false positives, and building defensible positions before you submit data to Oracle. We've helped clients save millions by catching and remediating issues proactively. Don't submit your LMS output without expert review.