Nützliches zur Archivierung in 10g

06.
März
2008
Veröffentlicht von: Matthias Meyer

Sie haben Oracle 10g (oder höher) im Einsatz und (hoffentlich) die Archivierung eingeschaltet? Dann haben Sie - gemeinsam mit einem (hoffentlich) vorhandenen Backup - schon einmal die Grundlage für eine mögliche Wiederherstellung Ihrer Datenbank in einem (hoffentlich niemals) auftretenden Fehlerfall geschaffen.

Sie haben Oracle 10g (oder höher) im Einsatz und (hoffentlich) die Archivierung eingeschaltet? Dann haben Sie - gemeinsam mit einem (hoffentlich) vorhandenen Backup - schon einmal die Grundlage für eine mögliche Wiederherstellung Ihrer Datenbank in einem (hoffentlich niemals) auftretenden Fehlerfall geschaffen.

Aber sind Sie sich auch sicher, dass Sie dazu alles richtig konfiguriert haben und nicht Gefahr laufen, dass Ihnen plötzlich Ihre Datenbank stehen bleibt? Falls ja, dann können Sie an dieser Stelle mit dem Lesen des Monatstipps abbrechen und sich lieber einen anderen unserer (interessanten :-)) Beiträge ansehen. Falls nein, dann haben wir vielleicht noch ein paar nützliche Informationen bezüglich Ihrer Archivierung und der Nutzung der Flash Recovery Area.

 

Überprüfung der Archivierung

Die beste Variante zur Überprüfung der Archivierung bietet SQL*Plus. Hierzu ist eine Anmeldung als SYSDBA notwendig:

CONNECT sys/<pwd> as sysdba


ARCHIVE LOG LIST

Datenbank-Log-Modus              Archive-Modus
Automatische Archivierung             Aktiviert
Archivierungsziel            USE_DB_RECOVERY_FILE_DEST
Älteste Online-Log-Sequenz     85
Nächste zu archivierende Log-Sequenz   87
Aktuelle Log-Sequenz           87

Die Ausgabe besagt, dass die Archivierung eingeschaltet ist und als Archivierungsziel die Flash Recovery Area verwendet wird. Auf welches Verzeichnis das Ziel USE_DB_RECOVERY_FILE_DEST verweist, erhält man über einen der folgenden Befehle:

SHOW PARAMETER db_recovery_file_dest;

NAME                       … VALUE
-------------------------- … --------------------------------------------
db_recovery_file_dest      … C:\oracle\product\10.2.0/flash_recovery_area
db_recovery_file_dest_size … 2G


SELECT * FROM v$recovery_file_dest;

NAME                             SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NOF
-------------------------------- ----------- ---------- ----------------- ---
C:\oracle\product\10.2.0/flash_…  2147483648  806454784          11396608   7

Die weiteren Spalten der View V$RECOVERY_FILE_DEST haben im Einzelnen folgende Bedeutung:

  • SPACE_LIMIT: Gesamtgröße der Flash Recovery Area
  • SPACE_USED: Größe des bereits belegten Speicherplatzes
  • SPACE_RECLAIMABLE: Speicherplatz, der durch Löschen von obsoleten (also veralteten) Dateien wieder gewonnen werden könnte
  • NUMBER_OF_FILES: Anzahl, der über die Flash Recovery Area verwalteten Dateien

Achtung:

Die Größe der Flash Recovery Area ist bei einer Default Installation auf 2GB begrenzt!!

Sind diese 2GB bzw. das Gesamtlimit erreicht und es kann nicht weiter archiviert werden, bleibt Ihnen die Datenbank unweigerlich stehen. Sie müssen dazu Dateien aus der Flash Recovery Area löschen bzw. die zulässige Gesamtgröße erhöhen. In der Alert-Datei erhalten Sie eine entsprechende Fehlermeldung:

Errors in file c:\oracle\admin\o10g\bdump\o10g_arc1_3832.trc:
ORA-19815: WARNING: db_recovery_file_dest_size of 2147483648 bytes is 100.00% used, and has 0 remaining bytes available. 

