Database code and query output displayed on a developer screen
Oracle Compliance Scripts

Oracle license compliance scripts. Read the output before Oracle does.

A buyer side guide to Oracle license compliance scripts in 2026. What the LMS measurement script collects, why feature usage history drives the cost, and how to run and read the output before Oracle ever asks.

Contact Us Oracle Practice
500+Enterprise clients
$2B+Under advisory
Industry Recognized
500+ Enterprise Clients
$2B+ Under Advisory
11 Vendor Practices
100% Buyer Side Independent

Oracle license compliance scripts are the data collection programs Oracle uses to measure your database usage during an audit. The most important is the LMS measurement script, and it reports far more than installation. It captures options and management packs that may have been used once, by accident, and never disabled.

Key takeaways

  • The scripts are read only. They query data dictionary views, write a text or spool file, and change nothing in the database.
  • Options usage is the costly part. A feature touched once registers exactly like a feature used daily, because the view records detection and not intensity.
  • DBA_FEATURE_USAGE_STATISTICS drives most options findings. The mapping from its feature rows to priced products lives in options_packs_usage_statistics.sql, from My Oracle Support Doc ID 1317265.1.
  • Collection runs weekly under MMON, so a database patched or restarted this week can read empty. Force a sample before you trust the output.
  • The output mixes collected fact with drawn inference. Only the facts are hard, and the inferences are where the money is argued.
  • Agree the scope, the script version and the recipient list in writing before you run anything for Oracle. That is contract adherence, not obstruction.

This guide is for database administrators and procurement leaders facing an Oracle measurement request in 2026. Read it with the LMS audit script analysis guide, the script output interpretation guide, and the audit triggers guide.

What are Oracle license compliance scripts?

They are SQL collection programs that read internal data dictionary views and produce a usage report. Oracle's License Management Services team provides them during a formal review, and the output becomes the basis of the compliance position.

They are not one script. They are a family, and the family member you are asked to run tells you what the review is really about.

What does the LMS measurement script collect?

It captures the database version and edition, installed options, management pack usage, feature history, and the counters Oracle uses to size a user based metric. It reads views the application layer never touches.

The collection family and what each part is for

What you are asked forWhat it measuresWhat the request tells you
The options and packs report, from My Oracle Support Doc ID 1317265.1Priced database options and management packs, per instanceThe review is about options and packs, which is the highest value finding type
The wider database measurement collectionVersion, edition, components, users, sessions, high water marksA full database position is being built, not a spot check
A server or environment worksheetHosts, sockets, cores, chip type, clusters, environment purposeProcessor math is coming, so virtualization scope is in play
Middleware or applications collectionWebLogic, Fusion Middleware and application user countsThe scope has moved beyond the database estate
Java detection outputInstalled Java runtimes across desktops and serversA separate commercial conversation, on a separate metric

File names and versions change between releases. Ask which document ID and which version you are being asked to run, and record the answer. Two different script versions can produce two different findings from the same database.

Which views the collection actually reads

Knowing the source views is what lets you check the output rather than accept it. Almost everything in a database collection comes from a short list.

  • DBA_FEATURE_USAGE_STATISTICS. Feature detection counts with first and last usage dates. This is the view that drives options and packs findings.
  • DBA_HIGH_WATER_MARK_STATISTICS. Peak values the database has reached, including counts that matter for user based metrics.
  • V$OPTION. Which options are installed and linked in, which is a different question from whether they were ever used.
  • V$VERSION and DBA_REGISTRY. Release, patch level and installed components.
  • V$LICENSE. Session high water marks, relevant where a user or session metric applies.
  • DBA_USERS and related dictionary views. Account inventory, used as an input to Named User Plus counting.

Oracle documents these views publicly in the Oracle Database Reference. You can query every one of them yourself, today, without asking anyone.

Why is feature usage history so important?

Because Oracle counts a feature as used if it was ever activated, even briefly. The DBA_FEATURE_USAGE_STATISTICS view records that history and it does not expire.

  • Partitioning: one partitioned table can flag the option as used.
  • Diagnostics and Tuning Pack: a single AWR report or one advisor run can trigger a finding.
  • Advanced Compression: compressing one tablespace counts.
  • Cloud Management Pack: a self service portal built for a demo and never removed, covered on the Cloud Management Pack page.

Two mechanics make this worse than it sounds. The record survives the workload that created it, and it travels: restore or clone a database and the usage history moves into the copy with the datafiles.

How do you run the scripts yourself, without making things worse?

