Open Source Agentless Database-first Oracle DB + FMW

Know your Oracle exposure before Oracle does.

Oracle licensing analytics, computed in PostgreSQL.

LMS Cloud is the open-source platform that discovers exactly how your organization uses Oracle Database and Fusion Middleware — so you can walk into every audit and renewal knowing your true footprint, reclaim what you don't use, and negotiate from total visibility.

A thin Laravel frontend over 80+ PL/pgSQL functions, fed by a single self-contained bash collector. No agents, no database users, no external dependencies. Deterministic cost, coverage and compliance analysis — executed inside the database engine.

Zero database users Linux · AIX · HP-UX · Solaris Multi-currency price lists

Viewing the business, compliance & procurement focus. Switch to Technical for the DBA view.

Viewing the DBA & frontend engineering focus. Switch to Business for the procurement view.

80+
PL/pgSQL functions
40+
Edition & option calculators
16,600+
Price-list rows
1M+
topofmw mappings
0
Agents deployed on hosts
100%
Self-hosted — data stays yours
3
Currencies: USD · EUR · CHF
4
Role tiers: S · A · C · U
Why it's the most advanced

Built for the estates other tools can't reach.

Most Oracle SAM tools assume you can install a component on every host and reach every server from one console. LMS Cloud was designed from day one for large, segmented, uncooperative networks — and it puts the intelligence where it belongs.

An audit becomes a confirmation

Continuous, evidence-grade inventory of every database, middleware product and server. When Oracle arrives, you already hold the answer — there is nothing to estimate.

Reclaim and retire with proof

Coverage modes separate underused, overused and not-covered deployments, so licence spend you no longer need is visible and defensible.

Negotiate from dependency, not guesswork

Per-server and per-database detail quantifies exactly how dependent you are on Oracle — the migration-effort evidence most SAM tools never surface.

Agentless by construction

One bash file, native utilities only, run as root or sudo. Nothing is installed, no listener is opened, and nothing persists on the host after it runs.

Logic in the schema

rdb(), rfmw(), sdb() plus 40+ rdb_calc_*() calculators, materialized db/fmw_view, and contract triggers. The app only calls DB::select().

Isolated by design

Every table carries a username MD5 tenant id, every function calls sec_check(), and roles follow a strict S > A > C > U hierarchy.

One engine · two lenses

The same evidence, read two ways.

One collection feeds one engine. Executives see cost and risk; engineers see the exact function call that produced it. Flip the switch in the header — this section changes with you.

Business view · FY26 Oracle estate
€4.21M
Annual Oracle spend
− €682k identified
37
Databases not covered
pre-audit risk
118
DB instances discovered
0 users created
94%
Entitlement mapped
+18% vs last quarter
Oracle Database Enterprise Edition€2.4M / €1.9M
WebLogic Server€1.1M / €1.0M
Database Options & Packs€0.7M / €0.4M
DeployedContracted
Findings · coverage mode C
PROD-CRM-01 · EE · In-MemoryOverused
PROD-ERP-04 · EE · PartitioningUnderused
QA-BI-07 · SE2Not covered
DR-WEB-02 · WebLogicNot covered
PROD-DWH-03 · EE · RACCompliant

Findings are ranked by financial exposure, then by migration effort — the order that matters in a renewal.

Procurement risk matrix

Where the money and the risk actually sit

Each finding is placed by likelihood and financial impact, so remediation effort follows exposure — not the loudest voice.

Low financial impact
High financial impact
Likely
Unmapped middlewarefmw.skippable IS NULL · rfmw()
In-Memory on PROD-CRM-01overused EE option · rdb('O', …)
Possible
Partitioning in QAno entitlement · rdb('N', …)
WebLogic outside contractuncovered middleware · rfmw('N', …)
Contract · typed result · trr
SELECT product,
       contract_costs,
       deployment_costs,
       currency
FROM   u1.rdb('C', :tenant, :location)
ORDER  BY deployment_costs - contract_costs DESC;

The UI never computes this. It calls rdb() and renders rows.

Result set · SETOF trr
productcontractdeployedΔ
db_ee_inmemory€1.90M€2.40M+€0.50M
db_ee_partitioning€0.80M€0.40M−€0.40M
db_se2€0.21Muncovered
fmw_weblogic€1.05M€1.00M−€0.05M

Modes A/C/U/O/N select the lens; the same call powers every report.

Query plan

EXPLAIN (ANALYZE, BUFFERS)

Function Scan on rdb (cost=0.25..12.75 rows=1) → Nested Loop → Index Scan on dboptions (username, location) → Aggregate → 40× rdb_calc_*() ~96 ms
Call trace

rdb('C', tenant, location)

sec_check() 0.3 ms roots()/leafs() 1.1 ms db view 8.4 ms os_multiplier() 0.2 ms 40× rdb_calc_*() 96 ms

Filter topofmw by location — it carries 1M+ rows. Refresh the materialized db/fmw_view before reporting.

The SMART-DB architecture

The database is the engine.

LMS Cloud treats PostgreSQL as a computation platform, not a bucket of tables. Schema-native functions own the business rules; the app renders results. That makes every number reproducible, auditable and fast.

  • Single source of truth
  • Multi-tenant by design
  • Analytics in-engine
  • Reactive triggers
  • Thin application layer
  • Deterministic SQL
