Odtwarzanie bazy danych - Politechnika Poznańska
Transkrypt
Odtwarzanie bazy danych - Politechnika Poznańska
Przyczyny awarii
Archiwizowanie danych
i odtwarzanie bazy danych po awarii
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Struktury wykorzystywane do
odtwarzania bd
dziennik powtórzeń (ang. redo log)
segmenty wycofania (ang. rollback segments)
pliki kontrolne (ang. control files)
błędy uŜytkowników, np. przypadkowe usunięcie
danych
błędy w oprogramowaniu aplikacyjnym
awarie procesów uŜytkowników
awarie sieci
awarie zasilania
awarie sprzętu, np. procesora, pamięci operacyjnej
awarie nośników danych
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Archiwizowanie plików dziennika
automatyczne
manualne
informacja o trybie pracy dziennika
SQL> archive log list
Database log mode
Automatic archival
Archive destination
Oldest online log sequence
Current log sequence
No Archive Mode
Disabled
d:\dysk2\Log_Archives
73
76
SQL> SELECT log_mode FROM v$database;
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Automatyczne archiwizowanie
plików dziennika powtórzeń
Wyłączanie automatycznej
archiwizacji
SQL> startup mount
SQL> startup mount
SQL> alter database archivelog;
archivelog;
SQL> alter database noarchivelog;
noarchivelog;
SQL> shutdown
log_archive_start = true // ver<10g
log_archive_max_processes = 2 //domyślnie
log_archive_dest_1
log_archive_dest_1 = "location=
location=d:\dysk2\Log_Archives"
log_archive_dest_state_1 = enable //domyślnie
log_archive_format = arch%d%t
%s.arc
arch%d%t%s.arc
SQL> startup
włączenie archiwizacji w czasie pracy bd
SQL> alter system archive log start;
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
SQL> shutdown
log_archive_start = false
SQL> startup
W czasie pracy bazy danych
SQL> alter system archive log stop;
Archiwizowanie manualne
SQL> alter system archive log all;
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Sposoby archiwizowania bazy
danych
Archiwizowanie danych - zalecenia
archiwizowanie plików najpierw na dysk, a
następnie na inny nośnik
utrzymywanie grup plików dziennika powtórzeń
posiadających przynajmniej po dwa pliki
odrębny dysk dla zarchiwizowanych danych
wiele kopii pliku kontrolnego, kaŜda na odrębnym
dysku
sporządzenie kopii archiwalnej pliku kontrolnego
po zmianie struktury bazy danych
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
archiwizacja fizyczna całej bazy danych w trybie
offline
archiwizacja fizyczna w trybie online
tylko dla bazy danych pracującej w trybie
ARCHIVELOG
archiwizacja plików kontrolnych
backup logiczny przy pomocy narzędzi
Export/Import
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Archiwizacja w trybie offline
określenie nazw i ścieŜek dostępu do wszystkich plików
bazy danych
SQL> SELECT * FROM v$datafile;
SQL> SELECT * FROM v$logfile;
SQL> SELECT * FROM v$controlfile;
zatrzymanie instancji
SQL> SHUTDOWN
sporządzenie kopii plików bazy danych za pomocą poleceń
systemu operacyjnego
ponowne wystartowanie instancji
SQL> STARTUP
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Archiwizacja w trybie online (2)
Powtórzyć kroki 3, 4 i 5 dla pozostałych przestrzeni tabel
Odczytać numer sekwencyjny Current log sequence
SQL> archive log list
Wymusić przełączenie plików
SQL> alter system switch logfile;
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
Wykonać kopię bezpieczeństwa pliku kontrolnego
SQL> alter database backup controlfile
2> to 'nazwa_pliku';
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Archiwizacja w trybie online
uruchomić bazę danych w trybie ARCHIVELOG
odczytać numer sekwencyjny Oldest online log sequence
SQL> archive log list
przełączyć wybraną przestrzeń tabel w tryb archiwizacji
SQL> alter tablespace nazwa_przestrzeni
2> begin backup;
wykonać kopie bezpieczeństwa wszystkich plików składających
się na wybraną w kroku 3 przestrzeń tabel
wyłączyć
tryb archiwizacji dla przestrzeni tabel wskazanej w
kroku 3
SQL> alter tablespace nazwa_przestrzeni
2> end backup;
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Archiwizacja pliku kontrolnego
utworzenie pliku binarnego
alter database backup controlfile
to ’nazwa_pliku';
zapisanie w pliku tekstowym polecenie
tworzącego plik kontrolny
alter database backup controlfile
to trace;
plik o nazwie OraXXX.trc
w katalogu wskazywanym przez
USER_DUMP_DEST
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Archiwizacja pliku kontrolnego (2)
CREATE
CONTROLFILE
NOARCHIVELOG
MAXLOGFILES 32
MAXDATAFILES 20
REUSE
DATABASE
"LAB"
NORESETLOGS
MAXLOGMEMBERS 2
MAXINSTANCES 16
MAXLOGHISTORY 1600
LOGFILE
GROUP 1 'D:\DYSK1\LAB\LABLOG1.ORA'
SIZE 200K,
GROUP 2 'D:\DYSK1\LAB\LABLOG2.ORA'
SIZE 200K,
GROUP 3 'D:\DYSK1\LAB\LABLOG3.ORA'
SIZE 200K
Odtwarzanie bazy danych
informacje, czy baza danych wymaga
odtwarzania
nagłówki plików danych
nagłówek pliku kontrolnego
dwie fazy
rolling forward
DATAFILE
'D:\DYSK1\LAB\LABSYSTEM.DBF',
rolling back
'D:\DYSK1\LAB\LABDANE.DBF',
'D:\DYSK2\LAB\LABTEMP.DBF',
'D:\DYSK2\LAB\LABRBS.DBF';
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Odtwarzanie w trybie
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Odtwarzanie w trybie ARCHIVELOG
NOARCHIVELOG
Zamknięcie bazy danych poleceniem shutdown
lub shutdown abort
Wgranie wszystkich plików bazy danych z
ostatniej kopii bezpieczeństwa na ich właściwe
miejsca
Otwarcie bazy danych poleceniem startup
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
odtwarzanie pełne
całej bazy danych
przestrzeni tabel
pliku danych
w przypadku utraty pliku kontrolnego
odtwarzanie niepełne
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Odtwarzanie pełne bazy danych
SQL> shutdown abort
wgranie plików DANYCH z kopii bezpieczeństwa
Odtwarzanie przestrzeni tabel
recover [automatic] [from 'ścieŜka_log']
tablespace przestrzeń1, ..., przestrzeńn;
SQL> shutdown abort
SQL> startup mount
wgranie kopii archiwalnej pliku przestrzeni tabel
SQL> recover database
SQL> startup mount
ORA-00279: Change 346796 generated at 06/06/97 10:14:15
needed for thread 1
ORA-00289: Suggestion : /ora/oradata/archive/arch1361.arc
ORA-00280: Change 346796 for thread 1 is in sequence #1361
Log applied.
Media recovery complete.
SQL> alter database open
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Odtwarzanie przestrzeni tabel (2)
SQL> recover tablespace lab_dane;
ORA-00279: Change 8415 generated at 08/18/98 17:20:26 needed
for thread 1
ORA-00289: Suggestion : d:\dysk2\Log_Archives\arch00082.arc
ORA-00280: Change 8415 for thread 1 is in sequence #82
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
SQL> alter database datafile
2> 'd:\dysk1\lab\labdane.dbf' offline;
SQL> alter database open
SQL> alter tablespace lab_dane
2> offline temporary;
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Odtwarzanie pliku danych
recover [automatic] [from 'ścieŜka_log']
datafile plik1, ..., plikn;
SQL> shutdown abort
wgranie kopii archiwalnej pliku przestrzeni tabel
Log applied.
Media recovery complete.
SQL> alter tablespace lab_dane online;
SQL> startup mount
SQL> alter database datafile
2> 'd:\dysk1\lab\labdane.dbf' offline;
SQL> alter database open
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Odtwarzanie pliku danych (2)
Odtwarzanie niepełne w trybie
ARCHIVELOG
„cofa” bazę danych do momentu z przeszłości
do określonego punktu w czasie (ang. time based)
SQL> recover datafile
2> 'd:\dysk1\lab\labdane.dbf';
ORA-00279: Change 8415 generated at 08/18/98 17:20:26 needed
for thread 1
ORA-00289: Suggestion : d:\dysk2\Log_Archives\arch00082.arc
ORA-00280: Change 8415 for thread 1 is in sequence #82
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
Log applied.
recover [automatic][from 'ścieŜka_log'] database
until time 'YYYY-MM-DD:HH24:MI:SS';
do przerwania (ang. cancel based)
recover [automatic][from 'ścieŜka_log'] database
until cancel;
pełna kopia plików
bazy danych
Media recovery complete
t0
SQL> alter database datafile
2> 'd:\dysk1\lab\labdane.dbf' online;
drop table R;
startup
t1
t2
t3
arch01.arc arch02.arc
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Odtwarzanie niepełne w trybie
ARCHIVELOG (2)
Odtwarzanie niepełne w trybie
ARCHIVELOG (3)
kontrol1.ctl
projekt1.dbf
projekt2.dbf
nr sekw.=21
nr sekw.=21
projekt1.dbf
projekt2.dbf
nr sekw.=21
nr sekw.=21
projekt1.dbf
projekt2.dbf
indeksy.dbf
pracująca baza danych
pełna kopia plików
bazy danych
startup
nr sekw.=21
kontrol1.ctl
t0
t1
t2
t3
t4
t5
t6
arch03.arc
arch05.arc
arch04.arc
arch02.arc
baza danych w stanie niespójnym:
• numer sekwencyjny pliku kontrolnego jest inny (większy)
niŜ numery sekwencyjne plików danych
• wymaga wyzerowania numerów sekwencyjnych polecenie:
kontrol1.ctl
nr sekw.=21
indeksy.dbf
kontrol1.ctl
nr sekw.=9
nr sekw.=9
projekt1.dbf
projekt2.dbf
nr sekw.=15
nr sekw.=15
projekt1.dbf
projekt2.dbf
nr sekw.=9
indeksy.dbf
po niepełnym odtworzeniu
bazy danych
nr sekw.=21
nr sekw.=15
indeksy.dbf
po otwarciu bazy danych
z opcją RESETLOGS
nr sekw.=1
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
nr sekw.=21
wczytanie wszystkich plików
danych z kopii bezpieczeństwa
kontrol1.ctl
SQL> alter database open resetlogs;
indeksy.dbf
awaria: uszkodzeniu uległy
dwa pliki danych
nr sekw.=21
arch01.arc
nr sekw.=21
nr sekw.=1
nr sekw.=1
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
nr sekw.=1
Odtwarzanie do punktu w czasie
SQL> shutdown abort
wgranie plików DANYCH z kopii bezpieczeństwa
Uwaga:
Uwaga: nie wgrywać plików kontrolnych,
kontrolnych, jeŜeli nie
uległy uszkodzeniu i plików dziennika powtórzeń
Odtwarzanie pliku kontrolnego
SQL> shutdown abort
zmodyfikowanie pliku initSID.ora
REMOTE_LOGIN_PASSWORDFILE=SHARED
SQL> startup nomount
SQL> startup mount
SQL> recover database
2> until time '1998-08-19:08:18:50';
SQL> alter database open resetlogs;
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Odtwarzanie pliku kontrolnego (2)
SQL> CREATE CONTROLFILE REUSE DATABASE "LAB" NORESETLOGS ARCHIVELOG
2>
MAXLOGFILES 32
3>
MAXLOGMEMBERS 2
4>
MAXDATAFILES 20
5>
MAXINSTANCES 16
6>
MAXLOGHISTORY 1600
7> LOGFILE
8>
GROUP 1 'D:\DYSK1\LAB\LABLOG1.ORA' SIZE 500K,
9>
GROUP 2 'D:\DYSK1\LAB\LABLOG2.ORA' SIZE 500K,
10>
GROUP 3 'D:\DYSK1\LAB\LABLOG3.ORA' SIZE 500K,
11>
GROUP 4 'D:\DYSK1\LAB\LABLOG4.ORA' SIZE 500K
12> DATAFILE
13>
'D:\DYSK1\LAB\LABSYSTEM.DBF',
14>
'D:\DYSK1\LAB\LABDANE.DBF',
15>
'D:\DYSK2\LAB\LABTEMP.DBF',
16>
'D:\DYSK2\LAB\LABRBS.DBF';
SQL> alter system archive log all;
SQL> alter database open;
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
(c) 1997-2000, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