System Monitor Process Monitor Zakleszczenia Locks Odzyskiwanie rozproszone Odświeżanie migawek Zapytania równoległe SMON PMON LCK Tx RECO SNPn Pnnn Strojenie,administracja itp Adam Pelikant SGA System Global Area Pozostałe procesy Pamięć współdzielona Shared_Pool_size Obszar SQL Bufor słownika Serwer współdzielony Shared Server [PGA] Bufor plików danych Bufor plików wycofywania DB_Block_Buffers & DB_block_size DBWR CKPT LGWR Użytkownik [UGA] Pliki danych Pliki wycofywania ARCH SQL Area is also known as Library Cache init.ora Plik parametrów Pliki kontrolne Archiwalne pliki wycofywania Pliki związane z system ORACLE Pliki ostrzeżeń Pliki związane z system ORACLE Pliki danych Pliki śladu Pliki kontrolne Plik parametrów Struktura fizyczna bazy danych pliki parametrów (konfiguracyjne), pliki dziennika powtórzeń (co najmniej 2), pliki kontrolne, pliki danych, pliki ostrzeżeń, pliki śladu, archiwalne pliki dziennika powtórzeń Pliki dziennika powtórzeń Arch. pliki dziennika powtórzeń 1
Plik parametrów definiuje instancję i jest plikiem o charakterze tekstowym. Zawiera parametry konfiguracyjne. Utrata pliku parametrów powoduje utratę ustawień instancji. Plik parametrów jest odczytywany w momencie startu instancji. Jakiekolwiek zmiany zawartości pliku zostaną uwzględnione po zamknięciu i ponownym uruchomieniu instancji. Domyślna nazwa pliku parametrów ma postać init<sid_bazy>.ora Parametry konfiguracyjne dotyczą między innymi: nazwy bazy danych, wielkości obszaru SGA, trybu pracy bazy danych, nazwy i położenia plików kontrolnych położenia plików śladu i ostrzeżeń Plik parametrów Plik inicjalizacyjne (parametrów) umożliwiają: optymalizację wydajności przez dostosowanie struktury pamięci (np. ilość buforów danych w pamięci), ustawienie wartości domyślnych dla całej bazy w momencie tworzenia, ustawienie limitów bazy (np. maksymalna ilość użytkowników bazy), wyspecyfikowanie plików bazy. Plik SPFILE (server parameter file) Administrator może przechowywać parametry inicjalizacyjne serwera w pliku binarnym (SPFILE). Plik ten jest binarnym repozytorium przechowującym parametry serwera. SPFILE jest przechowywany na serwerze, na którym zainstalowany jest Serwer Oracle. W przeciwieństwie do pliku parametrów, zmiany wartości parametrów wprowadzone w czasie działania instancji są odnotowywane w pliku SPFILE. Tak więc nie ma konieczności ręcznego edytowania pliku parametrów. Pliku SPFILE nie można edytować ręcznie. SPFILE tworzony jest komendą CREATE SPFILE na podstawie tekstowego pliku parametrów. Polecenie STARTUP domyślnie korzysta z pliku SPFILE. Jeżeli zamiast pliku binarnego chcemy skorzystać z tekstowego pliku parametrów to należy w poleceniu STARTUP użyć klauzuli PFILE. Jeśli natomiast SPFILE został utworzony lub nie znajduje się w odpowiedniej lokalizacji, system domyślnie skorzysta z tekstowego pliku parametrów init<sid_bazy>.ora. Tworzenie pliku SPFILE CREATE SPFILE FROM PFILE= /opt/oracle/init.ora CREATE SPFILE= /opt/oracle/orcl_spfile.ora FROM PFILE= /opt/oracle/init.ora Parametr SPFILE zawiera informację o aktualnym położeniu pliku SERVER PARAMETER FILE. Aby do startu instancji wykorzystać inny niż domyślny plik SPFILE należy w tekstowym pliku parametrów wpisać parametr SPFILE, np. SPFILE=/opt/oracle/orcl_spfile.ora a następnie uruchomić serwer komendą STARTUP np. STARTUP PFILE=/opt/oracle/init.ora 2
Zmiana parametrów ALTER SYSTEM wzbogacone o parametr SCOPE. Przywrócenie domyślnych wartości parametrów Parametr SCOPE może przyjmować następujące wartości: SPFILE MEMORY BOTH zmiana parametru zapisywana jest w tylko pliku SPFILE. Polecenie ALTER SYSTEM SET nie wpływa w tym przypadku na zmianę parametru w instancji zmiana parametru odnosi się do aktualnie działającej instancji nie ma wpływu na plik SPFILE. jest to domyślna wartość parametru. Zmiana parametru odbywa się jednocześnie w pliku SPFILE i w instancji. Aby przywrócić domyślne ustawienia parametrów można posłużyć się poleceniem: ALTER SYSTEM SET parametr=' '; Jednak dla parametrów o typie numerycznym lub logicznym trzeba jawnie wyspecyfikować domyślną wartość parametru. ALTER SYSTEM SET JOB_QUEUE_PROCESSES=20 SCOPE=SPFILE; ALTER SYSTEM SET JOB_QUEUE_PROCESSES=20 SCOPE=BOTH; ALTER SYSTEM SET JOB_QUEUE_PROCESSES=20 SCOPE=MEMORY; Eksport pliku SPFILE do pliku tekstowego PFILE Zawartość pliku binarnego można wyeksportować do pliku tekstowego w tym celu można posłużyć się poleceniem CREATE PFILE. CREATE PFILE= /opt/oracle/init.ora FROM SPFILE= /opt/oracle/orcl_spfile.ora ; Plik kontrolny Plik kontrolny zawiera informacje o fizycznej strukturze bazy danych oraz pewne informacje kontrolne potrzebne przy odtwarzaniu. W związku z tym, że dane zawarte w pliku kontrolnym są niezbędne do otwarcia i pracy bazy danych oraz do odtwarzania, bardzo często powiela się plik kontrolny na innym dysku (wskazane co najmniej dwa!!!). Parametry i ich wartości można odnaleźć w perspektywie słownika danych V$PARAMETER lub za pomocą polecenia SHOW PARAMETER. 3
Plik kontrolny Na wielkość plików kontrolnych mają wpływ między innymi następujące parametry: MAXLOGFILES MAXLOGMEMBERS MAXDATAFILES określa maksymalną ilość grup dziennika powtórzeń, jaka kiedykolwiek zostanie utworzona w bazie danych. Wartość domyślna, minimalna oraz maksymalna uzależniona jest od systemu operacyjnego. określa maksymalna ilość poszczególnych plików dla każdej grupy dziennika powtórzeń. Wartość minimalna wynosi 1, wartość maksymalna uzależniona jest od systemu operacyjnego. określa szacunkową wielkość bazy danych. Parametr ten jest ściśle związany z parametrem startowym DB_FILES, który określa maksymalną ilość plików wchodzących w skład bazy danych. Plik kontrolny Zawartość pliku kontrolnego określa między innymi: nazwę i datę utworzenia bazy danych, informacje o wszystkich grupach dziennika powtórzeń wraz ze wskazaniem bieżącej grupy: Nazwę, rozmiar i lokalizację każdego pliku dziennika, Numer sekwencyjny bieżącego pliku dziennika, nazwę, rozmiar i lokalizację oraz status (tylko do odczytu, odczyt/zapis, włączony/wyłączony/wymagający odtworzenia) każdego pliku danych, informacje dotyczące punktu kontrolnego, Informacje synchronizujące, potrzebne do odtworzenia bazy danych, informacje dotyczące wykonanych kopii bezpieczeństwa przy otwartej bazie danych. Plik kontrolny Parametry pliku konfiguracyjnego związane z plikiem kontrolnym: CONTROL_FILES=("plik1, "plik2,...) określa nazwy i położenie plików kontrolnych. Przykład: CONTROL_FILES=("C:\Baza\Ctl1Baza.ora, "C:\Baza\Ctl2Baza.ora ) Aby dodać nowy plik kontrolny dla istniejącej bazy należy: wyeksportować plik SPFILE do pliku tekstowego, zamknąć bazę danych, skopiować istniejący plik kontrolny w nowe miejsce, zmienić parametr CONTROL_FILES w pliku parametrów, utworzyć nowy plik SPFILE ze zmodyfikowanego pliku tekstowego, otworzyć bazę danych. V$CONTROLFILE informacje o lokalizacji plików kontrolnych w bazie danych. V$CONTROLFILE_RECORD_SECTION szczegółowe informacje o wszystkich rekordach zawartych w pliku kontrolnym. Punkt kontrolny (checkpoint) Cyklicznym zdarzeniem systemowym, dzięki któremu proces DBWR zapisuje dane z bloków bufora danych pamięci SGA do odpowiednich plików na dysku. Informacje odnośnie punktu kontrolnego zachowywane są w pliku kontrolnym. Modyfikowane są także informacje zawarte w pliku kontrolnym oraz nagłówki plików danych, wpisywane są tam: Data i czas zarejestrowania oraz numer ostatniego SCN w momencie wystąpienia zdarzenia, Liczba punktów kontrolnych wykonanych dla pliku danych. Punkt kontrolny zgłaszany jest przez proces CKPT. Punkt kontrolny można wymusić przy pomocy polecenia SQL: ALTER SYSTEM CHECKPOINT; 4
Rodzaje punktu kontrolnego Punkt kontrolny bazy danych: Wykonywany jest dla wszystkich plików. Występuje, gdy zaistnieje którakolwiek z poniżej wymienionych okoliczności: Przełączenie na inną grupę dziennika powtórzeń, Stan określony parametrami LOG_CHECKPOINT_TIMEOUT LOG_CHECKPOINT_INTERVAL FAST_START_IO_TARGET Administrator wymusił punkt kontrolny poleceniem: ALTER SYSTEM CHECKPOINT; Dokonano zamknięcia instancji w trybie NORMAL/IMMEDIATE/ TRANSACTIONAL. Punkt kontrolny plików danych: Jest wykonywany dla określonych plików danych. Występuje, gdy zaistnieje którakolwiek z poniżej wymienionych okoliczności: Rozpoczęto wykonywanie kopii bezpieczeństwa wybranych przestrzeni tabel poleceniem: ALTER TABLESPACE nazwa_przestrzeni BEGIN BACKUP; Wyłączono przestrzeń tabel z przynajmniej jednym plikiem w stanie online poleceniem: ALTER TABLESPACE nazwa_przestrzeni OFFLINE; Punkt kontrolny W pliku kontrolnym i w nagłówku każdego pliku danych są przechowywane informacje o punkcie kontrolnym, m.in.: numer SCN w czasie wystąpienia punktu kontrolnego, data i czas zarejestrowania SCN, licznik punktów kontrolnych (checkpoint counter). Licznik punktów kontrolnych informuje o liczbie punktów kontrolnych wykonanych dla pliku danych. Jego wartość jest zwiększana każdorazowo po wystąpieniu punktu kontrolnego dla pliku danych. Pliki śladu (trace files) Zawierają informacje o błędach, jakie wystąpiły w trakcie pracy instancji. Pliki śladu są plikami tekstowymi. Błędy wykrywane są przez proces serwera lub procesy tła. Pliki śladu mogą zawierać także wszystkie polecenia realizowane w ramach sesji. Wśród statystyk, które mogą być zbierane przez narzędzie TRACE są ilości czasu zajmowane przez pewne działania (opcja TIMED_STATISTIC=True). wartość tę można ustawić w pliku init<sid>.ora/spfile, za pomocą polecenia ALTER SYSTEM, lub dla danej sesji (poleceniem ALTER SESSION). Wzrost obciążenia po włączeniu tej opcji jest nieznaczny. Pliki śladu (trace files) Parametry związane z plikami śladu: BACKGROUND_DUMP_DEST USER_DUMP_DEST SQL_TRACE=TRUE TIMED_STATISTICS=TRUE podaje ścieżkę na dysku, gdzie umieszczane są pliki śladu z opisem błędów wykrytych przez procesy tła. podaje ścieżkę na dysku, gdzie umieszczane są pliki śladu z opisem błędów wykrytych przez proces serwera. podawany w pliku parametrów powoduje włączenie zapisu do plików śladu informacji na temat realizowanych poleceń SQL. Informacje o błędach zapisywane są niezależnie od wartości tego parametru. podawany w pliku parametrów powoduje włączenie generowania statystyki dotyczącej ilości czasu potrzebnego do wykonania poleceń Parametry mogą być włączone dla bieżącej sesji poleceniem: ALTER SESSION SET SQL_TRACE=True; ALTER SESSION SET TIMED_STATISTICS=True; 5
Plik ostrzeżeń (alert file) Plik tekstowy zawierający chronologicznie uporządkowane komunikaty o błędach oraz inne informacje. MS Windows NT: Plik ostrzeżeń posiada nazwę alert_<sid>.log. UNIX: Plik ostrzeżeń posiada nazwę alert-sid.log Zawartość pliku ostrzeżeń: Komunikaty o błędach wewnętrznych. Błędy mówiące o uszkodzeniu bloków dyskowych. Błędy mówiące o zakleszczeniach. Informacje dotyczące operacji wykonywanych na bazie danych tzn.: zamknięcie lub otwarcie bazy, działania administratorskie przy pomocy poleceń DDL (zmiana struktury bazy danych), ARCHIVE LOG, RECOVER, wartości parametrów konfiguracyjnych z jakimi otwarto bazę danych. Błędy w odświeżaniu migawek. Pliki dziennika powtórzeń Zawierają informacje o wszystkich zmianach w bazie danych (co zostało zmienione w wierszu, co zostało zapisane w segmencie wycofania, czy transakcja została potwierdzona, czy był realizowany punkt kontrolny, czy jest transakcja rozproszona,...) i są wykorzystywane podczas odtwarzania. W pliku konfiguracyjnym BACKGROUND_DUMP_DEST - podaje ścieżkę na dysku, gdzie umieszczany jest plik Pliki dziennika powtórzeń Pliki dziennika powtórzeń (redo log files) Dysk1 Dysk2 Pliki Dziennika Powtórzeń Grupa 1 Grupa 2 Grupa 3 Log1.ora Log2.ora Log3.ora LGWR Log1.ora Log2.ora Log3.ora są elementem mechanizmu ochrony instancji zawartej w buforze danych i są wykorzystywane w momencie awarii instancji lub bazy danych. Wszystkie zmiany dokonane w bazie (wstawienie, modyfikacja, usunięcie rekordu, utworzenie, zmodyfikowanie, usunięcie tabeli) przez zatwierdzone lub nie zatwierdzone transakcje są zapisywane do dziennika powtórzeń. Pliki dziennika powtórzeń są podzielone na grupy, w każdej z nich powinna być jednakowa liczba plików o jednakowym rozmiarze. Muszą istnieć co najmniej dwie grupy plików dziennika powtórzeń, zalecane jest aby w każdej grupie były przynajmniej dwa pliki umieszczone na różnych dyskach (patrz: schemat na slajdzie obok). Wszystkie pliki należące do danej grupy posiadają taki sam rozmiar i zawierają identyczne informacje. 6
Pliki dziennika powtórzeń (redo log files) LGWR dokonuje zapisu jednocześnie do wszystkich plików należących do danej grupy. Jeżeli jeden z plików grupy na skutek awarii dysku jest niedostępny, to zapisywanie jest kontynuowane do pozostałych plików grupy. Gdy wszystkie pliki grupy stają się niedostępne sygnalizowany jest błąd i instancja zostaje zamknięta. Zapis do plików dziennika powtórzeń odbywa się w sposób cykliczny tzn. zapełnienie jednej grupy powoduje przełączenie się na drugą i kontynuowanie zapisu. Po zapełnieniu ostatniej grupy następuje przełączenie się na pierwszą i nadpisanie informacji w niej zawartych. Ręczne przełączenie na inną grupę plików dziennika powtórzeń: Administrator bazy danych (DBA) może wymusić przełączenie na inną grupę dziennika powtórzeń poleceniem: ALTER SYSTEM SWITCH LOGFILE; FAST_START_IO_TARGET Pliki dziennika powtórzeń (redo log files) Dla dużych plików dziennika powtórzeń, administrator może wymusić dodatkowe punkty kontrolne przy pomocy następujących parametrów inicjalizacyjnych w pliku init<sid>.ora: LOG_CHECKPOINT_INTERVAL Określa opóźnienie docelowego punktu kontrolnego względem końca pliku dziennika powtórzeń. Opóźnienie to nie może być większe niż zadeklarowana w parametrze liczba bloków. Wartość tego parametru liczona jest w blokach systemu operacyjnego, a nie w blokach bazy danych LOG_CHECKPOINT_TIMEOUT Określa, że do odtwarzania instancji po awarii będzie potrzeba co najwyżej tyle bloków dziennika powtórzeń, ile zostało zapisanych w podanym przez parametr okresie czasu. Wartość 0 wyłącza mechanizm pomiaru odstępów czasowych. Określa ilość operacji I/O, które serwer ORACLE będzie musiał wykonać podczas odtwarzania. Parametr ten poprawia wydajność odtwarzania po awarii instancji. Im mniejsza wartość parametru, tym częściej proces DBWR zapisuje bloki na dysk. Pojęcia związane z plikami dziennika powtórzeń LSN Log Sequence Number W momencie przełączenia na następną grupę dziennika powtórzeń, pliki należące do niej uzyskują kolejny numer sekwencyjny dziennika. Podczas odtwarzania system Oracle wykorzystuje informacje kolejno z plików o wzrastającym numerze sekwencyjnym Bieżący numer sekwencyjny jest zapisany w pliku kontrolnym. SCN System Change Number Każda zatwierdzona transakcja otrzymuje SCN, plik dziennika powtórzeń przechowuje numery SCN transakcji, z którymi związane są opisy w nim zawarte. Serwer ORACLE może więc kontrolować spójność bez potrzeby opierania się na zegarze systemowym. Dodanie nowej grupy dziennika powtórzeń wraz z odpowiednią liczbą plików ALTER DATABASE [nazwa_bazy] ADD LOGFILE GROUP nr_grupy (plik_1, plik_2,...) SIZE rozmiar; nr_grupy plik_n numer kolejnej grupy plików dziennika powtórzeń, nazwa tworzonego pliku wraz ze ścieżką dostępu, Numer nowo tworzonej grupy nie musi być numerem kolejnym. Jeżeli zostanie pominięty, wówczas serwer Oracle sam przypisze grupie odpowiedni identyfikator. 7
Administracja plikiem powtórzeń Dodanie pliku do istniejącej grupy: ALTER DATABASE [nazwa_bazy] ADD LOGFILE MEMBER plik TO GROUP nr_grupy; Czyszczenie plików dziennika powtórzeń: ALTER DATABASE CLEAR [UNARCHIVED] LOGFILE GROUP nr_grupy; ALTER DATABASE CLEAR [UNARCHIVED] LOGFILE plik; Administracja plikiem powtórzeń Usunięcie pliku z istniejącej grupy dziennika powtórzeń: ALTER DATABASE [nazwa_bazy] DROP LOGFILE MEMBER plik; Usunięcie całej grupy plików dziennika powtórzeń: ALTER DATABASE [nazwa_bazy] DROP LOGFILE GROUP nr_grupy; Nie można usunąć pliku dziennika powtórzeń będącego w stanie zapisu. Należy wówczas wymusić przełączenie całej grupy. Nie można również usunąć ostatniego elementu grupy dziennika powtórzeń. Usunięcie pliku dziennika powtórzeń powoduje tylko skasowanie informacji o nim ze słownika bazy danych. Jednak plik w systemie operacyjnym pozostaje Informacje dotyczące pliku dziennika powtórzeń Archiwizacja plików dziennika powtórzeń V$LOGFILE V$LOG V$THREAD V$LOG_HISTORY informacje nt. lokalizacji plików dziennika powtórzeń. informacje nt. utworzonych grup dziennika powtórzeń informacja o liczbie grup dziennika powtórzeń, numerze bieżącej grupy i numerów sekwencyjnych. informacje nt. wszystkich przełączeń plików dziennika powtórzeń, uporządkowane wg numeru sekwencyjnego. Archiwizacja plików dziennika powtórzeń wykonywana jest przez proces drugoplanowy ARCH w trybie automatycznym lub manualnie przez administratora bazy danych. Możliwość archiwizacji plików dziennika powtórzeń zależy od trybu bazy danych. Baza danych może pracować w jednym w dwóch poniższych trybów: Tryb ARCHIVELOG, Tryb NOARCHIVELOG (domyślny). 8
Tryb NOARCHIVELOG bazy danych Domyślnie Oracle zapisuje nowe grupy dziennika powtórzeń w miejsce starych według zasady cykliczności. Wystarcza to do naprawy instancji, ponieważ przełączanie rejestrów wymusza wykonanie operacji momentu kontrolnego, co z kolei powoduje zapisanie na dysk wszystkich brudnych bloków w buforze bazy danych Tryb ARCHIVELOG bazy danych Jeśli baza danych działa w trybie ARCHIVELOG, plik dziennika powtórzeń przed nadpisaniem zawartych w nim informacji musi zostać koniecznie zarchiwizowany. Aby uchronić dane zgromadzone w bazie przed awarią nośnika, konieczne jest utrzymywanie archiwum dziennika powtórzeń, co najmniej od chwili wykonania ostatniej fizycznej kopii bezpieczeństwa. Pełna kopia bezpieczeństwa łącznie ze zarchiwizowanymi plikami dziennika powtórzeń zagwarantuje, że w momencie awarii w pełni będzie można odzyskać utracone dane. Uwaga: Korzystanie z bazy danych w trybie ARCHIVELOG może wpłynąć na potrzeby dyskowe bazy danych (zależnie od tego, jak dużo operacji wykonywanych jest przez bazę danych). Archiwizacja Plików Dziennika Powtórzeń Określenie trybu pracy Archiwizacja automatyczna, Archiwizacja manualna. Sprawdzenie trybu archiwizacji : Automatyczna Archiwizacja Plików Dziennika Powtórzeń Parametry inicjalizacyjne: LOG_ARCHIVE_START LOG_ARCHIVE_DEST LOG_ARCHIVE_FORMAT Polecenie włączające tryb ARCHIVELOG bazy danych: ALTER DATABASE ARCHIVELOG; ARCHIVE LOG LIST SELECT LOG_MODE FROM V$DATABASE; SELECT ARCHIVER FROM V$INSTANCE; LOG_ARCHIVE_DEST LOG_ARCHIVE_FORMAT Parametr ten służy do określenia katalogu, w którym będą zapisywane zarchiwizowane pliki. W wersji Enterprise Edition można wskazać do 10 lokalizacji LOG_ARCHIVE_DEST_n. Określa wzorzec nazwy zarchiwizowanego pliku (np.: arc%s.log). Zastosowanie symbolu %S lub %s oznacza użycie w nazwie numeru sekwencyjnego (poprzedzonego zerami lub nie). 9
Uruchomienie automatycznej archiwizacji plików dziennika powtórzeń Zatrzymanie automatycznej archiwizacji plików dziennika powtórzeń Po zmianach w pliku init<sid>.ora należy wystartować bazę w trybie MOUNT wystartować bazę w trybie MOUNT ALTER DATABASE ARCHIVELOG; ALTER DATABASE NOARCHIVELOG ALTER DATABASE OPEN; ALTER DATABASE OPEN; Proces ARCH można wystartować także na otwartej bazie poleceniem: ALTER SYSTEM ARCHIVE LOG START [TO katalog]; Proces ARCH można zatrzymać na otwartej bazie poleceniem: ALTER SYSTEM ARCHIVE LOG STOP; Archiwizacja ręczna plików dziennika powtórzeń ALTER SYSTEM ARCHIVE LOG Opcja [TO Katalog]; ALL CURRENT NEXT OPCJA LOGFILE nazwa pliku SEQUENCE numer_sekwencyjny CHANGE numer_scn GROUP numer_grupy aktualnego pliku, OPIS archiwizacja wszystkich plików, wskazanego parametrem Next Log Sequence to Archive, pliku o podanej nazwie, pliku o podanym numerze sekwencyjnym, plik zawierający zapis z numerem SCN, pliki dziennika należące do wskazanej grupy. CKP ARCH RECO SNPn DBnn SMON PMON obszar dzielony procesy usługowe (servers) procesy użytkowników SAVEPOINTS max. liczba pkt. wycofania w transakcji procesy drugoplanowe obszar globalny systemu SGA DB_BLOCK_BUFFERS liczba bloków w buforach DB_BLOCK_SIZE - rozmiar bloku SHARED_POOL_SIZE - LOG_BUFFER- rozmiar buforów określenie rozmiaru dziennika powtórzeń CKPT bufory bazy danych LOG_CHECKPOINT_TIMEOUT LOG_CHECKPOINT_INTERVAL proces max liczba bloków DBWR zapisanych na plik dziennika między punktami kontrolnymi pliki bazy danych istnieje, jeśli CHECKPOINT_PROCESSES = true pliki kontrolne SNAPSHOT_REFRESH_PROCESSES liczba procesów SNPn, obsługujących aut. odświeżanie replikacji zdalnych tablic (opcja rozproszona) bufory dziennika powtórzeń maksymalny czas między punktami kontrolnymi proces LGWR pliki dziennika powtórzeń plik konfiguracyjny CONTROL_FILES - identyfikacja plików kontrolnych Struktura bazy ORACLE 10
Procesy drugoplanowe Liczba procesów drugoplanowych pracujących w instancji Oracle jest zależna od ustawienia parametrów bazy. Istnieje jednak grupa procesów niezbędnych do pracy bazy: DBWR (ang. Database Writer) proces zapisujący dane wprowadzane przez użytkowników do bazy z buforów SGA do plików dyskowych. LGWR (ang. Log Writer) proces zapisujący dane z buforów dziennika powtórzeń do plików dziennika powtórzeń. PMON (ang. Process Monitor) monitor procesów trzymający pieczę nad zasobami bazy wykorzystywanymi przez użytkowników bazy. Proces ten odzyskuje zasoby zwolnione przez użytkownika, wycofuje niepotwierdzone transakcje, czyści nienormalnie zakończone połączenia, wykrywa zakleszczenia. SMON (ang. System Monitor) monitor systemu utrzymujący porządek w SGA. Proces ten obsługuje plik kontrolny, odzyskuje przestrzeń po segmentach tymczasowych, wykonuje automatyczne odtwarzanie instancji. Struktura logiczna bazy danych Na strukturę logiczną bazy danych składają się następujące elementy: Bloki - najmniejsza jednostka wejścia/wyjścia, pojedynczy blok logiczny odpowiada jednemu lub większej liczbie bloków systemu operacyjnego Obszary (ang. extent) jest zbiorem kolejnych bloków zaalokowanych przez segment. Pierwszy obszar zwany jest obszarem inicjacyjnym (ang. initial), natomiast następne przyrostowymi (ang. incremental). Oracle uważa bloki z następującymi po sobie numerami identyfikacyjnymi jako ciągłe, chociaż nie oznacza to, że są one ciągłe na dysku. Segmenty - są zbiorem jednego lub więcej obszarów, w których zawarte są dane określonego typu logicznej struktury pamięci w przestrzeni tabel. Typy segmentów: danych, indeksu, tymczasowy, wycofania, otwarcia. Każdy segment w bazie jest tworzony z co najmniej jednym obszarem dla danych., jednakże segment wycofania zawsze ma co najmniej dwa obszary, Przestrzenie tabel - są logicznym obszarem, w którym baza przechowuje zapisane w niej dane. Każda przestrzeń składa się z jednego lub więcej plików systemu operacyjnego, które dla serwera Oracle tworzą integralną całość Struktura logiczna bazy danych Przykładowe rozmieszczenie obiektów w przestrzeniach tabel Plik danych nr 1 Przestrzeń tabel nr 1 Przestrzeń tabel nr 2 Tablica Plik danych nr 2 Plik danych nr 3 Tablica Globalny Obszar Systemowy (System Global Area -SGA). Bufor Dziennika Powtórzeń Bufor Danych Globalny Obszar Systemowy Obszar Współdzielony Bufor Bibliotek Współdzielony Obszar Poleceń SQL Bufor Słownika rozmiar SGA z podziałem na podstawowe : SHOW SGA Indeks Indeks Tablica Indeks SGA (System Global Area) jest obszarem pamięci służącym do przechowywania informacji współdzielonych przez procesy bazy danych. Zawiera dane i informacje sterujące serwera Oracle. Globalny obszar systemowy umiejscowiony jest w pamięci komputera. 11
Bufor danych (database buffer cache) zawiera kopie bloków danych odczytywanych z dysku, dostępny jest dla wszystkich użytkowników podłączonych do bazy. Bloki w buforze danych dzielimy na: wolne niezmodyfikowane, gotowe do użycia, zaczepione obecnie używane przez procesy serwera, brudne zmodyfikowane, wymagające zapisu na dysk. Parametry: DB_CACHE_SIZE - rozmiar bufora danych określany dynamicznie, wprowadzony w Oracle 9i DB_BLOCK_SIZE - rozmiar bloku podany w bajtach (2048, 4096, itd.) DB_BLOCK_BUFFERS - licza bloków w buforze danych. ALTER SYSTEM SET DB_BLOCK_SIZE=4096 Bufor dziennika powtórzeń (redo log buffer) bufor cykliczny (po zapisaniu ostatniego bajtu zapis rozpoczyna się od pierwszego). Proces serwera podczas przetwarzania transakcji zapisuje blok wycofania jak i obrazy późniejsze (bloki ze zmienionymi danymi) co pozwala na odtworzenie dokonanych zmian po awarii instancji bazy danych. Parametr określający wielkość Bufora Dziennika Powtórzeń LOG_BUFFER określa rozmiar bufora w bajtach, musi być całkowitą wielokrotnością DB_BLOCK_SIZE Obszar współdzielony (shared pool). Bufor Bibliotek (library cache) Bufor Bibliotek (library cache) zawiera struktury sterujące oraz Współdzielone Obszary Poleceń SQL, w obszarze tym przechowywane są: treść poleceń SQL lub PL/SQL, analiza składniowa poleceń, plan wykonania poleceń. Użytkownicy realizujący to samo polecenie korzystają z tego samego Współdzielonego Obszaru Poleceń SQL. Polecenia SQL są uważane za identyczne jeśli: zapis polecenia jest taki sam z dokładnością do małych i wielkich liter oraz separatorów, odwołują się do tych samych obiektów, typy i nazwy zmiennych są identyczne. Obszar współdzielony (shared pool). Bufor Słownika Danych (data dictionary cache) Słownik Danych zawiera tabele, widoki i synonimy systemowe dostarczające informacji o obiektach bazy danych i uprawnieniach użytkowników. Część tych informacji jest sprowadzona do bufora słownika danych i jest wykorzystywana przy analizie składniowej poleceń. Parametr określający wielkość Obszaru Współdzielonego: SHARED_POOL_SIZE - określa wielkość obszaru podaną w bajtach (np. 3 500 000 bajtów) Od wersji Oracle 9.0.1 parametr SHARED_POOL_SIZE może być modyfikowany dynamicznie podczas pracy instancji. ALTER SYSTEM SET SHARED_POOL_SIZE = wartość 12
Obszar pamięci PGA (Process Global Area lub Program Global Area) alokowany w momencie uruchomienia procesu serwera w związku z zaistniałym procesem użytkownika. Jest fragmentem pamięci operacyjnej zawierającym dane i informacje sterujące dotyczące pojedynczego procesu serwera lub pojedynczego procesu drugoplanowego. Nie jest, w przeciwieństwie do SGA, współdzielony przez wiele procesów. Procesy Drugoplanowe Procesy Drugoplanowe Globalny Obszar Systemowy SGA Procesy drugoplanowe (procesy tła) DBWR LGWR LGWR CKPT PMON SMON Obszar pamięci PGA zawiera następujące elementy: Obszar sortowania potrzebny przy przetwarzaniu polecenia SQL. Informacje dotyczące sesji, takie jak uprawnienia użytkownika oraz statystyki wydajności. Stany kursorów wskazujące aktualny etap przetwarzania poleceń SQL wykorzystywanych w sesji. Parametr związany z obszarem pamięci PGA: SORT_AREA_SIZE wskazuje w bajtach, ile pamięci PGA ma zostać zarezerwowane na wykonywanie sortowań. Pliki bazy danych DBWR - proces sekretarza bazy danych: DBWR Pliki danych Proces Sekretarza Bazy Danych (Database Writer) LGWR Proces Sekretarza Dziennika Powtórzeń (Log Writer) automatycznie uruchamiany w momencie uruchamiania instancji (jego działanie jest niezbędne). Zarządza blokami w buforze danych w taki sposób aby procesy serwera mogły znaleźć zawsze wolne bloki. Zapisuje wszystkie brudne bloki do plików danych. Wykorzystuje listę LRU w celu pozostawienia ostatnio używanych bloków w pamięci SGA. Optymalizuje operacje Wejścia/Wyjścia dzięki opóźnieniu zapisów. LGWR LGWR Proces Sekretarza Dziennika Powtórzeń Zapis brudnych bloków do plików następuje gdy: Lista brudna osiągnie limit długości. Upłyną trzy sekundy od ostatniego zapisu (time_out). Zgłoszony zostaje punkt kontrolny. Proces przeszuka określoną liczbę bloków na liście LRU i nie znajdzie wolnego. Pliki dziennika powtórzeń 13
LGWR Proces Sekretarza Dziennika Powtórzeń (Log Writer) automatycznie uruchamiany w momencie uruchamiania instancji (jego działanie jest niezbędne). Zapisuje informacje z bufora dziennika powtórzeń do plików tego dziennika. Zapis następuje gdy: następuje zatwierdzenie transakcji przez użytkownika, bufor dziennika powtórzeń jest w 1/3 zapełniony, upłyną trzy sekundy od ostatniego zapisu (time_out), zostaje zgłoszony punkt kontrolny. Właściwości procesu: dokonuje zapisu do plików dziennika powtórzeń zanim DBWR dokona zapisu zawartości bufora danych na dysk. zatwierdzenie transakcji przez użytkownika powoduje zapisanie pozycji dziennika powtórzeń dotyczących innych użytkowników zanim sami podejmą decyzję o zatwierdzeniu, podczas długich transakcji bufor dziennika powtórzeń może wypełnić się bardziej niż w 1/3 zanim dokonany zostanie zapis. SMON Proces Monitora Systemu (System Monitor) SMON Proces Monitora Systemu INSTANCJA SGA Procesy tła SMON Proces Monitora Systemu (System Monitor) automatycznie uruchamiany w momencie uruchamiania instancji (jego działanie jest niezbędne). Kiedy instancja Oracle ulega uszkodzeniu, cała nie zapisana informacja z SGA jest tracona. Po utracie instancji, w chwili ponownego otwarcia bazy danych proces SMON automatycznie wykonuje odtwarzanie instancji na podstawie informacji zawartych w plikach bazy danych. PMON Proces Monitora Procesów (Process Monitor) PMON Proces Monitora Procesów INSTANCJA Zadania realizowane przez proces: Odtwarzanie instancji podczas jej uruchomienia. Czyszczenie nieużywanych segmentów temporalnych (przechowują dane tymczasowe np. wyniki sortowania), Scalanie wolnych obszarów pamięci dyskowej w jedną spójną przestrzeń SGA Procesy tła PMON 14
Proces Monitora Procesów (Process Monitor) automatycznie uruchamiany w momencie uruchamiania instancji (jego działanie jest niezbędne). Jest odpowiedzialny za obsługę sytuacji, w której proces użytkownika przestaje działać poprawnie. CKPT Proces Punktu Kontrolnego (Checkpoint Process) CKPT Proces Punktu Kontrolnego Zadania realizowane przez proces: Wycofanie nie zatwierdzonych transakcji. Zwolnienie blokad nałożonych przez przerwany proces. Zwolnienie zasobów SGA wykorzystywanych przez przerwany proces. Kontrola stanu procesów drugoplanowych i przełączających. CKPT Nagłówki plików danych Nagłówek pliku kontrolnego Proces Punktu Kontrolnego (Checkpoint Process) uaktualnia nagłówki wszystkich plików danych i plików kontrolnych, potwierdzając pomyślne zakończenie punktu kontrolnego. Po zgłoszeniu punktu kontrolnego proces DBWR zapisuje wszystkie zmodyfikowane bloki na dysk. DBWR zleca również procesowi CKPT uaktualnienie informacji nagłówkowej wszystkich plików danych poprzez zapisanie informacji kontrolnej. W poprzednich wersjach Oracle rolę procesu CKPT przejmował proces LGWR, a uruchomienie CKPT jako oddzielnego procesu wymagało ustawienia parametru inicjalizacyjnego CHECKPOINT_PROCESS na wartość TRUE (w pliku init<sid>.ora) lub gdy liczba plików w bazie danych przekraczała określoną wartość. Inne Procesy Drugoplanowe ARCH RECO SNPn Snnn Dnnn Inne Procesy Drugoplanowe Proces archiwizatora plików dziennika powtórzeń Proces odtwarzający Proces odświeżający migawki Proces zapewniający obsługę żądań użytkowników Proces ekspedytora (dotyczy serwera wielowątkowego) 15
Inne Procesy Drugoplanowe ARCH - Proces archiwizatora plików dziennika powtórzeń. Proces ten jest uruchamiany gdy baza danych znajduje się w trybie archiwizowania dziennika powtórzeń i włączone jest automatyczne archiwizowanie. RECO - Proces odtwarzający, rozwiązuje problemy związane z awarią transakcji rozproszonych na skutek niedostępności węzłów sieci. Uruchamiany gdy baza danych pracuje w trybie opcji rozproszonej (DISTRIBUTED_TRANSACTION=True w init<sid>.ora). SNPn - Proces odświeżający migawki (replikacje tabel przeznaczonych tylko do odczytu), odpowiada za kolejkę zadań serwera i kolejkę replikacji. Liczba takich procesów zależy od parametru SNAPSHOT_REFRESH_PROCESSES. Jego maksymalna wartość wynosi 10. Snnn - Proces serwera dzielonego zapewniający obsługę żądań użytkowników (proces usługowy). Dnnn - Proces ekspedytora, uruchamiany w wielowątkowej konfiguracji serwera, zapewnia obsługę wielu procesów użytkowników przez jeden proces serwera (proces usługowy). Pliki danych (data files) Każdy plik danych posiada nagłówek, gdzie przechowywane są m.in. bieżący numer punktu kontrolnego, licznik punktów kontrolnych, numer sekwencyjny bieżącego pliku dziennika powtórzeń w momencie wystąpienia punktu kontrolnego. Perspektywy słonika danych zawierające informacje dotyczące plików danych: V$DATAFILE DBA_DATA_FILES V$DATAFILE_HEADER (informacje nagłówkowe plików danych). Tryby pracy instancji ORACLE NOMOUNT MOUNT OPEN odczytanie pliku parametrów, inicjalizacja SGA oraz odszukanie plików kontrolnych odczytanie plików kontrolnych oraz odszukanie pozostałych plików oraz sprawdzenie ich statusu otworzenie pozostałych plików i udostępnienie bazy danych użytkownikom Uruchamianie i zatrzymywanie bazy danych z Instance Manager Wykorzystywany jest do: tworzenia bazy danych plików kontrolnych. Tryb NOMOUNT Wykonywane są następujące operacje: Odczytuje plik parametrów konfiguracyjnych. Inicjalizuje pamięć SGA. Uruchamia procesy drugoplanowe (procesy tła). Otwiera pliki śladu oraz plik ostrzeżeń. 16
Tryb MOUNT Wykorzystywany jest do realizacji następujących czynności: Wykonanie operacji związanych z plikami dziennika powtórzeń (zmiana położenia, tworzenie nowych, usuwanie istniejących). Wykonanie zmiany nazwy lub położenia plików danych. Przełączenie bazy danych w tryb ARCHIVELOG lub NOARCHIVELOG. Wykonanie pełnego lub niepełnego odtworzenia bazy danych. Tryb OPEN W trybie tym otwierane są pliki dziennika powtórzeń oraz pliki danych co sprawia, że baza staje się dostępna dla użytkowników!!! System uruchamiając instancję w tym trybie przechodzi przez tryb NOMOUNT wykonując dodatkowo następujące operacje: Otwiera wyspecyfikowane w pliku parametrów pliki kontrolne. Uruchamianie instancji w określonym trybie Uruchamianie instancji w określonym trybie STARTUP [FORCE] [RESTRICT] [PFILE=plik_parametrów] [tryb_pracy] Alter Database Open OPEN Startup Open FORCE RESTRICT przed wykonaniem uruchomienia zamyka działającą instancję udostępnia bazę tylko użytkownikom z uprawnieniem RESTRICTED SESSION Alter Database Mount MOUNT NOMOUNT Startup Nomount Startup Mount Tryb pracy OPEN [opcje_montowania] - udostępnia bazę użytkownikom, bazę można otworzyć w trybie READ WRITE tryb do odczytu i zapisu READ ONLY tryb tylko do odczytu MOUNT [RECOVER] [nazwa_bazy_danych] [opcje_montowania], RECOVER po uruchomieniu bazy rozpoczyna odtwarzanie po awarii nośników, NOMOUNT [opcje_montowania]. SHUTDOWN Opcje montowania EXCLUSIVE pozwala jedynie bieżącej instancji na dostęp do bazy danych PARALLEL umożliwia dostęp do bazy wielu instancjom. 17
Uruchamianie instancji w określonym trybie ALTER DATABASE [nazwa_bazy_danych] tryb_pracy Ograniczenie dostępu do bazy Tryb pracy OPEN [RESETLOGS NORESETLOGS] - udostępnia bazę użytkownikom Użycie parametru RESETLOGS wymaga ostrożności i jest związane ściśle z archiwizacją i odtwarzaniem MOUNT [opcje_montowania] Opcje montowania EXCLUSIVE pozwala jedynie bieżącej instancji na dostęp do bazy danych PARALLEL umożliwia dostęp do bazy wielu instancjom. (uruchamia Serwer Równoległy Oracle) ALTER SYSTEM status RESTRICTED SESSION; status ENABLE - ogranicza dostęp do bazy tylko dla użytkowników posiadających uprawnienie RESTRICTED SESSION DISABLE udostępnia bazę wszystkim użytkownikom Wyciszanie bazy danych Wyciszenie (quiesce) bazy danych polega na wprowadzeniu jej w taki stan, w którym dopuszczalne są tylko sesje użytkowników posiadających rolę DBA. Wprowadzenie bazy w stan wyciszenia powoduje wstrzymanie wszystkich transakcji rozpoczętych przez użytkowników, którzy nie posiadają uprawnień z grupy DBA. Uaktywnienie opcji wymaga wpisu w pliku inicjalizacyjnym bazy danych: RESOURCE_MANAGER_PLAN = SYSTEM_PLAN konieczny jest restart bazy danych Oracle. stan wyciszenia : ALTER SYSTEM QUIESCE RESTRICTED; Przywrócenie pełnej funkcjonalności bazy danych ALTER SYSTEM UNQUIESCE; Zawieszanie operacji IO w bazie danych uniemożliwia wykonanie jakiekolwiek polecenia w bazie danych, którego konsekwencją byłby zapis lub odczyt danych z dysku. zawieszenie operacji IO ALTER SYSTEM SUSPEND; Wznowienie operacji IO ALTER SYSTEM RESUME; 18
Zamykanie instancji bazy danych SHUTDOWN [tryb_zamknięcia] Zamykanie instancji bazy danych SHUTDOWN [tryb_zamknięcia] NORMAL TRANSACTIONAL Baza zostaje zamknięta dopiero, gdy wszyscy użytkownicy zakończą sesje (odłączenie od bazy danych). Zawartość bloków buforów danych i dziennika powtórzeń są zapisywane na dysk, dostęp nowych użytkowników do bazy jest blokowany. Domyślny tryb zamykania. Użytkownicy odłączani są automatycznie od bazy gdy zakończą aktualne transakcje, dostęp nowych użytkowników do bazy jest blokowany następnie baza jest zamykana. IMMEDIATE ABORT Kończy wykonanie poleceń SQL i wycofuje nie zatwierdzone transakcje, następnie odłącza użytkowników od bazy. Nie czeka na zakończenie pracy przez użytkowników, nie wycofuje nie zatwierdzonych transakcji. Natychmiast zamyka SGA i procesy tła. Po w trybie ABORT, w momencie startu następuje odtwarzanie instancji. Znajduje zastosowanie, gdy nie można wykonać zamknięcia w innym z trybów,. Parametry startowe bazy Zmiana parametrów sesji SHOW PARAMETERS wzorzec_nazwy Aktualne wartości parametrów w ramach sesji SELECT * FROM V$PARAMETER Wartości parametrów niezależnie od sesji SELECT * FROM V$SYSTEM_PARAMETER DBMS_UTILITY.GET_PARAMETER_VALUE ALTER SYSTEM SET nazwa_parametru = wartość [DEFERRED] Klauzula DEFERRED wprowadza zmianę dla każdej sesji, która w przyszłości podłączy się do bazy danych Nie wszystkie parametry mogą być zmieniane na otwartej bazie danych 19
Pojęcia SESJA czas pracy użytkownika od momentu podłączenia się do bazy poleceniem CONNECT aż do czasu zakończenia pracy polecenie EXIT (DISCONNECT). W ramach jednej SESJI użytkownik może realizować wiele TRANSAKCJI, jedna po drugiej lub zagnieżdżone. SELECT USERNAME, COMMAND, STATUS, PROCESS, MACHINE FROM V$SESSION USERNAME SYS AP COMMAND 0 0 53 3 STATUS ACTIVE ACTIVE KILLED ACTIVE PROCESS 2112 1584 2772:2776 3916:3284 MACHINE BAZY BAZY LR\BAZY LR\PC21431 DESC V$SESSION SADDR SID SERIAL# AUDSID PADDR USER# USERNAME COMMAND OWNERID TADDR LOCKWAIT STATUS SERVER SCHEMA# SCHEMANAME OSUSER PROCESS MACHINE... Przerywanie sesji Natychmiastowe zabicie sesji: ALTER SYSTEM KILL SESSION 'sid, serial#'; Rozłączenie użytkownika z serwerem: ALTER SYSTEM DISCONNECT SESSION 'sid, serial#'; Rozłączenie użytkownika po zakończeniu bieżącej transakcji: ALTER SYSTEM DISCONNECT SESSION 'sid, serial#'; POST TRANSACTION 'sid, serial#' - identyfikatory sesji użytkownika z perspektywy V$SESSION Muszą być podane obydwa parametry w apostrofie!!!!! Nie można zabić bieżącej sesji Zabijana sesja domyślnie jest zaznaczana do zabicia (KILLED) i zabijana po zakończeniu wszystkich jej transakcji Ponowna próba zbicia tej sesji generuje błąd ORA-00031: sesja zaznaczona do zlikwidowania Słownik danych Słownik danych V$PARAMETER V$SGA V$OPTION V$PROCESS V$BGPROCESS V$SESSION V$VERSION V$INSTANCE Tryb NOMOUNT: Informacje o parametrach inicjalizacyjnych Zawiera zestawienie informacji o SGA Opcje, które zostały zainstalowane w serwerze Oracle Informacje o aktualnych aktywnych procesach Informacje o aktualnych aktywnych procesach drugoplanowych Aktualne informacje o otwartych sesjach Informacje o numerze wersji i zainstalowanych komponentach Informacje nt. stanu bieżącej instancji. V$THREAD V$CONTROLFILE V$CONTROLFILE_RE CORD_SECTION V$DATABASE V$DATAFILE V$DATAFILE_HEADER V$LOGFILE Tryb MOUNT: Informacje o wątkach/kanałach, np. grupach dziennika powtórzeń Nazwy i lokalizacje plików kontrolnych Informacje nt. rekordów pliku kontrolnego Ogólne informacje o bazie danych Informacje o plikach danych Informacje nagłówkowe plików danych Informacje o plikach dziennika powtórzeń. 20