Run them read only, on your own schedule, with a fresh sample forced first. Nothing in a properly scoped collection modifies the database, and the risk sits in the console, not the query.

Can you run the scripts yourself?

Yes. Your own database team can run the collection against your databases. Doing so before Oracle asks gives you time to read the output, disable unused options, and prepare context.

The wider triangulation this feeds into, against entitlement and support records, is set out in our guide to checking your Oracle license information.

The privileges and the footprint

  • Access. A user with SELECT on the data dictionary is enough. Grant it for the collection and remove it afterwards.
  • Footprint. The collection reads views and writes a spool file. It performs no DML and touches no application data.
  • Timing. Feature sampling runs weekly under MMON, so force a sample before collecting or you may report a stale picture.
  • Containers. On a container database, query per pluggable database or use the container aware view. Querying only the root hides usage.
  • Coverage. Collect from every instance, including standby, development, test and anything running in a cloud account.

The one genuine self inflicted risk is not the SQL. It is a curious administrator opening Enterprise Manager performance or advisor pages while investigating, which registers a priced pack that was not previously in use.

A safe self collection sequence

  1. Set Enterprise Manager pack access to deny first, and record the date and the person who changed it.
  2. Force a feature usage sample on every instance so the data reflects today, not last month.
  3. Run the options and packs report on every instance and keep the raw file, named by instance and date.
  4. Capture the host inventory in the same window: sockets, cores, chip type and cluster membership.
  5. Store everything in one dated folder with a named owner. An undated collection is worth very little six months later.
Cover of the Redress Compliance Oracle white paper

White Paper · Oracle Database

Oracle LMS Audit Scripts

Read the audit before Oracle does. Read it free.

Read the white paper
Put your own numbers on this. The free Oracle calculator prices your processor vs Named User Plus position, VMware cluster exposure, Java SE employee tiers, and the 22 percent support line, then hands you a two page executive summary you can forward to your CFO. No account, no sales call. Run the Oracle calculator →

How do you read the script output?

Read it as a list of claims, not as a bill. Each line needs context: was the feature used in production, was it a one time accident, is it already covered by the contract. That context changes the number.

The three things the options report tells you

The options and packs report is structured, and most teams only read the first part of it. The detail underneath the summary is where your argument lives.

  • The product usage summary. One line per priced option and pack, with a verdict. This is a conclusion, not evidence.
  • The feature usage detail. The individual rows that produced each verdict, with detection counts and dates. This is the evidence.
  • The environment context. Instance, version, host and collection date. Without this, a file cannot be tied to anything later.

Currently used versus past usage

These are two different statements and they are routinely read as one. Currently used describes the most recent weekly sample only. Past usage describes the whole recorded history.

A feature that is currently unused but historically used is still a finding, because the obligation attached when it ran. A feature currently used once, this week, is a purchase conversation you can still get in front of.

The number that separates them is detections against total samples. Three detections against 214 samples is a demo. Two hundred and fourteen against 214 is production. A settlement template treats both identically unless you supply the ratio.

Common script findings and the buyer side response

Finding Where it comes from Often accidental? Buyer side response
Diagnostics Pack usedAWR or ADDM reportsYesDisable, document date.
Tuning Pack usedSQL Tuning AdvisorYesRestrict access, evidence.
Partitioning usedPartitioned objectsSometimesConfirm need, repartition.
Advanced CompressionCompressed segmentsSometimesUncompress if not needed.
Cloud Management PackSelf service or chargeback pagesYesSet pack access to deny, prove the portal is gone.
Option flagged on a cloneHistory carried in from the source databaseYesShow the refresh lineage so it is not counted twice.
Developer reading database query results on a dark terminal screen
The script output reads as fact, but each feature usage line is a claim that needs context before it becomes a number you owe.

Separate the collected fact from the drawn inference

This distinction is the whole discipline. Facts are what the views returned. Inferences are the licensing conclusions someone drew from them, and inferences can be argued with evidence.

Fact, inference, and what you can legitimately show

Collected factInference drawnEvidence that changes the reading
Detection count above zeroThe option is in use and must be licensedDetections against total samples, plus the dated change that stopped it
V$OPTION shows an option installedThe option is deployedInstalled and linked is not used. The feature usage view is the usage record
First usage date on a rowContinuous use from that dateClone or restore lineage, and the sample ratio in between
Cores and sockets on a hostProcessor licenses required for that hostCluster topology, pinned capacity and what actually ran there
30 to 60%
Of the initial finding was accidental usage
25 to 50%
Raw exposure removed by context and remediation
8 to 12
Weeks of runway won by self collecting first