Thu Jan 31 14:16:48 2008
********************************************************************
You have following choices to free up space from flash recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating
system command was used to delete files, then use RMAN CROSSCHECK and
DELETE EXPIRED commands.
********************************************************************
Thu Jan 31 14:16:48 2008
Errors in file c:\oracle\admin\o10g\bdump\o10g_arc1_3832.trc:
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 13220864 bytes disk space from 2147483648 limit
ARC1: Error 19809 Creating archive log file to
C:\ORACLE\FLASH_RECOVERY_AREA\O10G\ARCHIVELOG\2008_01_31\O1_MF_1_95_U_.ARC'
ARCH: Archival stopped, error occurred. Will continue retrying
Thu Jan 31 14:16:49 2008
Errors in file c:\oracle\admin\o10g\bdump\o10g_arc1_3832.trc:
ORA-16038: log 1 sequence# 95 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 1 thread 1: 'C:\ORACLE\ORADATA\O10G\REDO01.LOG'
Thu Jan 31 14:16:49 2008
ARCH: Archival stopped, error occurred. Will continue retrying
Thu Jan 31 14:16:49 2008
Errors in file c:\oracle\admin\o10g\bdump\o10g_arc0_288.trc:
ORA-16014: log 1 sequence# 95 not archived, no available destinations
ORA-00312: online log 1 thread 1: 'C:\ORACLE\ORADATA\O10G\REDO01.LOG'
All online logs needed archiving


Löschen von veralteten Backups bzw. Dateien

Das Löschen von Dateien aus der Flash Recovery Area allein auf Betriebssystemebene ist leider nicht mehr ausreichend. Der Speicherplatz, den die gelöschten Dateien belegt haben wird nicht automatisch freigegeben. Sie müssen hierzu das Oracle Tool "Recovery Manager" (RMAN) verwenden. Erst durch das Löschen über den RMAN werden die Dateien aus den Controldateien ausgetragen und der Speicherplatz wieder nutzbar. Dazu empfehlen wir folgendes Vorgehen:

Anmeldung über den RMAN an der Datenbank:

C:\> RMAN target sys/<pwd>@<tns_alias>

Überprüfung der erzeugten archivierten Redolg-Dateien und der erzeugten RMAN-Backups. Ist die Überprüfung für eine Datei nicht erfolgreich, ist diese auf Betriebssystemebene nicht mehr gefunden worden:

RMAN> crosscheck archivelog all;
RMAN> crosscheck backup;

Die nicht erfolgreich überprüften Dateien müssen nun endgültig gelöscht werden:

RMAN> delete expired archivelog all;
RMAN> delete expired backup;

Möglicherweise gibt es weitere Dateien, die zwar physisch noch vorhanden, aber selbst im Fehlerfall nicht mehr erforderlich sind und somit den Status OBSOLETE haben. Diese Dateien lassen sich ebenfalls ganz einfach löschen:

RMAN> report obsolete;
RMAN> delete obsolete;

Die Überprüfung des Speicherplatzes ergibt dann folgendes Ergebnis:

SELECT * FROM v$recovery_file_dest;

NAME                             SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NOF
-------------------------------- ----------- ---------- ----------------- ---
C:\oracle\product\10.2.0/flash_…  2147483648  795058176                 0   5

 

Anmerkungen

Grundsätzlich ist die Idee eines zentralen Verzeichnisses, das wichtige Dateien für Backup und Recovery Vorgänge übersichtlich verwaltet nicht uninteressant. Man darf als DBA dabei aber nie den administrativen Aufwand außer Acht lassen, der dadurch entsteht.

Sicherlich lässt sich auch dies über eine entsprechende RMAN-Konfiguration weitestgehend automatisieren. Die dafür nötigen Skripte werden Ihnen in einem späteren Tipp des Monats vorgestellt. Also regelmäßig wieder reinklicken :-)

Wollen Sie auf die Nutzung der Flash Recovery Area komplett verzichten, setzen Sie sich einfach einen (oder mehrere) der LOG_ARCHIVE_DEST_n-Parameter auf das gewünschte Verzeichnis. Aber auch hier müssen Sie natürlich für ausreichenden Speicherplatz sorgen.

Falls Sie jedoch das in 10g eingeführte FLASHBACK DATABASE-Feature nutzen wollen, kommen Sie um die Flash Recovery Area nicht herum, da die gesammelten Änderungen in Form von .FLB-Dateien nur dort abgelegt werden können.

Zum Schluss sind noch ein paar interessante Abfragen hinsichtlich der Archivierung und der Flash Recovery Area zusammengestellt:

SELECT dest_id, dest_name, status, destination, log_sequence
  FROM v$archive_dest;

SELECT name, dest_id, sequence#, first_time, next_time
  FROM v$archived_log;

SELECT * FROM v$flash_recovery_area_usage;

Neuerungen 10g Backup & Recovery DBA

Jede Menge Know-how für Sie!

In unserer Know-How Datenbank finden Sie mehr als 300 ausführliche Beiträge zu den Oracle-Themen wie DBA, SQL, PL/SQL, APEX und vielem mehr.
Hier erhalten Sie Antworten auf Ihre Fragen.