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?)
Łukasz Goszczyński goszczu.pl