Source: Redress Compliance advisory engagement file, 2024 to 2025. Stated as ranges observed across roughly 30 to 40 measurement reviews, not as measured averages.

What should you agree before you run anything for Oracle?

Agree scope, script version, environments and recipients in writing, before the first collection runs. That is not obstruction. It is the ordinary discipline of complying with a contractual right precisely rather than approximately.

Who reads the output once you send it

Assume it is read more broadly than the compliance conversation you are in. A measurement file is a detailed description of your estate, and the same detail informs how your next proposal is priced.

That is a reason for precision, not for evasion. Send what the agreement requires, send it accurately, and send facts rather than someone else's conclusions.

Five questions to ask in writing first

  1. Which clause? Name the agreement and the paragraph the request relies on. Agreement identifiers are printed on your ordering documents, and the terms are published in the Oracle contract documents library.
  2. Which script, which version? Record the document ID and version, so the same collection can be reproduced later.
  3. Which environments? Named instances and hosts, not a general instruction to collect everywhere.
  4. Which period? The window the review covers, stated as dates.
  5. Who receives it? Named recipients, and whether the output is shared beyond the review team.

Ask once, in one message, and keep the reply. What happens after the formal letter arrives is covered in our Oracle audit guidance, which deals with scope letters and response sequencing in detail.

How do you use the scripts in your defense?

Run them early, read them honestly, and remediate what you can. A clean position you built yourself is far stronger than a reaction to someone else's version of the same data.

What can you remediate before an audit?

Disable options you do not use and stop the usage at the source. Document the date you disabled each one. Future collections then show the option as no longer currently used.

  1. Identify every option and pack flagged as used in the output.
  2. Confirm whether each is needed in production, and by which workload.
  3. Disable the unneeded ones, timestamp the change, and keep the ticket.
  4. Re collect after a full sampling cycle and file the before and after together.

Remediation stops the meter. It does not rewind it, because the first usage date stays in the view for the life of the database. That is exactly why the dated evidence matters.

Should you send raw output to Oracle?

Not without review. Provide what your agreement requires, reconciled and in context, rather than an unexamined dump. Raw data invites the highest available interpretation of every line.

Review your own output first for three things: rows you cannot explain, environments that should not have been in scope, and any file that does not carry an instance name and a date.

When do you bring in expert help?

Before you respond to a formal measurement request. The interpretation of the output, not the collection of it, decides the cost. That is where experienced review pays for itself.

Where the common advice on Oracle compliance scripts is wrong

The common advice is that running the scripts is risky, so the safest move is to wait until Oracle asks. We disagree, and the arithmetic is one sided. The risk being described is not the SQL, which is read only and changes nothing; it is a console click that enables a priced pack while someone investigates. Set pack access to deny first and that risk is gone. What waiting actually buys you is the loss of every remediation week you would have had, and the certainty that the first party to read your position is the one invoicing you. In the reviews we have run, self collection first bought 8 to 12 weeks of runway.

There is a second half to this that the standard advice also misses. Running the scripts once is not a program. A single collection ages out within a quarter, and an undated file with no named owner persuades nobody.

Put the collection on a cadence with an owner, which is a software asset management question rather than a database one. The script is a tool. The practice around it is what produces the number you can defend.

The script does not produce a bill. It produces a list of claims. Whoever reads those claims first, with context, controls the number, and that should be you, not the auditor.

What should a buyer do next?

  1. Set Enterprise Manager pack access to deny before anyone starts investigating, and record the date.
  2. Force a feature usage sample, then run the Oracle collection scripts against your own databases.
  3. Review DBA_FEATURE_USAGE_STATISTICS for accidental options and pack usage, per instance and per container.
  4. Separate genuine production use from one time activations using detections against total samples.
  5. Trace flagged non production databases back to the source they were cloned from.
  6. Disable unused options and document each change with a date and an owner.
  7. Build a reconciled position with contract context, not raw output.
  8. Before responding to any measurement request, confirm the clause, the script version, the environments, the period and the recipients in writing.
  9. Engage independent review before you submit anything.
Need help? Try our AI agents. Ask the Oracle licensing AI agent → Scoped to one vendor and one problem. Runs in your browser.

Frequently asked questions

What is the Oracle LMS script?

The Oracle LMS measurement script is a SQL collection program that reads internal database views to report version, edition, installed options, and feature usage history. Its output forms the basis of an Oracle compliance review.

