Wednesday, May 27, 2026

Alert Fix : 1 index(es) with too many extents in oracle database - oracle performance issue

🔍 What it Means

  • Oracle stores segments (tables, indexes) in extents (contiguous blocks).
  • Over time, due to growth, rebuilds, and DML, an index may end up with:
    • Hundreds or thousands of small extents
  • This is usually flagged when:
extents > threshold (e.g., 1000 or configurable limit)


⚠️ Why It Matters

  • Generally not critical in modern Oracle (ASSM + LMT) environments.
  • But can still cause:
    • Slight performance overhead in segment management
    • Longer backup/restore times
    • Inefficient disk usage in older systems
    • Red flag in audits / compliance reports

👉 In most modern systems, it's more of a hygiene issue than a real performance problem.


✅ Identify the Problem Index

Run:

SELECT owner, segment_name, segment_type, extents
FROM dba_segments
WHERE segment_type = 'INDEX'
AND extents > 500 -- adjust threshold
ORDER BY extents DESC;

Or specifically:

SELECT owner, index_name
FROM dba_indexes
WHERE index_name IN (
SELECT segment_name
FROM dba_segments
WHERE extents > 500
);

🛠️ Fix Options

✅ Option 1: Rebuild the Index (Recommended)

ALTER INDEX schema_name.index_name REBUILD;

Benefits:

  • Reduces number of extents
  • Compacts index
  • Eliminates fragmentation

👉 If large index:

ALTER INDEX schema_name.index_name REBUILD ONLINE;


✅ Option 2: Rebuild with Storage Clause

To control extent allocation:

ALTER INDEX schema_name.index_name REBUILD
STORAGE (INITIAL 100M NEXT 100M);

👉 Helps avoid many small extents in future.


✅ Option 3: Move to Different Tablespace

If fragmentation is due to tablespace issues:


ALTER INDEX schema_name.index_name
REBUILD TABLESPACE new_tablespace;


✅ Option 4: Coalesce (Less Effective)

ALTER INDEX schema_name.index_name COALESCE;
  • Merges adjacent leaf blocks
  • Does NOT reduce extents
  • Safer but less impactful

🧠 Root Cause Analysis

Common reasons:

  • Autoallocate tablespace creating many uneven extents
  • Frequent index growth/shrink cycles
  • Old dictionary-managed tablespaces (DMT)
  • Poor storage parameters
  • Partitioned index mismanagement

🎯 Best Practices (Going Forward)

✅ Use:

  • Locally Managed Tablespaces (LMT)
  • AUTOALLOCATE or UNIFORM extent size

✅ For large indexes:

  • Predefine proper extent sizes:
CREATE INDEX idx_name
ON table_name(column)
TABLESPACE ts_name
STORAGE (INITIAL 128M NEXT 128M);

✅ Monitor periodically:

SELECT segment_name, extents
FROM dba_segments
WHERE extents > 500;

🚨 When You Can Ignore It

You can safely ignore if:

  • Database uses ASSM + LMT
  • No performance issues observed
  • Extents are auto-managed efficiently

✅ Recommendation for You (Database Architect Perspective)

Given your role, I’d suggest:

  1. ✅ Validate index size vs extents ratio
  2. ✅ Rebuild only if:
    • Extents are very high (>1000)
    • Index is frequently accessed
  3. ✅ Automate check in health scripts
  4. ✅ Standardize storage clauses for large indexes

💬 Summary

IssueAction
Too many extentsRebuild index
FragmentationRebuild or move
Minor issueIgnore if no perf impact

No comments:

Post a Comment

About the Author : Anurag Pandey | Database cloud Architect | Oracle | SQL Server | PostgreSQL | AI and Data Platform Enthusiast

Anurag Pandey is a Database Architect with expertise in Oracle, PostgreSQL, SQL Server, Linux, and enterprise database platforms and specializes in database architecture, performance tuning, high availability, disaster recovery, cloud modernization, and operational excellence. With extensive experience in enterprise-scale environments, Anurag is passionate about leveraging AI, automation, and modern data platforms to improve reliability, scalability, and business outcomes. He actively contributes to technical communities through knowledge sharing, architecture guidance, and thought leadership in database and data engineering domains.

Follow more articles at

Visit Blog

Oracle Database Deep Health Check Checklist

Oracle Database Deep Health Check Checklist Recommended assessment levels Level Purpose Typical scope L1 Operational health Availability, sp...