====== Probleme beim Sichern der DB lösen ====== In regelmäßigen Abständen sind die Logfile der Sicherung zu überprüfen. (siehe: /opt/oracle/admin/\backup\backup_.log) !ACHTUNG!\\ NIE Dateien die RMAN angelegt hat, einfach per Komandozeile löschen! Die Dateien sind dann noch weiterhin im Katalog vorhanden und es kann zu Fehlern beim Backup/Recovery kommen! Mit dem Script am Ende der Seite regelmäßig prüfen, ob die Flash Recovery Area nicht vollläuft! ===== Fehler - Fehlende Archivelog ===== Falls per Hand ein archiviertes Redolog gelöscht wird bzw. nicht mehr vom RMAN auffindbar ist, werden die Archive nicht mehr in ein Backupset gesichert und automatisch von der Festplatte gelöscht. Es besteht die Gefahr, dass die Platte voll läuft. Fehlermeldungen: RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of backup command at 08/26/2006 14:48:03 RMAN-06059: expected archived log not found, lost of archived log compromises recoverability ORA-19625: Fehler beim Identifizieren von Datei /opt/oracle/flash_recovery_area/#ORADBSID#/ARCHIVE\#ORADBSID#_1_73.DBF ORA-27041: Íffnen der Datei nicht m÷glich OSD-04002: Datei kann nicht ge÷ffnet werden O/S-Error: (OS 3) Das System kann den angegebenen Pfad nicht finden. 1.Prüfen, ob diese Datei noch evtl. in einem anderen Verzeichnis existiert, dort ablegen und erneut mit RMAN eine Sicherung durchführen.\\ 2.Falls Datei nicht mehr auffindbar:\\ Mit den Befehlen „crosscheck backup“ und „crosscheck archivelog all“ kann der Catalog von RMAN geprüft werden. Alle nicht auffindbaren Dateien werden auf „expiered“ gesetzt und müssen per Hand einzeln mit „change archivelog delete“ oder komplett mit „delete expiered“ gelöscht werden. Beispiel: start RMAN $ export ORACLE_HOME=/opt/oracle/product/10.2.0/db_1 $ export ORACLE_SID=#ORADBSID# $ rman rman> connect target / Befehle absetzen: RMAN> crosscheck backup; RMAN> crosscheck archivelog all; RMAN> delete expired backup; RMAN> delete expired archivelog all; oder bei Problemen mit dem automatischen Löschen: RMAN> change archivelog delete; Falls die Fehlermeldung kommt, dass der Header der Datei defekt sei oder Ähnliches, ist gelegentlich das Archive oder das Backupset auf der Platte einfach wirklich defekt. Dann die bemängelte Datei auf Kommando Ebene löschen und nochmals probieren. ====== Plattenplatz wird zu klein ====== A) Sicherungsfenster verkleinern\\ Falls der Plattenplatz auf Dauer nicht ausreicht, kann auch das Sicherungsfenster verkleinert werden, zum Beispiel auf 5 Tage. RMAN>CONFIGURE RETENTION POLICY TO REDUNDANCY 2; Nun löscht man die Backups die nicht mehr für das Sicherungsfenster benötigt werden. RMAN> delete obsolete; Möglichst NIE von RMAN geschriebene Dateien einfach per HAND löschen! Dann muss auch umständlich von Hand der Katalog gepflegt werden! Immer anders herum vorgehen, einfach RMAN die Daten löschen lassen! Alternativ: Je nach Sicherungsstrategie können noch bereits gesicherte DELETE archivelog from sequence 1000 thread 1 backed up 1 times to device type SBT_TAPE; ===== B) Backupsets auf neues Laufwerk um verlagern ===== Natürlich kann die Sicherung der Backupsets auch auf ein anderes Laufwerk verlegt werden. Dazu wird einfach das Format der Backupsets neu gesetzt. Achtung! Das alte Verzeichnis muss noch solange existieren, wie dort Sicherungen aus der aktuellen Policy liegen! Je nach Einstellungen werden die Daten nach und nach vom alten Sicherungsort für die Backupsets gelöscht RMAN> CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT "/u02/opt/oracle/flash_recovery_area/#ORADBSID#/backupset\#ORADBSID#_%U"; Achtung! Auf die Archivelogs und die Autobackups achten! Je nach Bedarf können diese Daten ebenfalls verlegt werden. Autobackup verlegen: RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u02/opt/oracle/flash_recovery_area/#ORADBSID#/backupset\#ORADBSID#_%F'; ===== Archivelogs verlegen: ===== An der DB anmelden: $ export ORACLE_HOME=/opt/oracle/product/10.2.0/db_1 $ export ORACLE_SID=#ORADBSID# $ sqlplus /nolog sql> connect / as sysdba Archivlog Parameter LOG_ARCHIVE_DEST='/opt/oracle/flash_recovery_area/ptmp\archivelog' auf ein neues Verzeichnis setzen und diese auch in der init.ora festschreiben (DB verwendet SPFILE!). Prüfen: sql> show parameter LOG_ARCHIVE_DEST NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest string /opt/oracle/flash_recovery_area/#ORADBSID#/archive Setzen: sql> alter system set LOG_ARCHIVE_DEST='/u02/opt/oracle/flash_recovery_area/#ORADBSID#/archivelog' scope=both; System wurde geõndert. Prüfen: sql> show parameter LOG_ARCHIVE_DEST NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest string /u02/opt/oracle/flash_recovery_area/#ORADBSID#/a rchive sql>alter system switch logfile; System wurde geõndert. Nun muss im neuen Verzeichnis auch eine Datei auftauchen! Überprüfen, ob im alten Verzeichnis noch Archive registriert sind! SQL>column name format a40 SQL> SQL> select recid,SEQUENCE#,name,to_char(next_time,'dd.mm.yyyy hh24:mi'),status from v$archived_log order by SEQUENCE# desc; RECID SEQUENCE# NAME TO_CHAR(NEXT_TIME) STATUS --------------------------------------- ----------------------------------- 11 82 /opt/oracle/flash_recovery_area/#ORADBSID#/ARCHIVELOG\ 26.08.2006 15:04 A #ORADBSID#_1_82.DBF 10 81 /opt/oracle/flash_recovery_area/#ORADBSID#/ARCHIVELOG\ 26.08.2006 14:58 A #ORADBSID#_1_81.DBF ...... Falls JA, mit RMAN wegsichern! RMAN> backup archivelog all delete input; Die Dateien sollten von der Platte gelöscht werden. Erneut prüfen, ob alle SCN'S auch in einem Backupset vorkommen: RMAN>show backup .... Liste mit archivierten Logs in Backup-Satz 11 Thrd Seq Niedrige SCN Niedrige Zeit Nõchste SCN Nõchste Zeit ---- ------- ---------- ------------- ---------- --------- 1 81 58867 26.08.09 59195 26.08.09 1 82 59195 26.08.09 59464 26.08.09 ... ====== Größe Recovery Area überwachen ===== SET linesize 130 pagesize 300 recsep OFF ttitle "Report Recovery Dest Parameter" SKIP 1 - center "Sizes in MB" SKIP 2 show parameter reco column LIMIT format a10 column used format a10 column RECLAIMABLE format a10 column NUMBER_OF_FILES format a6 heading "Files" column Used format a6 select to_char(round(SPACE_LIMIT/1024/1024,2))||'M' as LIMIT ,to_char(round(SPACE_USED/1024/1024,2))||'M' as used ,to_char(round(SPACE_RECLAIMABLE/1024/1024,2))||'M' as RECLAIMABLE ,to_char(NUMBER_OF_FILES) as NUMBER_OF_FILES ,to_char(round((SPACE_USED*100)/SPACE_LIMIT,2),'09D00') as Used from V$RECOVERY_FILE_DEST / ttitle off {{tag>sql script}}