Assume that the database has two log groups: log1 and log2. First, --> log1 --> log2 --> log1. At this time (log2 switches to log1), the checkpoint will be flush dirty block to datafile, this triggers dbwn to write dirty buffer. log1 can be used only after all dirty blocks covered by log1 are written to datafile. If dbwn writing is too slow, lgwr must wait for dbwn to complete, then "Checkpoint not completed!"
The answer from others is:
Log1-> log2, trigger Checkpoint 1
After log2 is full,
Log2-> log1, trigger Checkpoint 2
But if Checkpoint 1 is still not finished, then lgwr must wait. This is "logfile switch (checkpoint incompleted)" event.
In my understanding
1. the checkpoint can be successfully switched.
2. checkpoint1 blocks log2-> log1 switching.
3. No available redo logs will block normal data usage, and the database is short-lived.HangLiving.
I don't know, right? please correct me ~