Die Datenbank löscht in der FRA grundsätzlich alle Dateien, die nicht mehr zwingend benötigt werden, bzw. als obsolet markiert sind. Die Prozesse der Datenbank gehen dabei nach einem einfachen
Mechanismus vor, und löschen alle als obsolet gekennzeichneten Dateien in chronologischer Reihenfolge. Allerdings löscht die Datenbank nicht sofort, wenn eine Datei als obsolet markiert wurde, sondern
erst wenn die FRA (DB_RECOVERY_FILE_DEST_SIZE) einen gewissen Grenzwert überschritten hat - und dann auch nur so viele Dateien, dass der FRA Füllgrad wieder unter diesen Schwellenwert fällt.
Wann aber werden die unterschiedlichen Dateitypen als obsolet gekennzeichnet?
- Permanente Dateien, wie Online Redo-Logs und Controlfiles werden niemals als obsolet gekennzeichnet.
- Flashback-Logs sind immer sofort als "obsolet" gekennzeichnet, aus diesem Grund ist auch die Zeit für ein Flashback der Datenbank (DB_FLASHBACK_RETENTION_TIME) niemals garantiert.
Ausnahme: Die Existenz eines garantieren Rücksetzpunktes (guaranteed Restore Point)!. Dies führt dazu, dass die Flashback-Logs nicht als obsolet markiert werden, bis dieser
Rücksetzpunkt gelöscht wurde.
- Den Zeitpunkt, wann Backups, Compressed Backup Sets oder Image Kopien der Datenbank obsolet werden, bestimmt die RETENTION POLICY im RMAN. So kann dies abhängig von verfügbaren Backups
auf Platte sein (RETENTION POLICY TO REDUNDANCY 2 => 2 Backups müssen immer auf Platte vorhanden sein) oder ein gewisser Zeitraum (RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS => Backups werden erst
dann auf obsolet gesetzt, wenn sie nicht mehr für ein Restore innerhalb der letzten 7 Tage benötigt werden).
- Archive Logs wiederum richten sich nach der ARCHIVELOG DELETION POLICY. Hier kann u.A. definiert werden, wie of diese in einem Backup enthalten sein sollen (BACKUP 2 TIMES) oder ob sie bei Data Guard
Umgebungen nach dem SHIPMENT zur Standby oder nach dem APPLY auf der Standby gelöscht werden sollen. Die interessanteste und am meißten Verwirrung stiftende Einstellung ist dabei der Default "NONE". Dieser besagt
nämlich nicht, wie vermutet, dass es keine Deletion Policy gibt, sondern dass die Archivierten Redo-Logs solange aufbewahrt werden müssen, wie sie für ein Flashback oder ein Recovery des letzten Backups benötigt werden
und mindestens 1x in einem Backup gesichert sein müssen. Diese Einstellung "NONE" führt deshalb häufig dazu, dass die Datenbank auf Grund einer vollen FRA steht.
Interessant ist jetzt noch der Schwellenwert, der das Löschen von freizugebenden Dateien auslöst, da dieser sich im Laufe der Oracle Datenbank Releases verändert hat.
So war dieser Wert bei 10g 98% des DB_RECOVERY_AREA_DEST_SIZE Wertes und wurde in 11gR2 auf 85% gesenkt, da es in einigen Grenzfällen bei kurzfristig gesteigertem Redo-Log Aufkommen zu
Performance Beeinträchtigungen kam. Allerdings sind 85% bei einer großen FRA durchaus ein nicht zu vernachlässigender Platzverlust (Bei 3 TB FRA entspricht das ca. 500 GB!). Nicht ganz unbedeutend,
wenn man mehrere Backups in der FRA vorrätig haben möchte. Dieser Wert kann aber - gerade bei großen FRAs - über einen Event in der Datenbank angepasst werden,
allerdings unter Abwägung der oben genannten Performance beeinflussenden Tatsache.
Dies würde den Schwellenwert auf 95% setzen.
Wie oben schon erwähnt muss (gerade bei 10g) darauf geachtet werden, dass nicht einfach nur der Speicherort der FRA im RMAN bzw. als
ARCHIVE_LOG_DEST_N hinterlegt ist. Folgende Einstellungen würden somit den DB_RECOVERY_FILE_DEST Mechanismus umgehen, obwohl dasselbe Verzeichnis/ASM Diskgruppe verwendet wird:
Für die Verwendung der ARCHIVE_LOG_DEST sollte (wie oben schon erwähnt) deswegen location=USE_DB_RECOVERY_FILE_DEST verwendet werden.
Ein ähnliches Problem ergibt sich bei RMAN, wenn das Backup des Controlfiles direkt angegeben ist:
Auch hier sollte der Parameter mit "configure controlfile autobackup format for device type disk clear;" auf den Default Wert zurückgestellt werden.