2008-10-04

ORACLE RECOVERY

szacowanie ilości danych do wprowadzenia przy odtwarzaniu (róznica pomiędzy tym co w plikach danych a tym co w redologach):

SELECT * FROM v$instance_recovery;

wymagane do archiwizacji:

  • v$datafile
  • v$controlfile
  • v$logfile
  • SPFILE.ora
  • PWD.ora

przełączenie całej bazy do archiwizacji:

ALTER DATABASE BEGIN|END BACKUP;

sprawdzenie plików w procesie backupu:

SELECT file#,status FROM v$backup;

ustawianie takiego samego nr SCN dla wszystkich plików danych-CHECKPOINT:

ALTER SYSTEM SWITCH LOGFILE;

kopia pliku kontronlnego:

ALTER DATABASE BACKUP CONTROLFILE TO '';

ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

wywołanie checkpointa:

ALTER SYSTEM CHECKPOINT;

podano za http://www.ploug.org.pl/plougtki.php?action=read&p=8&a=6

zawartość naglówka pliku danych:

start SCN,
nr sekwencyjny bieżącego redologa w momencie punktu kontrolnego,
licznik punktów kontrolnych dla danego pliku

zawartość controlfile:

stop SCN dla kazdego pliku danych (dla pracującej bazy nieskończony),
nr sekwencyjny bieżącego redologa w momencie punktu kontrolnego,
licznik punktów kontrolnych dla każdego pliku danych

zamknięcie bazy (normal,imediate) to zrobienie punktu kontrolnego czyli:

  1. zwiększenie licznika punktów kontrolnych w nagłówku pliku danych
    oraz zwiekszenie licznika punktów kontrolnych w controlfile dla w/w pliku,
  2. uaktualnienie nr sekwencyjnego bieżącego redologa w nagłówku pliku danych i w controlfile
  3. stop SCN dla określonego pliku danych w controlfile przyjmuje taką wartość jak start SCN tego pliku

uruchomienie bazy (sprawdzenie czy):

  1. licznik punktów kontrolnych w nagłówku pliku = licznik punktów kontrolnych w controlfile dla pliku
  2. nr sekwencyjny bieżącego redologa w nagówku pliku = nr sekwencyjny w controlfile
  3. start SCN w pliku danych = stop SCN w controlfile dla pliku

W przypadku gdy baza danych zostanie zamknięta w trybie ABORT punkt kontrolny nie zostanie wykonany. Oznacza to, że wartości stop SCN (w pliku kontrolnym) dla wszystkich plików danych nie zostaną zrównane z odpowiadającymi im wartościami start SCN (por. rysunek 3b). Jeżeli pliki danych nie zostały wczytane z kopii bezpieczeństwa, to po ponownym otwarciu bazy danych liczniki punktów kontrolnych i numery sekwencyjne w plikach danych posiadają takie same wartości, jak odpowiadające im liczniki i numery sekwencyjne w pliku kontrolnym. Natomiast, wartości parametrów start SCN i stop SCN są różne. Oznacza to, że system powinien zaaplikować zmiany zapisane we włączonych (online) plikach dziennika powtórzeń.

W przypadku gdy po zamknięciu bazy danych dowolny plik danych zostanie zastąpiony plikiem archiwalnym, wartość licznika punktów kontrolnych i numer sekwencyjny w jego nagłówku nie będą zgodne z odpowiadającymi im wartościami w pliku kontrolnym. Niezgodność ta zostanie wykryta w momencie otwierania bazy danych. Wówczas system zgłosi potrzebę odtworzenia bazy danych. Po wydaniu odpowiedniego polecenia, do archiwalnego pliku danych zostaną zaaplikowane zmiany pochodzące ze zarchiwizowanych plików dziennika powtórzeń. Do pliku danych będą aplikowane zmiany zapisane w plikach dziennika począwszy od numeru wskazywanego w nagłówku tego pliku danych, a skończywszy na pliku dziennika wskazywanym w pliku kontrolnym - dla odtwarzania pełnego lub wskazanym pliku dziennika - dla odtwarzania częściowego.

Zaleca się sporządzanie kopii jednej przestrzeni tabel w danej chwili. Oprócz archiwizacji plików składających się na przestrzenie tabel, należy sporządzić również kopie pliku kontrolnego i wszystkich zarchiwizowanych plików dziennika powtórzeń zapisywanych w czasie archiwizacji przestrzeni. W celu odtworzenia stanu bazy danych na podstawie kopii archiwalnej, wykonanej w trybie online, system musi zaaplikować zapisy ze wszystkich tych zarchiwizowanych plików dziennika powtórzeń, które zostały utworzone w czasie między wydaniem polecenia alter tablespace ... begin backup, a alter tablespace ... end backup. Do odtworzenia pełnego są również potrzebne pozostałe zarchiwizowane pliki dziennika, zapisane po zakończeniu archiwizacji.

W celu wykonania archiwizacji fizycznej w trybie online całej bazy danych należy wykonać poniższe operacje:
  1. Uruchomić bazę danych w trybie ARCHIVELOG
  2. Odczytać numer sekwencyjny najstarszego włączonego (online) pliku dziennika powtórzeń (Oldest online log sequence) wydając polecenie: sql> archive log list
    W celu odtworzenia bazy danych w przypadku awarii nośników niezbędne będzie zaaplikowanie zapisów w zarchiwizowanych plikach dziennika powtórzeń o numerach począwszy od numeru sekwencyjnego najstarszego włączonego (online) pliku dziennika powtórzeń.
  3. Przełączyć wybraną przestrzeń tabel w tryb archiwizacji wydając polecenie:
    sql> alter tablespace nazwa_przestrzeni begin backup;
  4. Wykonać kopie bezpieczeństwa wszystkich plików składających się na wybraną w kroku 3przestrzeń tabel.
  5. Wyłączyć tryb archiwizacji dla przestrzeni tabel wskazanej w kroku 3 wydając polecenie:
    sql> alter tablespace nazwa_przestrzeni end backup;
  6. Powtórzyć kroki 3, 4 i 5 dla pozostałych przestrzeni tabel.
  7. Odczytać numer sekwencyjny bieżącego pliku dziennika powtórzeń (Current log sequence) wydając polecenie:
    sql> archive log list
    Current log sequence
    określa numer ostatniego zarchiwizowanego pliku dziennika powtórzeń, którego kopię należy sporządzić aby możliwe było odtworzenie bazy danych.
  8. Wymusić przełączenie plików dziennika poleceniem:
    sql> alter system switch logfile;
  9. Wykonać kopię bezpieczeństwa wszystkich zarchiwizowanych plików dziennika powtórzeń począwszy od pliku o numerze określonym w kroku 2, a skończywszy na pliku o numerze określonym w kroku 7.
  10. Wykonać kopię bezpieczeństwa pliku kontrolnego wydając polecenie:
    sql> alter database backup controlfile to 'nazwa_pliku';