Can I run the Oracle compliance scripts myself?

Yes. Your own database team can run the collection scripts. Running them before Oracle requests data lets you read the findings and remediate unused options first.

Are the scripts safe to run in production?

Yes, in the sense that matters: the collection is read only, performs no DML, and touches no application data. It needs a user with SELECT on the data dictionary and writes a spool file. The real risk sits elsewhere, in an administrator opening Enterprise Manager pages that enable a priced pack while investigating.

What is DBA_FEATURE_USAGE_STATISTICS?

It is the data dictionary view that records which database features have been used and when. It drives most Oracle options findings because it captures even brief or accidental usage.

What is the difference between currently used and past usage?

Currently used describes the most recent weekly sample only, while past usage describes the entire recorded history. A feature that stopped a year ago still shows in the history and still creates a licensing question. Always read both alongside detections against total samples.

Does using a feature once count as using the option?

Yes. Oracle generally treats any activation as usage. A single AWR report or one partitioned table can flag a chargeable option as used, because the view records detection rather than intensity.

Why is my test database flagged when nobody used the option there?

Feature usage history lives inside the database and travels with a restore or clone. A test system seeded from production inherits the production usage rows, including the first usage date. Keep dated refresh tickets so the same usage is not counted twice.

Do the scripts work on a container database?

They do, but a careless query does not. Feature usage must be read per container, using the container aware view or by connecting to each pluggable database. Querying only the root can hide usage that a later collection will find.

Should I send the raw script output to Oracle?

Not without review. Provide what the agreement requires, reconciled and in context, rather than an unexamined dump. Raw output invites the highest interpretation of every line and removes your chance to explain accidental usage.

Who inside Oracle sees the output we submit?

Assume it is read more broadly than the review conversation itself, because the same estate detail informs commercial proposals. That is a reason to be precise about scope and accurate about content. Ask in writing who the named recipients are, and keep the answer.

Can options findings be remediated?

Often yes. Disable the unused option, stop the activity at the source, and document the date. Later collections then show the option as no longer currently used, although the historical first usage date remains.

How much can expert review reduce a finding?

In our reviews, context and remediation commonly reduced raw exposure by 25 to 50 percent, depending on how much of the usage was accidental and how clean the contract terms were. That is engagement experience across roughly 30 to 40 reviews, not a guaranteed outcome.

When should I get help with script output?

Before responding to a formal measurement request. The interpretation of the data, not its collection, determines the cost, so independent review pays off at that stage.

White Paper · Oracle Database

Reading the Oracle audit: what the LMS scripts collect.

An Oracle audit is decided by two feature usage views the database has filled in since day one. What the GLAS and LMS scripts collect, and how to read them before Oracle does.

Used across more than five hundred enterprise engagements. Independent. Buyer side. Built for procurement leaders running the next renewal cycle.

Get the white paper →
Opens the white paper landing page. We only email you about this download.
Run the software spend health check on your Oracle estate in under five minutes.
Open the Tool →
30-60%
From accidental options
25-50%
Cut by expert review
8-12wk
Self collection runway
1
View that drives findings
100%
Buyer Side

The standard advice is to wait for Oracle to run the scripts and then respond. We disagree. In the measurement reviews we have run, the teams that collected and read the output first cut their exposure by a quarter to a half. The buyer side move is to never let the auditor read your data before you do.

Fredrik Filipsson
Co Founder and Group CEO. Ex Oracle, IBM, SAP.
Deep Library

More on this topic.

Oracle Practice →
Database query output on a screen
Oracle
Oracle LMS Audit Script Analysis
How the LMS scripts work, what they read, and how to analyze the results.
11 min read
Analyst reviewing data tables
Oracle
Interpreting LMS Script Output
A SAM manager guide to reading and reconciling Oracle script results.
12 min read
Compliance review meeting
Oracle
What Triggers an Oracle LMS Audit
The events and signals that invite an Oracle measurement request.
9 min read
Pass it on

Know someone facing this exact decision?

Send this to whoever owns the renewal, the audit response, or the budget. It takes two clicks and it saves them a quarter of guessing.

Share on LinkedInShare by email
Related White Papers

Continue with the Oracle cluster

Editorial boardroom interior

The advisor your vendors do not want.

500+ enterprise clients. 11 vendor practices. Industry recognized. One conversation can change what you pay for the next three years.

Oracle brief. Once a week.

One short note on Oracle licensing moves, audit posture, partitioning policy, and the buyer side levers we are running in client engagements. No noise.