Data Buffer Cache   «Prev  Next»
Lesson 1

Tuning Oracle Data Buffer Cache

In the previous module, we examined tuning the shared pool.
This module discusses tuning the Oracle data buffer cache.
The Oracle data buffers are one of the most important areas of SGA tuning, since the presence of an Oracle data block in memory can greatly reduce disk I/O.
Disk I/O is one of the most time-consuming operations that Oracle will perform. Our focus in this module will be to understand the dynamics of the Oracle data buffers and examine techniques that provide the greatest performance gains. By the time you complete this module, you should be able to:
  1. Describe the components of the Oracle data buffer
  2. Calculate the buffer hit ratio
  3. Run the simulation utility
  4. Predict the amount of spare memory
  5. Define multiple data buffers
  6. Configure multiple buffer pools
  7. Run a script to display data buffer hit ratio
  8. Issue the cache directive on a table

About the Database Buffer Cache

For many types of operations, Oracle Database uses the buffer cache to store data blocks read from disk. Oracle Database bypasses the buffer cache for particular operations, such as sorting and parallel reads. To use the database buffer cache effectively, tune SQL statements for the application to avoid unnecessary resource consumption. To meet this goal, verify that frequently executed SQL statements and SQL statements that perform many buffer gets are well-tuned. When using parallel query, consider configuring the database to use the database buffer cache instead of performing direct reads into the Program Global Area (PGA). This configuration may be appropriate when the system has a large amount of memory.


V$DB_CACHE_ADVICE contains rows that predict the number of physical reads for the cache size corresponding to each row. The rows also compute a "physical read factor," which is the ratio of the number of estimated reads to the number of reads actually performed by the real buffer cache during the measurement interval.
In the next lesson, we will examine the Oracle data buffer cache.
The V$DB_CACHE_ADVICE view in Oracle Database is a performance tuning tool that is part of the database's dynamic performance views. Its primary purpose is to provide insights and recommendations regarding the sizing of the database buffer cache, which is a key component of Oracle's system global area (SGA). This view simulates scenarios with different buffer cache sizes and estimates the impact these sizes might have on physical I/O operations. By analyzing the V$DB_CACHE_ADVICE view, a Database Administrator (DBA) like yourself can tentatively determine whether increasing or decreasing the buffer cache size would benefit the overall performance of the database. The view contains several important columns, such as:
  • `DB_CACHE_SIZE`: This represents the hypothetical size of the cache.
  • `PHYSICAL_READ_FACTOR`: This shows the estimated change in physical reads for the given cache size relative to the current size.
  • `PHYSICAL_READS`: It estimates the number of physical reads that would occur for the hypothetical cache size.
Using this information, you can make more informed decisions about buffer cache sizing without actually having to resize the cache and observe the impact. This can be particularly useful in large databases where such changes can be disruptive and time-consuming. However, it's important to note that the advice provided by V$DB_CACHE_ADVICE is based on extrapolations and simulations, and thus should be considered as a guide rather than a definitive action plan. Real-world results may vary based on the specific workload and data access patterns of your database.