分类: Oracle
2012-10-30 18:14:09
点击(此处)折叠或打开
In fact, you should get rid of all (or most) factors affecting redo log contention. In addition,
maybe:
- Making sure DBWR checkpoiting and ARCH copying are not blocking log switches (check out
ALTER.LOG);
- You can also verify that the following statistics in V$SYSSTAT are either high or increasing:
"redo buffer allocation retries" - Total number of retries necessary to allocate space in the redo
buffer. Retries are needed either because the redo writer has fallen behind or because an event
such as a log switch is occurring.
"redo log space requests" - Number of times the active log file is full and Oracle must wait for
disk space to be allocated for the redo log entries. Such space is created by performing a log
switch.
In these cases, you can try some things, the main ones being:
. Make DBWR more infrequent (performance will inscrease but recoverbility could be compomised). Do
that adjusting FAST_START_IO_TARGET (8i) or FAST_START_MTTR_TARGET (9i).
. Enlarge your redo files. This will make checkpoiting more infrequent on log switches.
. Spawn more DBRWs, ARCHs, or their IO Slaves to increase throughput.
Now - now you'll be waiting for lgwr to finish writing after each
record. You'll have tons of log file sync waits (like 1,000,000 of
them). And if you have high log file parallel write waits - you might
be able to blame part of that on the writes.
I would blame the programmer, but you could blame the IO. the IO
isn't really the cause, the algorithm is, but you see what I mean.
Make sense?
log file parallel write is something lgwr waits for.
log file sync waits might be you waiting on lgwr (might be starved
for CPU, lgwr might not be the cause at all). If you are waiting on
lgwr, you might want to look at what lgwr is waiting for. those could
be log file parallel writes.