Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:flashback

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:

  1. Archive werden per festen Pfad auf die ASM Platte für das Recovery RECO geschrieben
  2. Backups werden per festen Pfad auf die ASM Platte für das Recovery RECO geschrieben
  3. 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öschen
    DROP restore point my_name_yyyy_dd_mm_hh24_mi;
  • Neuen Restore Point setzen
    CREATE 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

flash.sql
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

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:

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
"Autor: Gunther Pipperr"
dba/flashback.txt · Zuletzt geändert: 2014/08/30 13:52 von gpipperr