I/O Resource Management (IORM) in Oracle Exadata

Oracle Exadata’s I/O Resource Management (IORM) ensures fair and efficient use of shared storage resources across multiple workloads and databases. It prevents performance issues caused by competing workloads (e.g., OLTP vs. DSS queries) by applying user-defined resource policies.

Why IORM?

  • Shared storage often hosts different workloads (OLTP, DSS, reporting, dev/test).
  • Without control, large queries can slow down critical OLTP transactions.
  • IORM ensures priority-based scheduling of I/O requests.
  • Critical workloads get immediate access, while lower-priority workloads are queued.

Example: If a production OLTP database and a test database share storage, IORM ensures OLTP requests are prioritized. Test database requests are queued until they don’t impact OLTP performance.

Flash IORM

  • Protects OLTP latency in flash cache.
  • Table scans and low-priority I/Os are throttled.
  • Critical OLTP I/Os are never queued.
  • When flash is idle, queued requests are processed according to resource plans.

IORM Objectives

The objective defines optimization mode. Configured per storage server using CellCLI ALTER IORMPLAN.

Valid Values:

  • auto → Dynamic optimization based on workloads (recommended).
CellCLI> ALTER IORMPLAN OBJECTIVE=auto
  • high_throughput → Optimizes DSS workloads, favors throughput over latency.
  • low_latency → Optimizes OLTP workloads, favors latency over throughput.
  • balanced → Mix of OLTP and DSS workloads.
  • basic → Minimal prioritization, only guards against extreme latencies.

👉 On Extreme Flash (EF) servers, high_throughput increases scan speed but impacts OLTP latency, while low_latency maximizes OLTP protection but slows scans.

IORM Plans

IORM supports different plan types to manage resources:

  1. Database Resource Plan (Intradb)
    • Defined inside a database using Oracle Database Resource Manager.
    • Allocates resources across consumer groups.
    • Communicated to Exadata storage for enforcement.
  2. Interdatabase Plan (dbplan)
    • Manages resources across multiple databases.
    • Configured with CellCLI.
CellCLI> ALTER IORMPLAN DBPLAN=((name=prod, share=8), (name=test, share=2))

3. Cluster Plan (clusterplan)

  • Manages resources across multiple Oracle Grid Infrastructure clusters.
  • Introduced in Exadata release 21.2.0.
CellCLI> ALTER IORMPLAN CLUSTERPLAN=((name=cluster1, share=10))

Category Plan (catplan)

  • Allocates resources by workload category (OLTP, reports, maintenance).
  • Deprecated in release 21.2.0 and removed in release 25.1.0.

Resource Assignment Methods

1. Share-Based Allocation (Recommended)

  • Assigns relative importance using shares (1–32).
  • Higher share = more I/O resources.
  • Example:
CellCLI> ALTER IORMPLAN DBPLAN=((name=prod, share=8), (name=dev, share=2))
  • Production gets 4x the resources of dev.

2. Allocation-Based (Percentage)

  • Assigns fixed percentages (0–100) at levels (1–8).
  • Resources are allocated to level 1 first, then level 2, etc.
  • Example:
CellCLI> ALTER IORMPLAN DBPLAN=((name=prod, level=1, allocation=70), (name=test, level=2, allocation=30))

👉 Production gets 70% guaranteed, test gets remaining 30%.

Best Practices

  • Use auto objective for most workloads.
  • Apply share-based allocation for interdatabase and cluster plans.
  • Use low_latency for OLTP-heavy systems, high_throughput for DSS-heavy systems.
  • Ensure consistent IORM settings across all storage servers.
  • Avoid category plans (deprecated).
  • Monitor I/O metrics regularly with CellCLI.
This entry was posted in Exadata on by .
Unknown's avatar

About SandeepSingh

Hi, I am working in IT industry with having more than 15 year of experience, worked as an Oracle DBA with a Company and handling different databases like Oracle, SQL Server , DB2 etc Worked as a Development and Database Administrator.

Leave a Reply