Oracle FAQ Your Portal to the Oracle Knowledge Grid

Home -> Community -> Usenet -> c.d.o.server -> Re: Oracle Performance -- Possible Disk Bottleneck

Re: Oracle Performance -- Possible Disk Bottleneck

From: Jonathan Lewis <>
Date: Sat, 9 Jun 2007 07:44:23 +0100
Message-ID: <>

<> wrote in message
> I'm digging into the performance article tonight. Thanks so much for
> the feedback.
> Here is the statspack. I hate posting something so large, so I hope
> it's ok. If someone is kind enough to take a peak, then it is
> appreciated.
>> - Show quoted text -

2,700 IOPS is not possible for 6 disks. Even with the fastest drives I wouldn't expect to see steady state random I/Os averaging much better than 120 IOPS.

However, the 2,710 /sec in Oracle's stats are "blocks read", not "read requests", so the number of I/O requests could have been significantly less. Note that you had 166,893 multiblock read requests (from Oracle's perspective).

physical reads                   4873242     10047.92    47543.82 
table scan blocks gotten         2769428      5710.16   27018.81 

Playing with numbers (ballpark figures)

    Assume your 4,873242 blocks was

        3,742,459 single block requests plus
        166,893 multiblock requests

db file sequential read                3742459  216409           .06
db file scattered read                  166893    13092           .08

Your average multiblock request size was

    (4,873,242 - 3,742,459)/166,893 = 6.59 blocks.

This calculation is fairly consistent with the prefetched blocks counts. (Most prefetched blocks tend to be from tablescans).

prefetched blocks                 958405      1976.09     9350.29 

Another calculation

    Total read requests = 3,742,459 + 166,893 = 3,909,352     Requests per second = 2,175

        Still too high for your 6 disks, so some of your reads
        were probably coming from a filesystem or disk cache

But the critical indicator, really, is the average read time:

    6 centiseconds for a single block
    8 centiseconds for a multiblock

Your disks should typically be showing less than 0.8 centisecond for a single block, and less than1.4 for a multiblock.

The disk times are consistent with the buffer busy wait times - if two people want to read the same block off disc (and this can happen quite easily with concurrent tablescans) one ends up in a buffer busy wait for the other to complete the read.

buffer busy waits                        41906       4122            .1

The BBW times you have agree with the 'slow disks' - but suggest that there is a variation in the problem, i.e. peaks of activity which really slow things down from time to time.

Look for:

    queries with inappropriate tablescans

    queries using low-precision indexes that visit large numbers     of blocks in tables.

    queries against tables with lots of chained rows as these may     be contributing extra physical reads.

    spare memory to increase the size of your buffer cache in     case this helps to reduce the number of index block re-reads     of indexes in the OASIS_INDEX tablespace.


Jonathan Lewis

Author: Cost Based Oracle: Fundamentals

The Co-operative Oracle Users' FAQ
Received on Sat Jun 09 2007 - 01:44:23 CDT

Original text of this message