Przyczyny awarii Archiwizowanie danych i odtwarzanie po awarii 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 Struktury wykorzystywane do odtwarzania bd dziennik powtórzeń (ang. redo log) segmenty wycofania (ang. rollback segments) pliki kontrolne (ang. control files) Archiwizowanie plików dziennika automatyczne manualne informacja o trybie pracy dziennika SQL> archive log list Database log mode No Archive Mode Automatic archival Disabled Archive destination d:\dysk2\log_archives Oldest online log sequence 73 Current log sequence 76 SQL> SELECT log_mode FROM v$database;
Automatyczne archiwizowanie plików dziennika powtórzeń SQL> alter database archivelog; SQL> shutdown log_archive_start = true // ver<10g log_archive_max_processes = 2 //domyślnie log_archive_dest_1 _1 = "location=d:\dysk2\log_archives" log_archive_dest_state_1 = enable //domyślnie log_archive_format = arch%d%t %d%t%s.arc%s.arc SQL> startup włączenie archiwizacji w czasie pracy bd SQL> alter system archive log start; Wyłączanie automatycznej archiwizacji SQL> alter database noarchivelog; SQL> shutdown log_archive_start = false SQL> startup W czasie pracy SQL> alter system archive log stop; Archiwizowanie manualne SQL> alter system archive log all; 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 Sposoby archiwizowania bazy danych archiwizacja fizyczna całej w trybie offline archiwizacja fizyczna w trybie online tylko dla pracującej w trybie ARCHIVELOG archiwizacja plików kontrolnych backup logiczny przy pomocy narzędzi Export/Import
Archiwizacja w trybie offline określenie nazw i ścieŝek dostępu do wszystkich plików SQL> SELECT * FROM v$datafile; SQL> SELECT * FROM v$logfile; SQL> SELECT * FROM v$controlfile; sporządzenie kopii plików za pomocą poleceń zatrzymanie instancji SQL> SHUTDOWN systemu operacyjnego ponowne wystartowanie instancji SQL> STARTUP Archiwizacja w trybie online przełączyć uruchomićbazędanych w trybie ARCHIVELOG odczytaćnumer sekwencyjny Oldest online log sequence SQL> archive log list wybraną przestrzeńtabel w tryb archiwizacji wyłączyć 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 tryb archiwizacji dla przestrzeni tabel wskazanej w kroku 3 SQL> alter tablespace nazwa_przestrzeni 2> end backup; 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'; 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
Archiwizacja pliku kontrolnego (2) Odtwarzanie CREATE CONTROLFILE REUSE DATABASE "LAB" NORESETLOGS NOARCHIVELOG LOGFILE MAXLOGFILES 32 MAXLOGMEMBERS 2 MAXDATAFILES 20 MAXINSTANCES 16 MAXLOGHISTORY 1600 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 DATAFILE 'D:\DYSK1\LAB\LABSYSTEM.DBF', 'D:\DYSK1\LAB\LABDANE.DBF', 'D:\DYSK2\LAB\LABTEMP.DBF', 'D:\DYSK2\LAB\LABRBS.DBF'; informacje, czy baza danych wymaga odtwarzania nagłówki plików danych nagłówek pliku kontrolnego dwie fazy rolling forward rolling back Odtwarzanie w trybie NOARCHIVELOG Zamknięcie poleceniem shutdown lub shutdown abort Wgranie wszystkich plików z ostatniej kopii bezpieczeństwa na ich właściwe miejsca Otwarcie poleceniem startup Odtwarzanie w trybie ARCHIVELOG odtwarzanie pełne całej przestrzeni tabel pliku danych w przypadku utraty pliku kontrolnego odtwarzanie niepełne
Odtwarzanie pełne wgranie plików DANYCH z kopii bezpieczeństwa SQL> recover database 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 Odtwarzanie przestrzeni tabel recover [automatic] [from 'ścieŝka_log'] tablespace przestrzeń1,..., przestrzeńn ; wgranie kopii archiwalnej pliku przestrzeni tabel SQL> alter database datafile 2> 'd:\dysk1\lab\labdane.dbf' offline; SQL> alter database open SQL> alter tablespace lab_dane 2> offline temporary; Odtwarzanie przestrzeni tabel (2) Odtwarzanie pliku danych 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 Log applied. Media recovery complete. SQL> alter tablespace lab_dane online; recover [automatic] [from 'ścieŝka_log'] datafile plik 1,..., plik n ; wgranie kopii archiwalnej pliku przestrzeni tabel SQL> alter database datafile 2> 'd:\dysk1\lab\labdane.dbf' offline; SQL> alter database open
Odtwarzanie pliku danych (2) 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. Media recovery complete SQL> alter database datafile 2> 'd:\dysk1\lab\labdane.dbf' online; Odtwarzanie niepełne w trybie ARCHIVELOG cofa bazędanych do momentu z przeszłości do określonego punktu w czasie (ang. time based) 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 startup drop table R; t0 t1 t2 t3 arch01.arc arch02.arc Odtwarzanie niepełne w trybie pełna kopia plików ARCHIVELOG (2) startup Odtwarzanie niepełne w trybie ARCHIVELOG (3) pracująca baza danych nr sekw.=21 nr sekw.=21 nr sekw.=21 nr sekw.=21 t0 t1 t2 t3 t4 t5 t6 awaria: uszkodzeniu uległy dwa pliki danych nr sekw.=21 nr sekw.=21 nr sekw.=21 nr sekw.=21 arch01.arc arch03.arc arch05.arc arch02.arc arch04.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: wczytanie wszystkich plików danych z kopii bezpieczeństwa po niepełnym odtworzeniu nr sekw.=21 nr sekw.=9 nr sekw.=9 nr sekw.=9 nr sekw.=21 nr sekw.=15 nr sekw.=15 nr sekw.=15 SQL> alter database open resetlogs; po otwarciu z opcjąresetlogs nr sekw.=1 nr sekw.=1 nr sekw.=1 nr sekw.=1
Odtwarzanie do punktu w czasie wgranie plików DANYCH z kopii bezpieczeństwa Uwaga: nie wgrywaćplikówwgrywać kontrolnych, jeŝeli nie uległy uszkodzeniu i plików dziennika powtórzeń Odtwarzanie pliku kontrolnego zmodyfikowanie pliku initsid.ora REMOTE_LOGIN_PASSWORDFILE=SHARED SQL> startup nomount SQL> recover database 2> until time '1998-08-19:08:18:50'; SQL> alter database open resetlogs; 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;