Cannot allocate new log - Private strand flush not complete

Question:  I just upgraded to Oracle 10g release 2 and I keep getting this error in my alert log
Thread 1 cannot allocate new log, sequence 509
Private strand flush not complete
Current log# 2 seq# 508 mem# 0: /usr/local/o1_mf_2_2cx5wnw5_.log
Current log# 2 seq# 508 mem# 1: /usr/local/o1_mf_2_2cx5wrjk_.log

What causes the "private strand flush not complete" message?

Answer:  This is not a bug, it's the expected behavior in 10gr2. 

The "private strand flush not complete" is a "noise" error, and can be disregarded because it relates to internal cache redo file management.  It does not necessarily mean that you have a problem, but it depends if the error message is accompanied by other errors.
This "private strand flush cannot complete" error is sometimes accompanied by other errors/mistakes that cause a hung database.  
  • Some DBA's blame a sub-optimal DBWR configuration for the "private strand flush not complete" error.  See "DB_WRITER_PROCESSES" MOSC 67422.1, and "Understanding and Tuning Buffer Cache and DBWR", MOSC Note: 62172.1. 
  • Some DBA's note that this error message can be caused by a too-full datafile.  Check your data file space, and add space to any nearly full data files.
Oracle MOSC note 372557.1 says that a "strand" is a new 10gr2 term for redo latches.  It notes that a strand is a new mechanism to assign redo latches to multiple processes, and it's related to the log_parallelism parameter.  The note says that the number of strands depends on the cpu_count.

When you switch redo logs you will see this alert log message since all private strands have to be flushed to the current redo log. 

No comments: