Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Re: db file sequential read wait
Bosco Ng wrote:
> mngong_at_yahoo.com (michael ngong) wrote in message news:<ecf365d5.0311120824.271dfe25_at_posting.google.com>... >
> > > > Yes. No doubt about this.
First of all, you might want to work towards reducing the number of buffer gets required by the above SQL statements. Things you can consider are making your indexes more selective, possibly by using composite indexes (e.g. the delete statement above can make use of a composite index on (sa.Acct_Num, sa.SID) and one on (bs.Bill_SID, bs.Svc_Agmt_SID, bs.SID)), rather than an index on each individual column. Better yet, have all the columns you're selecting contained in the index as well so you don't need to visit the table at all. You can also check to see if the indexes are fragmented, and if so, rebuild the indexes to minimize the number of blocks you need to fetch for each index range scan.
Given that you have a 1GB buffer cache, for the SQL statements that you listed with high # logical I/O's, did you get a high buffer cache hit ratio? If yes, then I would look at whether reading from the buffer cache was taking longer than it should, for example, do you have enough physical memory to avoid page faults, are you running other processes on the same machine that would consume a fair amount of memory, is the buffer cache using pinned shared memory on AIX etc. If buffer cache hit ratio is not reasonably high, then I would look at the File I/O, Tablespace I/O, and Segment I/O sections of the statspack report, figure out the hot spots, and try to place those datafiles on faster devices.
I also agree with previous suggestions that you should look at particular sessions using extended SQL trace and figure out exactly where the elapsed time is spent on each query.
Good luck.
![]() |
![]() |