apps-dba journal

A working journal for Oracle DBAs.

September 19, 2026

Oracle DBA Lesson 13A — Follow an Online Redo Group Through Reuse

Oracle DBA · Lesson 13A

Oracle DBA Lesson 13A — Follow an Online Redo Group Through Reuse

Online redo groups rotate in a circle. LGWR fills CURRENT, a log switch moves on, and a group is reused only when both the archive gate and the recovery gate are clear — previous is not the same as ready.

AI Ops Pro channel

Watch on YouTube

Oracle DBA Lesson 13A — Follow an Online Redo Group Through Reuse

AI Ops Pro

Circular reuse, not “old means free”

A typical database has a small set of online redo groups. LGWR writes into the group marked CURRENT. When that group fills (or you force a log switch), LGWR moves to the next group. The path is circular: Group 1 → Group 2 → Group 3 → back to Group 1.

  • PREVIOUS ≠ READY — a group that was used earlier is not automatically free to overwrite.
  • LGWR moves on only when the next group can accept redo.
  • Status moves through a lifecycle you will see in v$log: CURRENT → ACTIVE → INACTIVE (with UNUSED for a group that has not yet been written).

Group identity stays; sequence advances

On each rotation the physical group number stays the same. What advances is the log sequence number for that fill of the group.

  • GROUP# = physical identity of the online redo group (and its members).
  • SEQUENCE# = this rotation’s fill of that group.

A log switch hands LGWR the next ready group and bumps sequence for the new CURRENT fill. Thinking “we reused Group 2” without checking sequence and status is how people misread v$log.

Lifecycle status describes recovery need

Status is not decoration — it tells you whether that redo is still required for instance recovery:

  • CURRENT — receiving redo right now. Not a reuse candidate.
  • ACTIVE — no longer CURRENT, but still needed for instance recovery (checkpoint progress has not cleared it yet).
  • INACTIVE — recovery need for that fill has passed (for the instance-recovery gate).
  • UNUSED — not yet written. Unused is not an archive failure; it simply has not held redo yet.

CURRENT is never an “old reuse candidate.” You overwrite a group only after it is eligible — never while it is CURRENT.

Reuse requires two independent gates

Before LGWR can reuse a group, both gates must be satisfied:

  1. Archive gate (in ARCHIVELOG mode) — configured archive destinations have accepted a copy of that completed log (ARCHIVED = YES).
  2. Recovery gate — checkpoint progress has finished with the redo in that group, so status is no longer ACTIVE for recovery need.

Both gates before reuse. Archiving alone does not clear an ACTIVE group. Clearing recovery need alone does not satisfy ARCHIVELOG’s archival requirement.

Members are copies inside one group

Multiplexed members sit inside the same group — same redo, mirrored files — not extra groups and not extra sequences. Example shape:

  • REDO GROUP 2 → MEMBER A /redo1/group2.log and MEMBER B /redo2/group2.log (same redo).

On healthy members, v$logfile.status is often blank. Member problems show up there; group lifecycle status lives in v$log.

Read group state and member paths together

Group lifecycle and archived flag:

SELECT group#, thread#, sequence#, members, archived, status
FROM   v$log
ORDER  BY group#;

Member paths (and member-level status):

SELECT group#, member, status
FROM   v$logfile
ORDER  BY group#, member;

Read GROUP# + THREAD# + SEQUENCE# with ARCHIVED and STATUS from v$log, then join the picture to member paths via GROUP# in v$logfile.

Gotchas

  • Previous ≠ ready. Circular reuse waits on both gates.
  • ACTIVE + ARCHIVED = YES is still not automatically reusable — recovery need can still block overwrite.
  • UNUSED ≠ archive failure.
  • Members multiplex one group; they do not create extra sequences.
  • CURRENT receives redo; SEQUENCE# advances on each fill; STATUS tracks recovery need.

Quick quiz

Choose one answer, then submit. You’ll see the correct answer and a short why.

1. A group shows ACTIVE and ARCHIVED = YES. Is it automatically reusable?

2. After a log switch reuses the same physical group, what advances?

3. Which pair of views do you read together for group state and member paths?

No comments:

Post a Comment

Oracle DBA Lesson 14B — Recognize an In-Doubt Distributed Transaction

Oracle DBA · Lesson 14B Oracle DBA Lesson 14B — Recognize an In-Doubt Distributed Transaction A change that spans databases must...