====== Flashback aktivieren ====== DB:10g\\ Aufgabe: Auf einer 10g Cluster Datenbank soll Flashback aktiviert werden. Die Datenspeicherung erfolgt über eine Oracle ASM Instance. Bisher wurde die Recovery Area Parameter nicht verwendet. Die Platte für die Archivelogs und RMAN Backups ist gross aber langsam, die Flashback Logs soll auf einer schnellen 100GB Lun abgelegt werden. Die Flashback Logs lassen sich aber nicht einzeln konfigurieren. Lösung für die Produktion:\\ - Archive werden per festen Pfad auf die ASM Platte für das Recovery RECO geschrieben - Backups werden per festen Pfad auf die ASM Platte für das Recovery RECO geschrieben - Flashback Log wird mit Parameter db_recovery_file_dest au fdie ASM FLASH Platte geschrieben (schnellere Platte als die ORARECO) ==== 1. Parameter anpassen auf allen Knoten ==== Paramter für Flashback Log vorbereiten in der init.ora log_archive_dest_1='location=+RECO' db_recovery_file_dest='+FLASH' db_recovery_file_dest_size=100GB retention_target=1440 ##entspricht 24h ==== 2. Datenbank komplett stoppen ==== srvctl stop database -d mydb ==== 3. Instance 1 im mount stadium starten ==== sys@sql> startup mount ==== 4. Flashback einschalten ==== Sqlplus> alter database flashback on; Sqlplus> alter database force logging; ==== 5. Datenbank stoppen ==== Sqlplus> shutdown immediate ==== 6. Cluster wieder zusammen starten ==== srvctl start database -d mydb ==== 7. testen ==== Sqlplus>Alter system archive log current; Sqlplus>select name from v$archived_log; Sqlplus>select name from GV$FLASHBACK_DATABASE_LOGFILE; ====== Restore Point setzen ====== Darauf achten, dass die Archivlogs die VOR dem Restore Points erzeugt wurden ( je nach Traffic auf der DB im Zeitraum von 1-2h) IMMER auch wieder zur Verfügung stehen! (Auf der Platte stehen lassen und nicht löschen.-) )! Restore Point setzen sqlplus / as sysdba sql>alter system checkpoint ; # Falls RAC auf jeder Instance anmelden und durchführen sql>alter system switch logfile; sql>alter system archive log current; # Restore Point anlegen mit (mit guarantee werden alle Logs aufbewahrt!) sql>create restore point my_name_yyyy_dd_mm_hh24_mi guarantee flashback database; oder mit (falls dann kein Platz ist, kann es passieren das Logs gelöscht werden!: sql>create restore point my_name_yyyy_dd_mm_hh24_mi; ====== Datenbank zurück setzen ====== Beispiel für ein Cluster: # Umgebung setzen # Cluster Datenbank stoppen srvctl stop database -d GPIDB #Mit RMAN auf den restore point zurücksetzen rman target / nocatalog rman>startup mount rman>list restore point all; rman>flashback database to restore point 'point my_name_yyyy_dd_mm_hh24_mi'; rman>alter database open resetlogs; rman>shutdown immediate; rman>quit # Cluster DB starten srvctl start database -d GPIDB Optional um etwas Plattenplatz freizugeben und einen aktuelleren Namen zu haben: * Alten Restore Point löschendrop restore point my_name_yyyy_dd_mm_hh24_mi; * Neuen Restore Point setzenCREATE restore point my_name_yyyy_dd_mm_hh24_mi guarantee flashback DATABASE; ===Fehler: ORA-38766 === Da der Plattenplatz nicht ausreichte, wurde versucht zwischen durch mit "alter database datafile .. resize .." die DB zu verkleinern. Ergebnis: RMAN> flashback database to restore point GPI_NOW; RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of flashback command at 06/05/2014 16:19:16 ORA-38766: cannot flashback data file 3; file resized smaller ORA-01110: data file 3: '/u01/oracle/oradata/GPIDB/undotbs01.dbf' Hier hilft dann nur ein Restore der DB aus dem Backup! Um auf einen Flashback point zurück gehen zu können, dürfen dazwischen die DB Files nicht mit "alter database datafile 3 resize .." verkleinert werden! Das kann Flashback nicht mehr zurück rollen! ==== Flashback ohne aktiviertes Flashback ===== 11g Wird ein "CREATE restore point my_name_yyyy_dd_mm_hh24_mi guarantee flashback DATABASE;" abgesetzt muss zuvor die Datenbank nicht im Flashback Modus sein! Wird der Befehl abgesetzt wird der Modus automatisch aktiviert. ====== Überwachungsscipt ====== SET linesize 130 pagesize 300 recsep OFF ttitle "Report Flashback Feature of the Database" SKIP 2 - column FLASHBACK_ON format A20 select FLASHBACK_ON from V$DATABASE / column INST_ID format A4 column RETENTION_TARGET format A20 column FLASH_SIZE format A20 column ESTIMATED_SIZE format A20 ttitle "Report Flashback Size of the Database" SKIP 2 - select to_char(INST_ID) as inst_id , RETENTION_TARGET ||' Minuten' RETENTION_TARGET , round((FLASHBACK_SIZE)/1024/1024) ||' MB' FLASH_SIZE , round((ESTIMATED_FLASHBACK_SIZE)/1024/1024)||' MB' ESTIMATED_SIZE from GV$FLASHBACK_DATABASE_LOG / ttitle "Report Flashback Logs of the Database" SKIP 2 - column last_first_time format A20 column maxsize format A10 select to_char(INST_ID) as inst_id ,max(LOG#) as last_logid ,to_char(max(FIRST_TIME),'dd.mm.yyyy hh24:mi') as last_first_time ,round(max(BYTES)/1024/1024)||' MB' as maxsize from GV$FLASHBACK_DATABASE_LOGFILE group by inst_id / ttitle " Flashback Restore Points" column scn format 99999999999999999 column RESTORE_POINT_TIME format a18 heading "RS P Time" column time format a18 heading "Time" column name format a30 heading "Name" column GUARANTEE_FLASHBACK_DATABASE format a6 heading "Garant." select scn , to_char(RESTORE_POINT_TIME,'dd.mm.yyyy hh24:mi') as RESTORE_POINT_TIME , to_char(TIME,'dd.mm.yyyy hh24:mi') as TIME , NAME , GUARANTEE_FLASHBACK_DATABASE from V$RESTORE_POINT; ttitle "Oldest possible time to flashback" SKIP 2 - select to_char(oldest_flashback_time,'dd-mon-yyyy hh24:mi:ss') as "Oldest possible time" from v$flashback_database_log / ttitle "Oldest possible SCN to flashback" SKIP 2 - column oldest_flashback_scn format 99999999999999999999999999 heading "Oldest possible SCN" select oldest_flashback_scn from v$flashback_database_log / ttitle "Report Flashback Logs Buffer" SKIP 2 - column name format A40 select * from v$sgastat where name like 'flashback%'; ttitle off {{tag>sql script}} ==== Quellen ==== Metalink: * Space issue in Flash Recovery Area( FRA ) (Doc ID 829755.1) * Db Hangs Because Archive Logs Get Not Deleted Although Enough Reclaimable Space (Doc ID 434049.1) * Archiver Hung On Ora-15041, FRA not Cleaning Files Automatically. (Doc ID 316281.1) * How is the space pressure managed in the Flash Recovery Area - An Example. (Doc ID 315098.1) Blogs: * http://jhdba.wordpress.com/2010/06/16/flashback-logging-at-tablespace-level/