Direkt zum Inhalt | Direkt zur Navigation

Benutzerspezifische Werkzeuge

This is SunRain Plone Theme

Sektionen

Sie sind hier: Startseite / DB / Oracle / RMAN-Sicherung / Wiederherstellung einer Datenbank zu einer früheren Inkarnation

RMAN-Sicherung / Wiederherstellung einer Datenbank zu einer früheren Inkarnation

RMAN-Sicherung / Wiederherstellung einer Datenbank zu einer früheren Inkarnation

Um eine unvollständiges recovery zu einer früheren Inkarnation durchführen zu können, müssen wir zunächst einmal verstehen, was eine Datenbank Inkarnation ist.

Eine Inkarnation ist eine neue Version einer Datenbank. Durch das Öffnen der Datenbank mit der Option "resetlogs" , archived Oracle die aktuellen Redo-Log- Dateien und löscht sie alle durch zurücksetzen der "sequence number" auf 1. Diese Option wird häufig nach einem unvollständigen "recovery" durchgeführt. Bei diesem "recovery" sind die Informationen aus den archivierten Redo-Log- Dateien teilweise , aber nicht vollständig "applied" worden. Daher müssen die Online-Redo- Log-Dateien zurückgesetzt werden.

Wenn die Datenbank mit der Option "resetlogs" geöffnet wurde, ist es nicht möglich, Backups, die hinter der neu geschaffenen Inkarnation gesichert wurden, zu verwenden.

In diesem Beispiel läuft die Datenbank im "Archive Mode".
Wir erstellen ein Backup:

Oracle_Backup.png

RMAN> backup database;

Wir erstellen ein Table:

SQL> create table t as select * from all_objects;
SQL> select count(*) from t;

  COUNT(*)
----------
     73123

und ermitteln die current_scn

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
    1494553

Wir löschen zunächst den Ihnalt der Table

SQL> delete from t;
SQL> commit;

und ermitteln die current_scn

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
    1495825

nun dropen wir die Table 1

SQL> drop table t;

und ermitteln die current_scn

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
    1499733

und führen ein Logswitch durch:

SQL> alter system switch logfile;

Als nächstes ermitteln wir allen Inkarnationen der Datenbank:

SQL> select incarnation#, resetlogs_change# from v$database_incarnation;

INCARNATION# RESETLOGS_CHANGE#
------------ -----------------
           1           1297455
           2           1298116
           3           1480405
           4           1480374

Der DBA führt nun eine "incomplete recovery" durch. Er restoret die Datenbank vor dem dropen der Tabelle t, also bis scn 1495825

SQL> shutdown immediate
SQL> startup mount
RMAN> run{
 set until scn 1495825;
 restore database;
 recover database;
}
RMAN> alter database open resetlogs;

Da die Datenbank mit der Option "resetlogs" geöffnet wurde, wurde eine neue Inkarnation geschaffen. Wir überprüfen die neue Inkarnation und die wiederhergestellte Tabelle:

SQL> select incarnation#, resetlogs_change# from v$database_incarnation;

INCARNATION# RESETLOGS_CHANGE#
------------ -----------------
           1           1297455
           2           1298116
           3           1480405
           4           1480374
           5           1495826

SQL> select * from t;

no rows selected

Die neue Inkarnation wurde erstellt und die Tabelle erfolgreich wiederhergestellt, ohne Inhalt. Nach diesem recovery wiederherstellen wir die Datenbank bis zum Löschbefehl:

SQL> shutdown immediate
SQL> startup mount
RMAN> run{
 set until scn 1494553;
 restore database;
 recover database;
}

Wir bekommen eine Fehlermeldung, dass die "until scn" Klausel, wo die Daten gesichert wurden, nicht "recoverd" werden können

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 11/29/2013 15:49:13
RMAN-20208: UNTIL CHANGE is before RESETLOGS change

Der DBA erstellt eine Liste von allen Datenbank Inkarnationen, und setzt die Datenbank in einer früheren Inkarnation und führt eine unvollständige Wiederherstellung durch:
RMAN> list incarnation of database;

List of Database Incarnations
DB Key  Inc Key DB Name  DB ID            STATUS  Reset SCN  Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1       1       RAC02DB  1920955460       PARENT  1297455    2013-11-28:11:28:14
2       2       RAC02DB  1920955460       PARENT  1298116    2013-11-28:12:00:24
4       4       RAC02DB  1920955460       PARENT  1480374    2013-11-29:13:52:43
3       3       RAC02DB  1920955460       ORPHAN  1480405    2013-11-29:10:02:44
5       5       RAC02DB  1920955460       PARENT  1495826    2013-11-29:15:32:25
6       6       RAC02DB  1920955460       CURRENT 1499671    2013-11-29:15:44:13

RMAN> shutdown immediate
RMAN> startup mount
RMAN> reset database to incarnation 5;
 
RMAN> run {
set until scn 1494553;
restore database;
recover database;
}
SQL> select count() from t;

COUNT(*)
----------
     72839





Artikelaktionen

abgelegt unter:
Kommentieren

Sie können einen Kommentar abgeben, indem Sie das untenstehende Formular ausfüllen. Nur Text. Web- und E-Mailadressen werden in anklickbare Links umgewandelt. Kommentare werden moderiert.

Enter the word