wtorek, 19 maja 2015

RMAN podstawy Odtworzenie bazy danych Oracle po awarii



Logowanie

Oprócz poniżej opisywanych metod możemy logować się stosując

do SQLPlus
sqlplus / as sysdba

do RMAN
rman target /


1. Odtworzenie bazy danych Oracle po awarii


Logujemy się do RMAN

rman TARGET SYS/Password NOCATALOG

potem zamykamy bazę i uruchamiamy w trybie mount

RMAN:> shutdown immediate;
RMAN:> startup mount;


przywracamy do stanu z konkretnej daty

RMAN> run
{
allocate channel dev1 type disk;
set until time "to_date('2011-12-30:00:00:00', 'yyyy-mm-dd:hh24:mi:ss')";
restore database;
recover database; }

 
otwieramy bazę resetując dzienniki zdarzeń

RMAN> alter database open resetlogs;

W kolejnym punkcie szczegółowy opis

2. Jak wykonać Backup pełny i różnicowy bazy danych Oracle (XE).

Baza musi być w trybie ARCHIVELOG. Aby to sprawdzić, w jakim trybie
jest baza, należy połączyć się do SQLPlus na konto SYS, wpisując w terminalu

sqlplus sys/haslo as sysdba

wykonujemy zapytanie

SQL> SELECT LOG_MODE FROM SYS.V$DATABASE;

Jeśli baza jest w trybie NOARCHIVELOG, to należy przełączyć ją w tryb ARCHIVELOG:

wykonujemy polecenia

SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;
SQL> exit;

wychodzimy z SQLPlus

Przechodzimy do narzędzia RMAN logujemy się na konto SYS

wpisujemy

RMAN

a następnie

RMAN> connect target sys/haslo

Włączenie automatycznych kopii pliku kontrolnego
Kiedy zostanie nawiązane połączenie z bazą należy wykonać

RMAN> configure controlfile autobackup on

Prawidłowe działanie backupu bazy wymaga wykonanie przynajmniej jednego backupu pełnego. Wykonujemy następujące polecenie, przy założeniu, że {path} jest ścieżką do folderu do którego zapisywane będą pliki backupu. Folder taki musimy wcześniej utworzyć w wybranym przez siebie miejscu na dysku.

run {
backup incremental level 0 as compressed backupset
spfile format '{path}/%d_%I_%s_FULL_%U.spfile'
database format '{path}/%d_%I_%s_FULL_%U.database'
plus archivelog delete all input format
'{path}/%d_%I_%s_FULL_%U.archivelog';
backup as compressed backupset current controlfile format
' {path}/%d_%I_%s_FULL_%U.controlfile';
}

Po wykonaniu backupu pełnego możliwe jest wykonywanie backupów różnicowych.
Aby wykonać backup różnicowy musimy w narzędziu RMAN wykonać poniższe polecenie. Podobnie jak w przypadku pełnego {path} jest ścieżką do folderu do którego zapisywane będą pliki backupu.

run {
backup incremental level 1 as compressed backupset
spfile format '{path}/%d_%I_%s_DIFF_%U.spfile'
database format '{path}/%d_%I_%s_DIFF_%U.database'
plus archivelog delete all input format
'{path}/%d_%I_%s_DIFF_%U.archivelog';
backup as compressed backupset current controlfile format
'{path}/%d_%I_%s_DIFF_%U.controlfile';
}

3. Odtwarzanie bazy Oracle (XE) 

Odtworzenie bazy danych z wykonanego backupu, na docelowym hoście musi spełniać następujące warunki konieczne
  • ta sama wersja Oracle, 
  • baza danych musi mieć tę samą nazwę,  
  • struktura wszystkich katalogów bazy danych musi być taka sama jak na oryginalnym hoście.  
  • pliki backupu muszą znajdować w takiej samej ścieżce do której zostały utworzone.

logujemy się na konto SYS i wpisujemy:

RMAN

a następnie:

RMAN> connect target sys/haslo

również możemy zalogować w następujący sposób


RMAN> rman target /

Po zalogowaniu należy wykonywać kolejne polecenia:

RMAN> shutdown immediate;
RMAN> set dbid {DBID};
(parametr DBID widoczny jest po zalogowaniu do bazypoleceniem RMAN)
RMAN> startup force nomount;
 
Następnie przy założeniu, że {SpfilePath}będzie pełną ścieżką do pliku o rozszerzeniu .spfile znajdującego się w folderze {path},najświeższy plik spfile, a{tmp}będzie dowolnym folderem tymczasowym, wykonujemy polecenia:

RMAN> restore spfile to pfile '{tmp}/init.ora'from'{SpfilePath}';RMAN> shutdown immediate;RMAN> startup nomount pfile='{tmp}/init.ora';
 
Następnie przy założeniu, że {ControlfilePath} będzie pełną ścieżką do pliku o rozszerzeniu .controlfile znajdującego się w folderze {path},najświeższy plik controlfile , wykonać polecenia:
 
RMAN> restore controlfile from '{ControlfilePath}';RMAN> alter database mount;
 
Następnie dla każdego pliku w folderze {path}należy wykonać poniższą komendę, wstawiając pod {FilePath} pełną ścieżkę pliku.
 
RMAN> catalog backuppiece '{FilePath}';
 
Następnie należy wykonywać kolejno polecenia:

RMAN> restore database;
RMAN> recover database;
RMAN> sql 'create spfile from pfile';
RMAN> alter database open resetlogs;
RMAN> shutdown immediate;
RMAN> startup;RMAN> exit; 


To już wszystko