I am getting the Checkpoint not complete error everday when the batch process is on .Hear you can see the arch stated at 10:09 and finshed at 10:26 almost 17min ..
Why does the arch takes such a long time .
Wed Feb 27 10:09:34 2002
ARC0: Beginning to archive log# 4 seq# 63533
ARC0: Completed archiving log# 4 seq# 63533
Wed Feb 27 10:09:43 2002
Thread 1 cannot allocate new log, sequence 63535
Checkpoint not complete
Current log# 5 seq# 63534 mem# 0: /oradata/SPRDPROD/log/redo05.log
Thread 1 advanced to log sequence 63535
Current log# 6 seq# 63535 mem# 0: /oradata/SPRDPROD/log/redo06.log
Wed Feb 27 10:09:45 2002
ARC0: Beginning to archive log# 5 seq# 63534
ARC0: Completed archiving log# 5 seq# 63534
Wed Feb 27 10:26:32 2002
Datatbase details
log_checkpoint_interval 10000
log_checkpoint_timeout 1800
log_checkpoints_to_alert FALSE
log_buffer 262144
logfile size 25M
Total 6 groups
Oracle8i Enterprise Edition Release 8.1.6.3.0 - Production
PL/SQL Release 8.1.6.3.0 - Production
CORE 8.1.6.0.0 Production
TNS for Solaris: Version 8.1.6.3.0 - Production
NLSRTL Version 3.4.0.0.0 - Production
This happens when batch job runs .massive writes ...
The main problem I think is the DBWR is not flusing the dirty buffer to the disk fast ?Once after completing the writes only the archival will come play ?
Check if u see relatively long time_waited for the “buffer busy wait” and “write complete wait” events in v$system_event.If yes , then DBWR is the culprit.
The solution to such a problem is either to compensate for the problem by making the checkpoint more aggressive, or to solve the problem by making the I/O more
efficient.
Check out the parameter FAST_START_IO_TARGET Instead of performing large checkpoints at periodic intervals, the database writer tries to keep the number of dirty blocks in the buffer cache low enough to guarantee rapid recovery in the event of a crash.
Also since u mentioned it is a batch update , why not enable nologgin feature and do direct inserts and also drop index and recreate after batch update.This shall reduce redo generation. But be sure to take backup if u enable nologging.
if your batch job is very large you should consider increase redo log file size or add more groups plus above two parameters settings
you may also consider set FAST_START_IO_TARGET to 0 in order to disable checkpoints forced by this parameter if you dont have any kind of service level agreement with your customer (instance recovery with you redo log size arent very slow anyway)
Bookmarks