Collect
LMSCloud (bash)agentless · built-ins only
WRT daemonstreams workload metrics
SMART-DB · PostgreSQL
Raw tables → views → PL/pgSQL functions → result types
mdb() · mfmw() · mos()ingest + alerts
rdb() · rfmw() · sdb()cost & coverage
roi_db() · roi_fmw() · roi_os()ROI-* modules
Present
Laravel servicesDB::select(...) only
Frontendcharts · tables · reports
ROI-* modules

One platform. Many return-on-investment lenses.

Each module answers a different commercial question over the same collected truth — from per-database licensing to cloud what-if scenarios and contract payback.

ROI-DBCore

Database licensing ROI

Contract vs deployed cost per Oracle Database instance, edition and option, with effective processor counts.

ROI-FMWCore

Fusion Middleware ROI

Product-level mapping and coverage across WebLogic, SOA, and the rest of the FMW estate.

ROI-OSCore

Server & core-factor ROI

Physical, virtual and clustered servers resolved to effective Oracle processors via the core-factor table.

ROI-CLOUDBeta

Cloud what-if

Simulate database deployments against cloud compute, RAM, capacity and backup cost models.

ROI-PAYBACKCore

Payback & CapEx

Payback snapshots that frame migrations and consolidations in financial terms, not just licence counts.

ROI-TOPOCore

Topology & dependency

“The Big Picture” — a million-plus mapping graph of how systems and software interconnect.

For compliance, procurement & finance

Walk into the negotiation holding the evidence.

Stop estimating your Oracle position from spreadsheets and vendor review files. Get a defensible, per-system view of entitlement, usage and exposure.

Audit evidence checklist

What you can put in front of Oracle

  • Baseline position per Region-DC-Env-App-Group — Architecture
  • Not-covered list (mode N) with owner and € exposure — Compliance
  • Underused list (mode U) ranked by reclaimable spend — Procurement
  • Overused list (mode O) with remediation cost — Finance
  • Snapshot diff since the last audit, from payback_history — Compliance
Outcome timeline

From collection to negotiation in four moves

01

Collect

Run the agentless collector per zone.

02

Baseline

Coverage modes surface exposure.

03

Remediate

Retire or re-scope by € impact.

04

Renegotiate

Open the renewal holding evidence.

For DBAs & engineers

Predictable, testable, SQL-native analysis.

Every calculation is a function you can call, explain and version. Reproduce any report directly in psql — the same code path the UI uses.

FunctionSignatureReturnsRole
rdbrdb(mode, username, location)SETOF trrDB cost & coverage
rfmwrfmw(mode, username, location)SETOF trrFMW cost & coverage
sdbsdb(mode, username, location, edition)SETOF trrCloud what-if
roi_db / roi_fmw / roi_os(username, location)ROI rowsROI-* modules
os_multiplieros_multiplier(sockets, cores, core_factor, …)numericEffective processors
granular_treegranular_tree(username, module, level)SETOF trtreecostHierarchy + cost
sec_checksec_check(username, role, …)booleanPermission gate
mdb / mfmw / mosingest (…)voidWrite path + alerts
Reproduce any number

Same code path as the UI

SELECT product, contract_costs, deployment_costs
FROM   u1.rdb('C', :tenant, :location);
Ingest rule

Never write raw tables directly

Use mdb(), mfmw(), mos(), m_opl(). They handle licence state, alert generation and trigger side effects atomically.

Three repositories

Open source, end to end.

Frontend and backend live in the danimoya/LMSCloud monorepo today; the agentless collector is the next repository. The three-repo split below is the intended publishing layout.

lmscloud-frontend
Laravel 8Bladevis.js

The DBA & business dashboards. Thin controllers, charts, reports and the ROI-* module UI.

Browse★ —Forks —
lmscloud-backend
PostgreSQL 14PL/pgSQLDocker

The SMART-DB engine: schema, 80+ functions, views, triggers and the ROI-* module registry.

Browse★ —Forks —
lmscloud-collector
BashPOSIX toolsAES-256

The single-file, dependency-free data collector for Linux, AIX, HP-UX, Solaris and Cygwin.

Browse★ —Forks —
Chain of evidence

An evidence pack you can hand to Oracle.

A pipeline you can trace end to end.

Every figure in the pack is produced by the same engine and can be reproduced on demand — nothing is hand-assembled in a spreadsheet.

From collector output to a typed function result: the path is explicit, reviewable, and free of hidden application logic.

  • REPCoverage report — mode C, per product and per location.
  • NNot-covered register — every deployed-but-uncontracted item, with an owner and € exposure.
  • U/OExposure lists — underused spend to reclaim, overused spend to remediate.
  • ΔSnapshot diff — what changed since the last audit, from payback_history.
  • SHAChain of custody — checksums over each collected and rendered artefact.
  • EXPExports — XLSX and PDF mirroring the Oracle LMS measurement view.
Collector output
LMSCloud collectencrypted inventory files
WRT daemonworkload time-series
Ingest functions
mdb()→ dboptions
mfmw()→ fmw + auto-map
mos()→ server_cpuinfo
m_opl()→ oracle_price_list
Views & functions
db · fmw_viewmaterialized joins
rdb() · rfmw() · roi_*()typed results
contract triggersmapping stays coherent
Presentation
Laravel servicesDB::select(...)
Blade + vis.jsreports · graph

Get a clear answer on your Oracle position.

Deploy the stack in minutes.

Start with the open-source platform and see your coverage, exposure and payback options in one place.

Clone three repositories, bring up Postgres, run the collector, and query rdb() before your coffee is cold.