Überblick
Online Redolog Dateien sind eine der wichtigsten Komponenten einer Oracle Datenbank. Eine Datenbank muss aus mindestens zwei Redolog Gruppen bestehen (je mehr umso besser). Eine Redolog Gruppe besteht aus mindestens einer Online Redolog Datei.
In hochverfügbaren Umgebungen sollte eine Redolog Gruppe aus mindestens zwei gespiegelten Online Redolog Dateien (Member) bestehen.
Jegliche Veränderungen bzw. Transaktionen der Datenbank werden in die Online Redolog Dateien geschrieben. Die Online Redolog Dateien haben eine zyklische Lebensdauer. Ist eine Online Redolog Datei vollgeschrieben wird ein sogenannter "Logswitch" durchgeführt und die nächste Online Redolog Datei wird verwendet und vollgeschrieben. Nach der letzten vollgeschriebenen Online Redolog Datei wird die erste Online Redolog Datei wieder "überschrieben" usw.
Alle Transaktionen und Veränderungen werden nach und nach aus den Online Redolog Dateien in die Tablespace(s) bzw. Datenfiles geschrieben.
Sobald das vollständig durchgeführt ist wird das durch ein sogenannten "Checkpoint" festgehalten. Deshalb ist äussert wichtig, dass mehrere Online Redolog Dateien vorhanden sind, da eine Redolog Datei erst wieder überschrieben werden kann, wenn alle Checkpoint's "completed" sind. Das kann u.U. zu massiven Performance einbussen führen, da die Datenbank solange wartet bis der Checkpoint "completed" ist.
Um eine Oracle Datenbank nach einem kompletten- oder Teilverlust wiederherstellen zu können (Restore/Recovery) oder auch eine Kopie der Datenbank erstellen zu können (Cloning), auch über die Lebensdauer der Online Redolog Dateien hinaus, muss sich die Datenbank im „Archivelog“ Modus befinden.
D.h. nach einem Logswitch wird eine Kopie der Online Redolog Datei(en) im Archivelog Verzeichnis abgelegt
Ein weiterer Vorteil des „Archivelog“ Modus ist, dass die Datenbank für ein konsistentes Backup nicht gestoppt werden muss.
Mit jedem "Logswitch" wird die sogenannte "Log Sequence Number" um eins erhöht. Jedes "Archived Redo Logfile" erhält somit eine eindeutig identifizierbare Nummer. Die "Log Sequence Number" ist bei einem Recovery von entscheidender Bedeutung. Fehlt eine "Log Sequence Number" in der Reihenfolge des Recovery, dann kann die Datenbank nicht mehr auf den gewünschten Zustand hergestellt werden.
Archivelog Modus abfragen
Mit dem SQL Befehl "archive log list" kann man den Archivelog Modus und weitere Informationen abfragen.
SQL> archive log list
Database log mode Archive Mode oder No Archive Mode
Automatic archival Enabled
Archive destination /opt/oracle/.../archive
Oldest online log sequence 1942
Next log sequence to archive 1944
Current log sequence 1944
Redolog Dateien abfragen
Information der Online Redolog Dateien kann man mit folgendem SQL Befehl abfragen.
SQL> set linesize 200 pagesize 200 feedback off
column "MEMBER" format a80
column "STATUS" format a10
select l.group#
,l.thread#
,''''||substr(f.member,1,100)||'''' as MEMBER
,substr(l.status,1,8) as STATUS
,l.bytes/1024/1024 as MB
from v$logfile f, v$log l
where f.group# = l.group#
union all
select l.group#
,l.thread#
,''''||substr(f.member,1,100)||'''' as MEMBER
,substr(l.status,1,8) as STATUS
,l.bytes/1024/1024 as MB
from v$logfile f, v$standby_log l
where f.group# = l.group#;
Redolog switch/checkpoint forcieren
Um einen Redolog switch zu erzwingen bevor dieses vollgeschrieben ist um z.B. ein aktuelles Backup des letzten Redolog’s zu erstellen.
SQL> alter system switch logfile;
alter system checkpoint;
Redolog Gruppe oder Member hinzufügen
SQL> alter database add [standby] logfile [group X] (<MEMBER>,<MEMBER>) size ...M [reuse]
SQL> alter database add [standby] logfile [group X] <MEMBER> size ...M [reuse]
SQL> alter database add [standby] logfile member <MEMBER> to group X [reuse]
SQL> alter database add logfile group 1 -
('/opt/oracle/oradata/XE/redo01a.rdo','/opt/oracle/oradata/XE/redo01b.rdo') size 200M;
alter database add logfile group 1 '/opt/oracle/oradata/XE/redo01a.rdo' size 200M; -- Neue Gruppe
alter database add logfile member '/opt/oracle/oradata/XE/redo01b.rdo' to group 1; -- Member der Gruppe hinzufügen
Redolog Gruppe oder Member löschen
SQL> alter database drop [standby] logfile group X
SQL> alter database drop [standby] logfile member <MEMBER>
SQL> alter database drop logfile group 1;
alter database drop logfile member '/opt/oracle/oradata/XE/redo01b.rdo';