← Back to list

Oracle Free Buffer Waits — Buffer Cache Troubleshooting Every DBA Should Know

Introduction

Shanmugaraja Swaminathan · 2026-04-21 07:35 · 0 claps · 2.5 min read
#oracle-database #oracle-cloud #oracle #rman
Open on Medium ↗

Oracle Free Buffer Waits — Buffer Cache Troubleshooting Every DBA Should Know

Introduction

Performance issues in Oracle databases often lead DBAs to check CPU, I/O, or slow queries. However, sometimes the root cause lies deeper — inside the Buffer Cache.

One such issue I encountered in production was Free Buffer Waits, where the database slowed down even though CPU and disk usage looked normal.

This blog explains what Free Buffer Waits are, why they occur, and how to troubleshoot them effectively.

What is Free Buffer Waits?

Free Buffer Waits occur when a session needs a free buffer in memory but cannot find one available in the buffer cache.

This typically happens when:

  • Dirty buffers are not written to disk fast enough
  • DBWR process cannot keep up
  • Buffer cache is too small
  • Heavy DML activity is occurring

When this happens, sessions must wait for buffers to become available.

Real Production Scenario

During a production workload, users reported slow performance during peak hours.

Symptoms observed:

  • Queries running slower than usual
  • No CPU spike
  • No major I/O bottleneck

After checking wait events, we found Free Buffer Waits increasing.

This indicated a buffer cache pressure issue.

How to Identify Free Buffer Waits

Check wait events:

SELECT event, total_waits, time_waited
FROM v$system_event
WHERE event LIKE '%free buffer waits%';

If wait counts are high, buffer cache pressure may exist.

Check Buffer Cache Hit Ratio

SELECT 
(1 - (physical_reads / (db_block_gets + consistent_gets))) * 100 "Buffer Cache Hit Ratio"
FROM v$buffer_pool_statistics;

Low hit ratio may indicate buffer cache issues.

Check Dirty Buffers

SELECT 
name,
value
FROM v$sysstat
WHERE name LIKE '%dirty buffers%';

High dirty buffers may cause DBWR lag.

Common Causes of Free Buffer Waits

1. Buffer Cache Too Small

If memory is insufficient, Oracle cannot allocate free buffers.

Check buffer cache size:

SHOW PARAMETER db_cache_size;

2. DBWR Cannot Keep Up

Heavy DML workload increases dirty buffers.

Check DBWR activity:

SELECT event, total_waits
FROM v$system_event
WHERE event LIKE 'db file%';

3. High DML Activity

Bulk inserts, updates, or deletes increase dirty buffers.

Check active sessions:

SELECT username, program, status
FROM v$session
WHERE status='ACTIVE';

How We Fixed the Issue

Steps taken:

  • Increased buffer cache size
  • Monitored DBWR performance
  • Optimized heavy DML workload

After implementing these changes:

  • Free buffer waits reduced
  • Performance improved
  • Users confirmed normal performance

Best Practices to Avoid Free Buffer Waits

  • Monitor wait events regularly
  • Configure proper buffer cache size
  • Monitor DBWR performance
  • Optimize heavy DML operations
  • Monitor dirty buffers

Additional Monitoring Query

Check buffer cache usage:

SELECT 
name,
value
FROM v$sysstat
WHERE name LIKE '%buffer%';

Lessons Learned

This incident highlighted that:

  • Memory pressure can cause performance issues
  • CPU and I/O may look normal
  • Wait events provide real insight
  • Buffer cache tuning is critical

Conclusion

Free Buffer Waits indicate buffer cache pressure and DBWR performance issues. Understanding buffer cache behavior helps DBAs troubleshoot performance issues quickly.

Monitoring wait events and tuning memory appropriately can prevent these issues in production environments.


메타데이터
post_id
da0f11abd0f9
slug
oracle-free-buffer-waits-buffer-cache-troubleshooting-every-dba-should-know-da0f11abd0f9
url
https://medium.com/@shanmugaraja1608/oracle-free-buffer-waits-buffer-cache-troubleshooting-every-dba-should-know-da0f11abd0f9
canonical_url
https://medium.com/@shanmugaraja1608/oracle-free-buffer-waits-buffer-cache-troubleshooting-every-dba-should-know-da0f11abd0f9
author_url
https://medium.com/@shanmugaraja1608
status
ok
fetched_at
2026-06-21 07:44:09