RMAN- pełne odtwarzanie

Robimy pełny backup bazy

 
RMAN>connect target;
RMAN>backup database plus archivelog format '/home/oracle/%d_%T_%t.full_backup

Jeżeli mamy włączony automatyczny backup pliku controlfile

alter system switch logfile;

RMAN>backup archivelog from sequence 289;

Zapewni nam to że mamy logi obejmujące w sensie czasowym także moment backupu pliku controlfile

RMAN> restore controlfile from '/home/oracle/backup/o1_mf_s_722350017_621551wp_.bkp';


Rozpoczęcie restore o 10/06/23
używanie pliku sterującego docelowej bazy danych zamiast katalogu przywracania
przydzielono kanał: ORA_DISK_1
kanał ORA_DISK_1: sid=156 typ urz.=DISK

kanał ORA_DISK_1: przywracanie pliku sterującego
kanał ORA_DISK_1: ukończono odtwarzanie, upłynęło: 00:00:03
nazwa pliku wyjściowego=/home/oracle/oradata/testrman/control01.ctl
nazwa pliku wyjściowego=/home/oracle/oradata/testrman/control02.ctl
nazwa pliku wyjściowego=/home/oracle/oradata/testrman/control03.ctl
Zakończono restore o 10/06/23


RMAN> alter database mount;

używanie pliku sterującego docelowej bazy danych zamiast katalogu przywracania
baza danych zamontowana

Usuwamy stare backupy

RMAN> crosscheck backup;

jest używany kanał ORA_DISK_1
krzyżowo sprawdzony fragment kopii zapasowej: okazał się 'EXPIRED'
uchwyt fragmentu kopii zapas.=/home/oracle/TESTRMAN_20100622_722349838.full_backup 
  ...idrek=28 datownik=722349839

BS Klucz Rozmiar       Urządz. Typ Upływ czasu Czas ukończenia
------- ---------- ----------- ------------ ---------------
30      6.50K      DISK        00:00:01     10/06/22
        BP Klucz: 30   Stan: EXPIRED  Skompresowano: NO  Znacznik: TAG20100622T124655
        Nazwa fragmentu: /home/oracle/TESTRMAN_20100622_722350015.full_backup


RMAN> delete expired backupset;

Katalogujemy backupy

RMAN>catalog start with '/home/oracle/backup'

Odtwarzamy bazę, zmieniając ścieżki do plików

 run
{
 set newname for datafile 1 to '/home/oracle/oradata/testrman/system01.dbf';
 set newname for datafile 2 to '/home/oracle/oradata/testrman/undotbs01.dbf';
 set newname for datafile 3 to '/home/oracle/oradata/testrman/sysaux01.dbf';
 set newname for datafile 4 to '/home/oracle/oradata/testrman/blobtbs01.dbf';
 set newname for datafile 5 to '/home/oracle/oradata/testrman/indx01.dbf';
 set newname for datafile 6 to '/home/oracle/oradata/testrman/users01.dbf';
 set newname for datafile 7 to '/home/oracle/oradata/testrman/rbs01.dbf';
 set newname for datafile 8 to '/home/oracle/oradata/testrman/tools01.dba';
 set newname for datafile 9 to '/home/oracle/oradata/testrman/xdb01.dbf';
 restore database;
 SWITCH DATAFILE ALL;
 recover database;
 alter database open;
}

RMAN>RMAN-06054: media recovery requesting unknown log: thread 
             string seq string lowscn string

Powyższe polecenie niezupełnie zadziała. Dostaniemy błąd przy 'recover database'. RMAN zaraportuje że nie może znaleść archivalnego pliku loga. Dlaczego? Bierzący log nie został oczywiście zarchiwizowany. Jednak RMAN sprawdzając nagłówki plików bazodanowych dochodzi do wniosku że ich SCN jest starszy niż SCN najstarszego archiveloga. Dlatego szuka jeszcze jednego pliku. Aby tego nie robił należy wykonać polecenie 'set until sequence ... thread 1' na początku skryptu. Uwaga- musimy podać taki numer loga jaki wypluł RMAN(?do sprawdzenia?)