Oracle9i. Administrowanie bazami danych od podstaw

1,043 views

Published on

Książka "Oracle9i. Administrowanie bazami danych od podstaw" krok po kroku wyjaśnia sposoby efektywnego administrowania bazą danych Oracle. Poznasz dzięki niej najważniejsze nowe funkcje baz danych Oracle9, zaznajomisz się z zadaniami czekającymi administratora baz danych, a także poznasz wiele cennych wskazówek, ułatwiających codzienną pracę z Oraclem.

Jeśli jeszcze nie miałeś styczności z zaawansowanymi systemami bazodanowymi, znalazłeś właśnie doskonałe źródło informacji, dzięki któremu zdobędziesz wiele poszukiwanych na rynku pracy umiejętności.

Książka jest idealnym źródłem wiedzy dla początkujących administratorów na temat:

* Instalacji i konfiguracji wydajnej bazy danych Oracle
* Kontroli działania bazy danych za pomocą perspektyw DBA_ i V$
* Wykorzystania różnych poziomów ochrony danych
* Monitorowania i dostrajania bazy danych
* Stosowania narzędzi i programów Oracle
* Utrzymywania niezawodności i stałego dostępu do bazy danych
* Sposobów zapewnienia maksymalnej wydajności serwera bazodanowego
* Wykonywania kopii zapasowych i odtwarzania bazy danych

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,043
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Oracle9i. Administrowanie bazami danych od podstaw

  1. 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TRE CI Oracle9i. Administrowanie bazami danych od podstaw KATALOG KSI¥¯EK Autorzy: Marlene Theriault, Rachel Carmichael, James Viscusi KATALOG ONLINE T³umaczenie: Micha³ ¯yliñski (rozdzia³y 0 – 8), Leszek Mosingiewicz (rozdzia³y 9 – 13, dodatki) ZAMÓW DRUKOWANY KATALOG ISBN: 83-7361-062-6 Format: B5, stron: oko³o 480 TWÓJ KOSZYK Ksi¹¿ka „Oracle9i. Administrowanie bazami danych od podstaw” krok po kroku DODAJ DO KOSZYKA wyja nia sposoby efektywnego administrowania baz¹ danych Oracle. Poznasz dziêki niej najwa¿niejsze nowe funkcje baz danych Oracle9, zaznajomisz siê z zadaniami czekaj¹cymi administratora baz danych, a tak¿e poznasz wiele cennych wskazówek, CENNIK I INFORMACJE u³atwiaj¹cych codzienn¹ pracê z Oraclem. Je li jeszcze nie mia³e styczno ci z zaawansowanymi systemami bazodanowymi, znalaz³e w³a nie doskona³e ród³o ZAMÓW INFORMACJE informacji, dziêki któremu zdobêdziesz wiele poszukiwanych na rynku pracy O NOWO CIACH umiejêtno ci. Ksi¹¿ka jest idealnym ród³em wiedzy dla pocz¹tkuj¹cych administratorów na temat: ZAMÓW CENNIK • Instalacji i konfiguracji wydajnej bazy danych Oracle • Kontroli dzia³ania bazy danych za pomoc¹ perspektyw DBA_ i V$ • Wykorzystania ró¿nych poziomów ochrony danych CZYTELNIA • Monitorowania i dostrajania bazy danych • Stosowania narzêdzi i programów Oracle FRAGMENTY KSI¥¯EK ONLINE • Utrzymywania niezawodno ci i sta³ego dostêpu do bazy danych • Sposobów zapewnienia maksymalnej wydajno ci serwera bazodanowego • Wykonywania kopii zapasowych i odtwarzania bazy danych Autorzy: Marlene Theriault od 19 lat jest administratork¹ baz danych i pracuje z produktami firmy Oracle od ukazania siê wersji 2.0. Jest autork¹ wielu poczytnych ksi¹¿ek na ich temat. Wystêpowa³a jako prelegent i prowadzi³a warsztaty na organizowanych na ca³ym wiecie konferencjach u¿ytkowników Oracle. Rachel Carmichael od 10 lat jest administratork¹ baz danych. Pe³ni rolê przewodnicz¹cej grupy tematycznej administratorów baz danych (DBA Special Interest Group) oraz koordynuje spotkania u¿ytkowników oprogramowania Oracle w Nowym Yorku. Wydawnictwo Helion ul. Chopina 6 James Viscusi od 12 lat pracuje z relacyjnymi bazami danych, a od 8 lat ma styczno æ 44-100 Gliwice z produktami Oracle. Obecnie jest pracownikiem firmy Oracle, gdzie zajmuje siê tel. (32)230-98-63 zagadnieniami wysokiej dostêpno ci systemów. e-mail: helion@helion.pl
  2. 2. Spis treści Podziękowania.......................................................................................11 Wstęp ...................................................................................................15 Część I Podstawy..............................................................................17 Rozdział 1. Rola administratora bazy danych............................................................19 Sposoby komunikacji z bazą danych ............................................................................... 19 Kim jest administrator bazy danych Oracle i czym się zajmuje? ........................................ 20 Przykład banku ....................................................................................................... 20 Przechowywanie informacji...................................................................................... 22 Czym jest baza danych Oracle? ................................................................................ 22 Czy nadajesz się na administratora bazy danych? ....................................................... 23 Typy administratorów baz danych .................................................................................. 27 Zadania .................................................................................................................. 28 Rozwój zawodowy .................................................................................................. 31 Co musisz wiedzieć o aplikacji SQL*Plus ....................................................................... 33 Uruchamianie aplikacji SQL*Plus............................................................................. 34 Polecenia wpływające na środowisko pracy SQL*Plus ............................................... 36 Polecenia wspomagające kolekcjonowanie danych ..................................................... 40 Komendy przydatne podczas tworzenia raportów ....................................................... 43 Rozdział 2. Konstrukcja bazy danych .......................................................................49 Obiekty logiczne i fizyczne ............................................................................................ 49 Obiekty fizyczne ..................................................................................................... 51 Parę słów o systemach operacyjnych......................................................................... 51 Systemy operacyjne a baza danych ........................................................................... 53 Oprogramowanie firmy Oracle ................................................................................. 54 Fizyczne składniki bazy danych Oracle ........................................................................... 54 Pliki z danymi ......................................................................................................... 55 Plik z parametrami................................................................................................... 57 Pliki dziennika ........................................................................................................ 59 Pliki zapasowe ........................................................................................................ 60 Logiczna struktura bazy danych ..................................................................................... 61 Przestrzenie tabel .................................................................................................... 61 Tabele .................................................................................................................... 62 Indeksy .................................................................................................................. 66
  3. 3. 6 Oracle9i. Administrowanie bazami danych od podstaw Wyzwalacze............................................................................................................ 67 Perspektywy ........................................................................................................... 68 Perspektywy zmaterializowane ................................................................................. 69 Segmenty wycofań i przestrzeń tabel wycofań ........................................................... 70 Segmenty tymczasowe............................................................................................. 73 Role ....................................................................................................................... 74 Pakiety, procedury i funkcje ..................................................................................... 77 Sekwencje .............................................................................................................. 77 Przywileje............................................................................................................... 78 Rozdział 3. Przyglądanie się pracy bazy danych........................................................81 Perspektywy słownika danych ........................................................................................ 81 Perspektywy typu DBA_ ............................................................................................... 82 DBA_TABLESPACES............................................................................................ 83 DBA_DATA_FILES ............................................................................................... 87 DBA_SEGMENTS ................................................................................................. 90 DBA_EXTENTS .................................................................................................... 92 DBA_ROLLBACK_SEGS....................................................................................... 94 DBA_UNDO_EXTENTS ........................................................................................ 97 DBA_OBJECTS ..................................................................................................... 98 DBA_TEMP_FILES ............................................................................................. 100 DBA_TABLES ..................................................................................................... 101 DBA_TAB_COLUMNS ........................................................................................ 104 DBA_INDEXES ................................................................................................... 108 DBA_IND_COLUMNS......................................................................................... 111 DBA_CONSTRAINTS.......................................................................................... 113 DBA_CONS_COLUMNS...................................................................................... 117 Rozdział 4. Przyglądanie się pracy bazy danych za pomocą perspektyw typu V$ ......119 Ogólna informacja o perspektywach typu V$................................................................. 120 Spojrzenie na perspektywy typu V$ ........................................................................ 121 Statyczne perspektywy V$ na poziomie instancji............................................................ 123 V$DATABASE .................................................................................................... 124 V$DATAFILE ...................................................................................................... 127 V$DATAFILE_HEADER...................................................................................... 129 V$DBFILE ........................................................................................................... 131 V$FIXED_TABLE................................................................................................ 131 V$INSTANCE...................................................................................................... 133 V$PARAMETER.................................................................................................. 135 V$SGA ................................................................................................................ 136 V$TEMPFILE ...................................................................................................... 137 Rozdział 5. Zabezpieczanie bazy danych ................................................................139 Perspektywy związane z bezpieczeństwem bazy danych................................................. 139 DBA_USERS ....................................................................................................... 140 DBA_PROFILES.................................................................................................. 143 DBA_ROLES ....................................................................................................... 145 DBA_ROLE_PRIVS ............................................................................................. 147 DBA_SYS_PRIVS ................................................................................................ 149 DBA_TS_QUOTAS.............................................................................................. 151 DBA_TAB_PRIVS ............................................................................................... 152 DBA_SYNONYMS .............................................................................................. 156 DBA_VIEWS ....................................................................................................... 158
  4. 4. Spis treści 7 Rozdział 6. Strojenie bazy danych..........................................................................163 Perspektywy V$ instancji wykorzystywane do strojenia bazy danych .............................. 164 V$FILESTAT....................................................................................................... 165 V$LATCH ........................................................................................................... 167 V$LIBRARYCACHE............................................................................................ 167 V$LOCK.............................................................................................................. 171 V$LOCKED_OBJECT.......................................................................................... 176 V$PROCESS........................................................................................................ 178 V$SESSION ......................................................................................................... 180 V$ROLLSTAT ..................................................................................................... 183 V$ROLLNAME.................................................................................................... 185 V$UNDOSTAT .................................................................................................... 186 V$ROWCACHE ................................................................................................... 187 V$SGASTAT ....................................................................................................... 189 V$STATNAME .................................................................................................... 191 V$SYSSTAT........................................................................................................ 192 V$SYSTEM_EVENT............................................................................................ 193 V$WAITSTAT..................................................................................................... 195 Część II Zarządzanie bazą danych ....................................................197 Rozdział 7. Instalacja, konfiguracja i przygotowanie bazy danych do pracy..............199 Instalacja oprogramowania........................................................................................... 199 Aktualizacja a migracja.......................................................................................... 200 Etapy instalacji oprogramowania .................................................................................. 203 Przygotowanie ...................................................................................................... 203 Kilka słów o demonstracyjnej bazie danych ............................................................. 204 Decyzje związane z instalacją ................................................................................. 205 Tworzenie bazy danych ............................................................................................... 208 Korzystanie z aplikacji Oracle Database Configuration Assistant ............................... 208 Po instalacji .......................................................................................................... 216 Gdy baza danych jest ju gotowa... ......................................................................... 217 Ilość i rozmieszczenie przestrzeni tabel ......................................................................... 219 Przestrzeń tabel SYSTEM...................................................................................... 220 Przestrzeń tabel RBS lub UNDO ............................................................................ 221 Przestrzeń tabel TEMP lub TEMPORARY.............................................................. 223 Przestrzeń tabel TOOLS ........................................................................................ 223 Przestrzeń tabel USERS......................................................................................... 223 Przestrzenie tabel DATA i INDEX.......................................................................... 224 Określanie rozmiaru przestrzeni tabel ...................................................................... 225 Przestrzenie tabel i parametr storage........................................................................ 226 Plik Init.ora i SPFILE.ora ............................................................................................ 229 Analiza zawartości pliku SPFILE ........................................................................... 229 Instancja a baza danych ............................................................................................... 232 Budowa obszaru SGA ................................................................................................. 233 Definiowanie SGA ................................................................................................ 233 Kilka słów o tabelach demonstracyjnych ....................................................................... 236 Rozdział 8. Ogólne rozważania na temat bazy danych .............................................237 Zasilanie przestrzeni tabel i ich utrzymanie.................................................................... 237 Tworzenie i usuwanie przestrzeni tabel.................................................................... 238 Umieszczanie obiektów w przestrzeni tabel ............................................................. 242 Zmiana rozmiaru przestrzeni tabel........................................................................... 246
  5. 5. 8 Oracle9i. Administrowanie bazami danych od podstaw Korzystanie z mechanizmu autoextend .................................................................... 251 Trwałe i tymczasowe przestrzenie tabel ................................................................... 253 Przenaszalne przestrzenie tabel ............................................................................... 254 Dokumentowanie bazy danych ..................................................................................... 256 Tworzenie obiektów w bazie danych............................................................................. 258 Tworzenie tabel..................................................................................................... 258 Parametry związane z tworzeniem tabel relacyjnych ................................................. 260 Przykład tabeli zło onej ......................................................................................... 261 Tworzenie indeksów.............................................................................................. 262 Tworzenie u ytkowników ...................................................................................... 264 Rozdział 9. Codzienne czynności............................................................................267 Obserwacja pracy bazy danych..................................................................................... 267 Dzienniki ostrze eń ............................................................................................... 268 LISTENER.LOG .................................................................................................. 270 Status Redo Log.................................................................................................... 272 Fragmentacja ........................................................................................................ 273 Segmenty wycofania.............................................................................................. 277 Monitorowanie rozmiaru segmentu wycofania ......................................................... 278 Monitorowanie rozmiaru obszaru segmentu wycofania ............................................. 280 Monitorowanie obszarów ....................................................................................... 282 Pozostała przestrzeń .............................................................................................. 285 Pliki śladu............................................................................................................. 291 Status sesji u ytkownika .............................................................................................. 294 Monitorowanie modyfikacji obiektów ........................................................................... 294 Część III Ochrona baz danych............................................................297 Rozdział 10. Bezpieczeństwo bazy danych Oracle.....................................................299 Wewnętrzne bezpieczeństwo bazy danych..................................................................... 300 Uprawnienia ......................................................................................................... 301 Tworzenie ról........................................................................................................ 305 Tworzenie synonimów........................................................................................... 309 Tworzenie perspektyw........................................................................................... 311 Bezpieczeństwo aplikacji ............................................................................................. 312 Zabezpieczenie aplikacji ........................................................................................ 312 Wykorzystywanie Wirtualnej Prywatnej Bazy Danych ............................................. 313 Tworzenie VPD .................................................................................................... 315 Szyfrowanie kolumn .............................................................................................. 321 Szyfrowanie kolumn danych................................................................................... 321 Obserwowanie ............................................................................................................ 323 Obserwowanie logowania....................................................................................... 324 Obserwacja działań................................................................................................ 325 Obserwacja obiektów............................................................................................. 326 Ochrona zapisu obserwacji ..................................................................................... 328 Zewnętrzne bezpieczeństwo bazy danych...................................................................... 329 Bezpieczeństwo sieciowe ....................................................................................... 329 Oracle Net i Oracle Advenced Security Option......................................................... 329 Rozdział 11. Dostępność baz danych .......................................................................331 Koncepcja dostępności ................................................................................................ 331 Przed czym nale y się zabezpieczyć? ............................................................................ 333 Problemy fizyczne................................................................................................. 334 Problemy logiczne ................................................................................................. 334
  6. 6. Spis treści 9 Typy odtwarzania........................................................................................................ 335 Odtwarzanie danych .............................................................................................. 335 Odtwarzanie instancji............................................................................................. 335 Odtwarzanie nośnika.............................................................................................. 336 Typy archiwizacji........................................................................................................ 336 Archiwizacja fizyczna............................................................................................ 336 Menad er przywracania (RMAN) ........................................................................... 339 Logiczne kopie zapasowe (eksport)......................................................................... 343 Mo liwości bazy danych.............................................................................................. 346 Średni docelowy czas odzyskiwania (MTTR) .......................................................... 346 Zapytanie retrospektywne (FlashBack Query) .......................................................... 347 LogMiner ............................................................................................................. 349 Replikacja............................................................................................................. 351 Rezerwowa baza danych Data Guard ............................................................................ 353 Architektura i terminologia..................................................................................... 354 Opcje konfiguracyjne Data Guard ........................................................................... 355 Korzyści ze stosowania Data Guard ........................................................................ 355 Real Application Clusters (RAC) .................................................................................. 357 Real Application Clusters Guard................................................................................... 358 Inne programy wspierające dostępność.......................................................................... 358 TAF (Transparent Application Failover) .................................................................. 358 Zmiana struktury aktywnych obiektów .................................................................... 359 Odnawialna alokacja przestrzeni ............................................................................. 359 Część IV Dostrajanie serwera ............................................................361 Rozdział 12. Wydajność serwera..............................................................................363 Zarządzanie wydajnością ............................................................................................. 364 Reguła 80/20......................................................................................................... 364 Czym jest czas odpowiedzi? ................................................................................... 365 W czym tkwi problem? .......................................................................................... 366 Czas odpowiedzi a przepustowość .......................................................................... 366 Transakcje krytyczne dla biznesu.................................................................................. 368 Spojrzenie na transakcje......................................................................................... 368 Definiowanie gwarantowanego poziomu usług......................................................... 372 Podsumowanie kroków początkowych .................................................................... 374 Diagnozowanie problemu............................................................................................. 374 Szybko i zwięźle: działania na pierwsze pięć minut .................................................. 374 Zadawanie właściwych pytań ................................................................................. 375 Ocena odpowiedzi pracowników firmy XYZ ........................................................... 378 Gdzie nale y rozpocząć poszukiwanie? Dostrajanie serwera bazy danych .................. 379 Obliczanie całkowitego czasu odpowiedzi ............................................................... 380 Dostrajanie całkowitego czasu odpowiedzi .................................................................... 382 Dekompozycja czasu procesora .............................................................................. 382 Analiza czasu oczekiwania ..................................................................................... 385 Rozwiązanie problemu firmy XYZ ......................................................................... 397 Typowe przyczyny problemów wydajnościowych.......................................................... 397 Błędy aplikacji i projektu bazy danych .................................................................... 398 Nieefektywny rozkład plików danych i konfiguracji składowania .............................. 398 Nieodpowiednia wartość parametru db_block_size aplikacji...................................... 398 Niewłaściwe ustawienie obiektów bazy danych........................................................ 399 Nieodpowiednie rozmiary i liczba segmentów wycofywania ..................................... 400 Źle zaprojektowana aplikacja.................................................................................. 400
  7. 7. 10 Oracle9i. Administrowanie bazami danych od podstaw Rozdział 13. Narzędzia dostarczane przez Oracle ......................................................405 Dostrajanie SQL przy u yciu Explain Plan, TKPROF i Autotrace.................................... 406 Optymalizator ....................................................................................................... 406 Dostrajanie SQL.................................................................................................... 409 Explain Plan ......................................................................................................... 412 Narzędzie do śledzenia wykonywania instrukcji SQL (TKPROF).............................. 413 Autotrace.............................................................................................................. 417 Wykorzystanie Oracle Enterprise Manager (OEM)......................................................... 418 Podstawowe mo liwości OEM ............................................................................... 419 Opcje OEM do administrowania bazą danych .......................................................... 422 Inne dostępne pakiety ............................................................................................ 423 STATSPACK ............................................................................................................. 424 DBMS_STATS .......................................................................................................... 431 Wykorzystanie przechowywanych szkiców ................................................................... 433 Implementacja szkiców przechowywanych .............................................................. 433 Dodatki............................................................................................ 435 Dodatek A Słownik ...............................................................................................437 Dodatek B Zasoby................................................................................................451 Jak zostać administratorem bazy danych (DBA)............................................................. 451 O szkoleniu........................................................................................................... 451 Administrator w poszukiwaniu pracy ...................................................................... 453 Program Oracle Certified Professional........................................................................... 454 Test Oracle Certified Professional (OCA/OCP/OCM)............................................... 454 MetaLink.................................................................................................................... 459 Technet...................................................................................................................... 460 Kilka interesujących stron w Internecie ......................................................................... 461 Skorowidz............................................................................................463
  8. 8. Rozdział 9. Codzienne czynności Pomyślmy o czynnościach wykonywanych w codziennym yciu. Codziennie wstaje- my o tej samej godzinie, myjemy zęby, bierzemy prysznic, jemy śniadanie. W drodze do pracy zatrzymujemy się i kupujemy gazetę i fili ankę kawy. Jeździmy tym samym po- ciągiem lub autobusem. Jeśli chodzimy do szkoły, zajęcia odbywają się zgodnie z usta- lonym planem. Raz w tygodniu robimy większe zakupy i pranie. Raz w miesiącu mo- emy pójść do fryzjera. Co roku odwiedzamy dentystę i kontrolujemy stan techniczny samochodu. Być mo e twoje ycie nie jest a tak uporządkowane, ale ludzie ulegają przyzwyczajeniom — je eli masz stałą pracę, to działasz zgodnie z pewnymi zasadami i procedurami. Uwa amy, e podobnie jak w codziennym yciu, w pracy administratora bazy danych obowiązują pewne zasady działania. Poni sze procedury i procesy informują o poten- cjalnych problemach, tak aby mo liwe było podjęcie działań, zanim sprawy przybiorą zły obrót. Wspaniale jest być profesjonalnym DBA. Nie tylko zwiększa się szansa po- siadania płynnie pracującej bazy danych, lecz maleje równie liczba weekendów spę- dzanych w pracy. Jednocześnie zyskujemy pewność, e drobnostki nie urosną do rangi powa nych pro- blemów. W niniejszym rozdziale pokazujemy skrypty pomagające w implementacji nowych zwy- czajów. Wykonanie ka dego z nich wymaga podłączenia do bazy danych z uprawnie- niami u ytkownika uprzywilejowanego. Nale y wykorzystać konta 5;5 lub 5;56'/ z do- starczoną przez Oracle rolą DBA albo utworzyć u ytkownika z rolą DBA lub jego przywilejami. Zalecamy utworzenie oddzielnego konta u ytkownika do monitorowania bazy danych. Obserwacja pracy bazy danych Dlaczego mamy obserwować zachowanie bazy danych w regularnych odstępach czasu? Czy nie prościej jest odbierać powiadomienia o ewentualnych błędach? Codzienna kon- trola pozwala właściwie określić: Jakie elementy bazy funkcjonują prawidłowo. Wzrost zajmowanej przestrzeni.
  9. 9. 268 Część II Zarządzanie bazą danych Częstotliwość przełączania dzienników. Liczbę przyłączonych u ytkowników. Je eli wiadomo, jak powinna funkcjonować baza danych, to natychmiast mo na zauwa- yć ka dą nieprawidłowość w jej pracy i skorygować ją, zanim jeszcze pojawi się pro- blem. Niewątpliwie lepiej jest poinformować kierownictwo o fakcie dodania jeszcze jednego pliku danych z powodu braku miejsca w głównych tabelach aplikacji, ni do- prowadzić do zatrzymania pracy całego działu, kiedy wolna przestrzeń, niezbędna do wzrostu tabel zostanie wyczerpana. Przejdźmy do omówienia elementów, które nale y monitorować. Dzienniki ostrzeżeń W czasie tworzenia bazy danych Oracle tworzy równie dziennik, znany jako dziennik ostrze eń (alert log), w którym zapisuje informacje dotyczące: Ka dego uruchomienia bazy danych. Odzyskiwania przeprowadzonego w czasie startu bazy. Wyłączeń bazy danych. Momentów przełączenia dzienników (określanych jako przełączenia wątków). Wykorzystania podczas startu bazy parametrów (z pliku parametrów inicjujących) o wartościach innych ni domyślne. Wszystkich poleceń DDL zmieniających strukturę bazy, takich jak np. #.6'4 6#$.'52#%' 2#;41..A65 #&& RNKMAFCP[EJ. Pojawiających się błędów alokacji przestrzeni (14# do 14#). Występujących błędów wraz z poło eniem i nazwą pliku błędu (określanego jako plik śladu z powodu rozszerzenia .trc). ORACLE tworzy te pliki w celu pełnej dokumentacji błędów i dostarczenia pomocy technicznej przy lokalizacji źródła błędów. Jak widać, dziennik błędów zawiera sporo cennych, mo e nawet nadmiarowych infor- macji. Jego rozmiar nigdy nie zmniejsza się automatycznie, a nazwa w ró nych syste- mach budowana jest w następujący sposób: CNGTV5+ NQI w systemach uniksowych, 5+ CNTVNQI w systemie Windows 2000. Inaczej mówiąc, informacje są stale dodawane do utworzonego razem z bazą danych dziennika za ka dym razem, gdy wystąpi jedno z wymienionych wy ej zdarzeń. Jak mo na sobie wyobrazić, rozmiar tego piku, dla pracującej przez dłu szy czas bazy, mo- e być bardzo du y. Je eli zamierzamy sprawdzić wpisy z ostatniego tygodnia, a baza danych pracowała powiedzmy przez rok, zadanie to mo e się okazać kłopotliwe. Co zatem zrobić w takiej sytuacji?
  10. 10. Rozdział 9. Codzienne czynności 269 Otó istnieje pewna prawidłowość: Oracle utworzy nowy plik dziennika z identyczną nazwą w wypadku, gdy w czasie próby zapisu nie odnajdzie pliku. Oznacza to, e mo na codziennie zmieniać nazwę pliku dziennika i przenosić go do archiwum. Takie działanie wią e się z dwoma korzyściami: bie ący plik dziennika błędów ma relatywnie mały roz- miar (zatem nie trzeba się martwić o wyczerpanie przestrzeni dyskowej), a jednocześnie poprzednie dzienniki są dostępne do przeglądania, np. w poszukiwaniu pewnych trendów. Mamy przygotowane zadanie wsadowe, uruchamiane co noc, które zmienia nazwy plików dzienników wszystkich baz danych w ten sposób, e dodaje aktualną datę jako rozsze- rzenie pliku. Kolejne zadania jego procedur polegają na przesłaniu dzienników na nasze konta pocztowe, co umo liwia ich szybki przegląd w poszukiwaniu błędów takich jak problemy z przestrzenią (błąd 600) lub zbyt szybkie przełączanie dzienników. Błędy Oracle w zakresie 600 są określane jako błędy 14#. Pomimo e nie zawsze sygnali- zują one uszkodzenie bazy danych, mogą być przejawem powa nych błędów wewnętrz- nych i powinny zostać potraktowane powa nie. Je eli nie wiemy, z jakim typem błędu mamy do czynienia, mo emy to sprawdzić, wykorzystując stronę Metalink. W przypadku administrowania wieloma bazami danych analiza wszystkich dzienników błędów mo e zajmować zbyt wiele czasu. Nie zawsze mo na sobie pozwolić na analizę problemów następnego dnia. Niektórzy administratorzy wypracowali procedury poszu- kujące błędów i wysyłające powiadomienia tylko w wypadku ich stwierdzenia. Je eli pracujemy w środowisku, w którym błędy i przestoje są niedopuszczalne, mo na stwo- rzyć lub kupić program monitorujący występowanie błędów i wysyłający powiadomienia. Operacja sprawdzenia dziennika bazy danych zajmuje jedynie kilka minut dziennie. Nie- który z nas wykorzystują skrypty przesyłające dzienniki do prywatnych kont pocztowych. Je eli codziennie przesyłasz do siebie dzienniki błędów, to przejrzenie ich umo liwi: Szybkie zlokalizowanie dowolnych problemów. Manualne sprawdzenie plików w celu upewnienia się, czy nie są one przełączane zbyt często. Upewnienie się, czy proces zapisujący do plików dziennika powtórzeń przebiega bez zakłóceń (które mogłyby wskazywać na zbyt małe rozmiary lub zbyt małą ilość dzienników powtórzeń w systemie). Oracle Enterprise Manager (OEM) posiada usługę Event Monitoring Service, która rów- nie pomaga w monitorowaniu bazy danych. Więcej informacji o OEM, jego mo liwo- ściach i funkcjach, zawarto w rozdziale 13. Je eli parametr inicjujący NQIAEJGEMRQKPVUAVQACNGTV ma wartość 647', Oracle doda wię- cej informacji o przełączaniu dzienników zmian do pliku dziennika ostrze eń. Zwiększa- jąc jego rozmiar, umieści w nim jednocześnie więcej informacji o tym, co dzieje się w ba- zie danych. Poni ej pokazujemy fragment dziennika ostrze eń bazy danych Oracle9i, w której opcja NQIAEJGEMRQKPVUAVQACNGTV została ustawiona na 647'. 5CV ,CP $GIKPKPI NQI UYKVEJ EJGEMRQKPV WR VQ 4$# =Z?5%0 ZH 6JTGCF CFXCPEGF VQ NQI UGSWGPEG %WTTGPV NQI UGS OGO %14#%.'14##6#$$4'1.1) 5CV ,CP #4% $GIKPKPI VQ CTEJKXG NQI VJTGCF UGSWGPEG #4% $GIKPKPI VQ CTEJKXG NQI VJTGCF UGSWGPEG
  11. 11. 270 Część II Zarządzanie bazą danych 5CV ,CP $GIKPKPI NQI UYKVEJ EJGEMRQKPV WR VQ 4$# =Z?5%0 ZH 6JTGCF CFXCPEGF VQ NQI UGSWGPEG %WTTGPV NQI UGS OGO %14#%.'14##6#$4'1.1) 5CV ,CP #4% $GIKPKPI VQ CTEJKXG NQI VJTGCF UGSWGPEG #4% $GIKPKPI VQ CTEJKXG NQI VJTGCF UGSWGPEG 5CV ,CP %QORNGVGF EJGEMRQKPV WR VQ 4$# =Z?5%0 ZH %QORNGVGF EJGEMRQKPV WR VQ 4$# =Z?5%0 ZH 5CV ,CP $GIKPKPI NQI UYKVEJ EJGEMRQKPV WR VQ 4$# =Z?5%0 ZH 6JTGCF CFXCPEGF VQ NQI UGSWGPEG %WTTGPV NQI UGS OGO %14#%.'14##6#$4'1.1) 5CV ,CP #4% $GIKPKPI VQ CTEJKXG NQI VJTGCF UGSWGPEG #4% $GIKPKPI VQ CTEJKXG NQI VJTGCF UGSWGPEG 5CV ,CP %QORNGVGF EJGEMRQKPV WR VQ 4$# =Z?5%0 ZH 5CV ,CP $GIKPKPI INQDCN EJGEMRQKPV WR VQ 4$# =Z?5%0 ZH %QORNGVGF EJGEMRQKPV WR VQ 4$# =Z?5%0 ZH 5CV ,CP 5CV ,CP 14# WPCDNG VQ GZVGPF VCDNG 4#%*'..4)6#$.' D[ KP VCDNGURCEG .4)#6# Wygląda na to, e baza danych $ w sobotę 18 stycznia 2002 o godzinie 20:27 miała problem z przestrzenią. Zakładając, e o tak późnej porze w systemie nie pracowali ju u ytkownicy, mo emy przypuszczać, e to nietypowe zadanie wsadowe próbowało zała- dować tabelę .4)6#$.'. Niestety, jej obszar tabel zawiera za mało ciągłej przestrzeni dla alokacji obszaru. Do dziennika ostrze eń został zapisany błąd, a proces próbujący zała- dować tabelę zakończył się niepomyślnie. Je eli istniałby proces, monitorujący w sposób ciągły dziennik ostrze eń, który powiadamia o błędach, moglibyśmy zareagować natych- miast, dodając niezbędną przestrzeń i prosząc u ytkownika o wznowienie zadania lub przesłać wiadomość o rozwiązaniu problemu do wszystkich zainteresowanych (w tym oczywiście do szefa, który powinien zostać o takim fakcie poinformowany). W dalszej części tego rozdziału umieszczony jest skrypt pozwalający na sprawdzenie, czy któryś z obiektów bazy danych nie będzie w stanie pobrać wolnego obszaru z po- wodu braku wolnej przestrzeni. Umo liwia to dodanie przestrzeni jeszcze przed wystą- pieniem problemu w czasie wykonywania zaplanowanych zadań którejś z aplikacji. Je- eli zaobserwujemy częste błędy wykonania pewnego zadania wsadowego, to mo emy wykorzystać nowy tryb alokacji przestrzeni, zatrzymać zadanie do czasu wykonania od- powiedniej akcji, a następnie wznowić je od miejsca, w którym zostało zatrzymane. O tym sposobie powiemy więcej w rozdziale 11. LISTENER.LOG Proces nasłuchu Oracle Net Listener (we wszystkich wersjach Oracle8 nazywany Net8, a SQL*Net we wcześniejszych) tworzy w czasie uruchamiania dziennik, do którego w za- le ności od ustawionego poziomu logowania zapisuje du e lub minimalne ilości danych. W opcji minimalnej zapisywane są następujące informacje:
  12. 12. Rozdział 9. Codzienne czynności 271 Czas uruchomieniu procesu nasłuchu. Lista portów, na których jest on prowadzony. Komputer, na którym nasłuch jest uruchomiony. Informacje o połączeniach zrealizowanych przez proces. Przykładowy wpis wygląda następująco: 605.504 HQT DKV 9KPFQYU 8GTUKQP 2TQFWEVKQP QP 56; %QR[TKIJV E 1TCENG %QTRQTCVKQP #NN TKIJVU TGUGTXGF 2NKM RCTCOGVTÎY U[UVGOQY[EJ LGUV E1TCENG1TCPGVYQTMCFOKPNKUVGPGTQTC -QOWPKMCV[ FKGPPKMC CRKUCPQ FQ E1TCENG1TCPGVYQTMNQINKUVGPGTNQI +PHQTOCELC Q NCFKG CRKUCPC FQ E1TCENG1TCPGVYQTMVTCEGNKUVGPGTVTE 1DGEP[ RQKQO NCFW LGUV 7TWEJQOKQPQ RKF 0CU WEJ PC '5%4+26+10 #4'55 24161%1.VER *1564#)10(;A.#2612 2146 0CU WEJ PC '5%4+26+10 #4'55 24161%1.KRE2+2'0#/'RKRG':6241%KRE 6+/'56#/2
  13. 13. %100'%6 #6# =
  14. 14. 24161%1. +0(1?
  15. 15. '8'06 =
  16. 16. 5+?
  17. 17. 4'6740 %1' Je eli zostanie włączone logowanie na wy szym poziomie, w dzienniku będzie zapisy- wane więcej informacji, lecz jednocześnie znajdą się tam dane mniej istotne. Zalecamy systematyczne, okresowe sprawdzanie dziennika NKUVGPGTNQI w poszukiwaniu błędów. Je eli odnotuje on problemy z Oracle Net, nale y prowadzić dokładniejsze obserwacje. Proszę zauwa yć, e wcześniejsze wersje oprogramowania tworzą inne wpisy w tym dzienniku. Jedynym sposobem na usunięcie dziennika NKUVGPGTNQI, kiedy osiągnie zbyt du y rozmiar, jest zatrzymanie procesu nasłuchu, usunięcie pliku dziennika i ponowne uruchomienie listenera. W przeciwieństwie do dziennika alertów, po zmianie jego nazwy ORACLE nadal zapisuje do niego informacje. Zatrzymanie nasłuchu nie pociąga za sobą utraty istniejących połączeń, lecz do chwili jego wznowienia niemo liwe jest tworzenie nowych. Z tego powodu uruchamiamy zazwyczaj dwa oddzielne procesy dla ka dej in- stancji i umieszczamy oba porty we wszystkich plikach 6050#/'514# naszych klientów. Kiedy Oracle Net podejmuje próbę podłączenia się do listenera od strony klienta, stara się wykorzystać najpierw pierwszy podany w 6050#/'514# port. Je eli nie istnieje na nim aktywny proces nasłuchu, to sprawdzany jest następny port. Zatem wyłączenie na- słuchu, usunięcie plików dzienników i ponowne włączenie listenera nie powoduje za- kłóceń w dostępie u ytkowników do bazy danych. Słabą stroną posiadania wielu listenerów jest konieczność zarządzania nimi oraz wzrost liczby aktywnych procesów serwera (jeden proces dla ka dego nasłuchu).Kilka listene- rów pozwala rozło yć obcią enie sieci na większą liczbę kart interfejsów sieciowych (Network Interface Cards NIC) i w ten sposób zbalansować połączenia do serwera bazy danych. Szczegółowe informacje dotyczące konfiguracji sieciowej zawierają Net Servi- ces Administrator Guide i Net Services Reference Guide dołączone do dokumentacji Oracle.
  18. 18. 272 Część II Zarządzanie bazą danych Status Redo Log W jakim celu nale y sprawdzać status dzienników zmian? Być mo e z powodu zbyt czę- stego przełączania zamierzasz zmienić ich rozmiar. Je eli ich nazwy mają pozostać nie- zmienione, to konieczne jest ich usuniecie, a następnie odtworzenie z nowym rozmiarem. Przed usunięciem dziennika zmian administrator powinien wiedzieć, jaki jest aktualny status tego dziennika. Usunięcie bie ącego dziennika nie jest dobrą praktyką, je eli nie dotyczy testowania scenariuszy odzyskiwania! Informacje o aktywnych dziennikach zmian są utrzymywane w dwóch wirtualnych per- spektywach 8 : 8 .1) i 8 .1)(+.'. W celu pobrania pełnych informacji, perspektywy te mogą zostać złączone na kolumnie )TQWR . Dzienniki zmian mogą stanowić część grupy dzienników, pozwalającej na ich dublowanie (ang. mirroring) z wykorzystaniem pro- gramów narzędziowych Oracle i zapewnienie w ten sposób dodatkowego zabezpieczenia przed ich ewentualną utratą. Strata pojedynczego aktywnego dziennika wymaga odbu- dowania bazy danych, natomiast gdy dziennik nale y do grupy, Oracle wpisuje infor- mację do dziennika alertów i kontynuuje pracę, wykorzystując pozostałe dzienniki. Ist- nieje zatem mo liwość usunięcia i odtworzenia dziennika zmian bez potrzeby wyłączania bazy danych. Poni szy skrypt umo liwia wyświetlenie informacji o dziennikach zmian w bazie danych VGUV. Do jego uruchomienia wymagane są uprawnienia konta 5;56'/. EQN /GODGT HQTOCV C EQN .QIUVCV HQTOCV C JGCFKPI 7UG UVCVWU UGNGEV /GODGT C)TQWR DUVCVWU CUVCVWU .QIUVCV HTQO 8 .1)(+.' C8 .1) D YJGTG C)TQWR D)TQWR /'/$'4 )4172 56#675 7UG UVCVWU 14##6#6'564'141 #%6+8' 14##6#6'564'141 %744'06 14##6#6'564'141 +0#%6+8' 14##6#6'564'141 +0#%6+8' Przeglądając wyniki wykonania tego dziennika, mo emy powiedzieć kilka istotnych rze- czy o tej bazie danych: Administrator bazy danych (DBA) nie zdecydował się na wykorzystanie zalet dublowania dzienników, poniewa w ka dej grupie jest tylko jeden dziennik. Istnieją cztery dzienniki zmian i wszystkie są częścią bazy danych. Kolumna 75' 56#675 zawierająca status z perspektywy 8 .1)(+.' jest pusta, je eli dziennik jest wykorzystywany przez bazę danych. Dzienniki są umieszczone na dwóch ró nych dyskach, a DBA próbował poprawić wydajność przez zamianę ich poło enia na tych dyskach. Do czasu, gdy ORACLE będzie czytać poprzedni dziennik w celu archiwizacji, istnieje mo liwość wystąpienia konfliktów na poziomie głowic dyskowych, je eli oba
  19. 19. Rozdział 9. Codzienne czynności 273 dzienniki znajdują się na tym samym dysku. Umieszczenie ich na oddzielnych dyskach umo liwia niezakłócony odczyt jednego z nich w czasie zapisu do drugiego. Je eli tylko jest to mo liwe, dzienniki zmian powinny być umieszczane na pustych dyskach lub w ostateczności na dyskach zawierających pliki rzadko wykorzystywane. Bie ącym wykorzystywanym plikiem dziennika jest TGFQ (wartość w kolumnie statusu %744'06). Ostatnio wykorzystywanym dziennikiem był TGFQ (Status #%6+8'). Jest prawdopodobne, e plik TGFQ jest albo archiwizowany, albo wymagany do odzyskania bazy danych w przypadku awarii. Status +0#%6+8' oznacza, e dziennik zmian nie jest wymagany do odzyskiwania. Inne mo liwe wartości kolumny statusu perspektywy 8 .1) mo na znaleźć w doku- mentacji Oracle. Fragmentacja W jakim celu sprawdzamy poziom fragmentacji w naszej przestrzeni tabel? Pomyślmy o przestrzeni tabel jak o puzzlach, które próbujemy uło yć. Im więcej klocków uda nam się dopasować, tym bardziej komplikuje się kształt wolnego miejsca. Dopasowanie ko- lejnego elementu wymaga dokładnego określenia jego rozmiaru. Poszukiwanie wolnej przestrzeni w obszarze tabel dla kolejnego obszaru funkcjonuje w podobny sposób. Przy odrobinie szczęścia mo na utworzyć lub odziedziczyć bazę, któ- rej tabele w ka dej przestrzeni tabel wykorzystują domyślne parametry przechowywania przestrzeni tabel. W ten sposób ka dy obszar ma identyczny rozmiar i nie istnieją porcje wolnej przestrzeni, których wielkość uniemo liwia ich wykorzystanie. Niestety, nie zaw- sze to tak wygląda. W przestrzeni tabel mo e istnieć du o wolnego miejsca, lecz aden z jego fragmentów nie jest wystarczająco du y do pomieszczenia obszaru. Pomimo e obszary tworzące obiekt mogą być rozrzucone na dysku, bloki w obrębie obszaru muszą być umieszczone w sposób ciągły. Z tego powodu nale y monitorować przestrzeń tabel i upewniać się, e istnieją porcje wolnych bloków na tyle du e, aby kolejne zadanie zo- stało wykonane. Poni szy skrypt PL/SQL wyświetla dostępne w obrębie przestrzeni tabel obszary włącz- nie z ich rozmiarami. Przed uruchomieniem skryptu nale y utworzyć tabelę do prze- chowywania wyników przejściowych, wykorzystując skrypt utworzenia tabeli. Do uru- chomienia skryptu podającego fragmentację nale y wykorzystać konto z przywilejami u ytkownika 5;56'/. %TGCVG VCDNG (4''52 (PCOG 8#4%*#4 6URCEG 8#4%*#4 (KTUV 07/$'4 $NQEMU 07/$'4 .CUV 07/$'4
  20. 20. 274 Część II Zarządzanie bazą danych Tabela (4''52 jest tworzona tylko raz, a po opró nieniu poleceniem VTWPECVG, wykorzy- stywana wielokrotnie. Kreowanie tabeli przy ka dym wykonaniu skryptu zwiększałoby niepotrzebnie stopień fragmentacji przestrzeni. UGV HGGFDCEM QHH VGTO QHH XGTKH[ QHH RCIGUKG PGYRCIG NKPGUKG VTWPECVG VCDNG (4''52 FGENCTG (KNGKF 07/$'4 (KNG0COG 8#4%*#4 6UPCOG 8#4%*#4 %WTUQT 6CDNGURCEGU KU UGNGEV (KNGA0COG(KNGA+ 6CDNGURCEGA0COG HTQO $#A#6#A(+.'5 YJGTG 6CDNGURCEGA0COG WRRGT DGIKP QRGP 6CDNGURCEGU NQQR HGVEJ 6CDNGURCEGU KPVQ (KNGPCOG (KNGKF 6U0COG GZKV YJGP 6CDNGURCEGU 016(170 FGENCTG (KTUV 07/$'4 $NQEMU 07/$'4 .CUV 07/$'4 6HKTUV 07/$'4 6DNQEMU 07/$'4 6NCUV 07/$'4 %WTUQT (TGG KU UGNGEV $.1%-A+ C $NQEMU D $.1%-A+ $NQEMU E HTQO $#A(4''A52#%' YJGTG (KNGA+ (KNGKF QTFGT D[ $NQEMA+ DGIKP QRGP (TGG HGVEJ (TGG KPVQ (KTUV$NQEMU .CUV KH (TGG 016(170 VJGP IQVQ ENQUGAHTGG GPF KH NQQR HGVEJ (TGG KPVQ 6HKTUV 6DNQEMU 6NCUV GZKV YJGP (TGG 016(170 KH 6HKTUV .CUV VJGP $NQEMU$NQEMU 6DNQEMU .CUV 6NCUV GNUG KPUGTV KPVQ (4''52 XCNWGU (KNGPCOG 6UPCOG (KTUV$NQEMU .CUV EQOOKV (KTUV 6HKTUV $NQEMU6DNQEMU .CUV6NCUV GPF KH GPF NQQR KPUGTV KPVQ (4''52 XCNWGU (KNGPCOG6UPCOG (KTUV$NQEMU .CUV EQOOKV
  21. 21. Rozdział 9. Codzienne czynności 275
  22. 22. COMPKúEKG (TGG
  23. 23. %.15'A(4'' ENQUG (TGG GPF GPF NQQR EQOOKV ENQUG 6CDNGURCEGU GPF UGV VGTO QHH GEJQ QHH VVKVNG EGPVGT 4#2146 (4#)/'06#%,+ 24'564'0+ 6#$'. EQN 6URCEG JGCFKPI 0#9#^24'564'0+ HQTOCV C VTWPE EQN (PCOG JGCFKPI 2.+- HQTOCV C VTWPE EQN (KTUV JGCFKPI $.1-^21% HQTOCV EQN $NQEMU JGCFKPI 41/+#4 $.- HQTOCV DTGCM QP TGRQTV QP 6URCEG UMKR QP (PCOG UMKR EQORWVG UWO QH $NQEMU QP (PCOG EQORWVG UWO QH $NQEMU QP TGRQTV URQQN HTCIOGPVCELCTRV UGNGEV 6URCEG(PCOG (KTUV $NQEMU HTQO (4''52 QTFGT D[ 6URCEG(PCOG (KTUV URQQN QHH Skrypt jest wykonywany dla pojedynczej przestrzeni tabel, której nazwa jest jego argu- mentem wejściowym. Przyjrzyjmy się wynikom jego wykonania. 4#2146 (4#)/'06#%,+ 24'564'0+ 6#$'. 0#9# $.1- 24'564'0+ 2.+- 21% 41/+#4 $.- 754 JQOGQTCENGWUGTA
  24. 24. 276 Część II Zarządzanie bazą danych
  25. 25. UWO
  26. 26. UWO Przestrzeń tabel jest bardzo niejednorodna. Czterdzieści obszarów w 13 881 wolnych blokach, średnio mniej ni 350 bloków na obszar. Je eli jedyną rzeczą, którą zrobiliśmy, było zwiększenie liczby dostępnych dla tej przestrzeni tabel bloków w perspektywie $#A (4''A52#%', to wydaje się, e posiada ona mnóstwo wolnej przestrzeni. Zbyt wielu nie- doświadczonych administratorów wpada w pułapkę polegającą na sprawdzeniu jedynie całkowitej dostępnej przestrzeni i wnioskowaniu na tej podstawie o wystarczającej ilości ciągłego miejsca do alokowania kolejnego obszaru. Analiza przestrzeni tabel z powy - szego raportu ujawnia, e większość obszarów ma rozmiar mniejszy ni 500 bloków. Dopóki przestrzeń tabel jest wykorzystywana w trybie tylko do odczytu lub zawiera ta- bele sporadycznie aktualizowane, nie ma problemów z przydzielaniem nowego miejsca. Oracle nie wykonuje scalania ciągłych wolnych obszarów, chyba e nie istnieje inny spo- sób uzyskania wolnej przestrzeni. Jej fragmentacja wzrasta, w miarę jak Oracle przydziela ją z największego wolnego obszaru, przed powtórnym wykorzystaniem i połączeniem mniejszych wolnych obszarów, które pozostały po usuniętych obiektach. Rysunek 9.1 ilu- struje obszary dostępne w przestrzeni tabel przed za ądaniem alokacji kolejnego obszaru, a następnie po wykonaniu tego polecenia. Rysunek 9.1. Łączenie wolnych obszarów: (a) fragmentacja z dwoma ciągłymi obszarami przed ądaniem alokacji obszaru zło onego z 25 bloków (b) fragmentacja po scaleniu i alokowaniu obszaru
  27. 27. Rozdział 9. Codzienne czynności 277 Perspektywa słownika danych $#A(4''A52#%' zawiera informacje o ka dym wolnym obszarze w plikach danych tworzących bazę. Oracle nie sprawdza tej perspektywy pod kątem ciągłości obszarów. Zatem dwa sąsiednie obszary (jak na rysunku 9.1a) przed- stawione są w dwóch ró nych wierszach. Nie jest to szczególnie efektowne i u yteczne rozwiązanie, poniewa nie przedstawia rzeczywistego obrazu wolnej przestrzeni w pli- kach danych! Skrypt HTCIOGPVUSN czyta perspektywę $#A(4''A52#%', poszukuje ciągłych obszarów, sumuje ich liczbę bloków (lub podaje ich liczbę, je eli obszary nie są ciągłe), przecho- wuje wyniki w tabeli przejściowej i drukuje raport o poziomie fragmentacji plików da- nych w przestrzeni tabel. Przechowanie poprzednich raportów umo liwia analizę wyko- rzystania przestrzeni tabel i częstotliwości występowania jej fragmentacji. Je eli wykorzystujesz przestrzeń tabel zarządzaną lokalnie, to nie nale y się martwic o łączenie wolnych obszarów. W wypadku zarządzania przez słownik, operacje tę mo na wykonać manualnie, wydając polecenie: #NVGT VCDNGURCEG VCDNGURCEG PCOG EQCNGUEG Segmenty wycofania Jak napisać wiersz? Zaczynamy od pomysłu i być mo e od pierwszego zdania. Zapisu- jemy kilkanaście linijek i decydujemy, e jest on po prostu okropny i rozpoczynamy pi- sanie od początku. W połowie pisania mo emy stwierdzić, e większość tekstu jest wspa- niała, lecz kilka linijek wymaga jednak zmiany. Ostatecznie, kończąc pisanie, decydujemy, e usunięte fragmenty powinny się w nim znaleźć. Wymaga to pamiętania treści tych wer- sów (uwa amy, e nadawały one utworowi wyjątkowy charakter i koniecznie muszą zo- stać odtworzone). Je eli ka da linia była pisana ostro nie, a to co chcieliśmy zachować, było kopiowane przed ka dą zmianą całego wiersza, to zachowany został jego wygląd na ka dym etapie pisania. Z łatwością mo emy stwierdzić, jak wyglądała ta wspaniała linijka. Po zakończeniu kolejnej wersji wiersza i wykonaniu jej kopii „na czysto” (czyli po jej ostatecznym zatwierdzeniu), mo emy udostępnić ją komuś do przeczytania, pod- czas gdy sami zajmiemy się analizą jej treści. Oracle wykorzystuje segmenty wycofania dokładnie tak, jak my swoją kopię, do przechowania obrazu danych przed wprowadze- niem zmian, określanego te jako obraz danych przed zmianą. Jaki cel ma przechowywanie obrazu danych przed zmianą? Oracle zapewnia, e „odczyt danych nie będzie blokował ich zapisu, a zapis nie będzie blokował odczytu”. Co to do- kładnie znaczy? Załó my, e otwieramy tabelę płac i wykonujemy raport o zarobkach. W tym samym czasie ktoś inny zmienia wartości kilku pozycji w tej tabeli. Bez segmentu wycofania, raport zawierałby niespójne dane, część z nich dotyczyłaby tabeli przed zmia- nami, a część po ich wprowadzeniu. Oracle zapewnia, e sytuacja taka jest niemo liwa, segment wycofania zawierający obraz danych przed zmianą zapewnia utrzymanie ich spójności nawet wtedy, gdy jednocześnie wprowadzane są modyfikacje. W wersji Oracle9i wprowadzono koncepcję automatycznego zarządzania kasowaniem zmian (ang. undo managment). Zasadniczo oznacza to, e je eli zostanie utworzona spe- cjalna przestrzeń określana jako przestrzeń wycofania (ang. Undo Tablespace) i ustawio- ny parametr inicjujący WPFQAOCPCIOGPV na #761, Oracle automatycznie przejmie nad nim kontrolę, przydzielając i zwalniając w miarę potrzeby segmenty wycofania.
  28. 28. 278 Część II Zarządzanie bazą danych Kiedy u ytkownik rozpoczyna pracę, generując raport, czy te modyfikując wiersze ta- beli, do związanego z nim procesu jest przypisany segment wycofania. W rozdziale 2., mówiliśmy o sposobie alokowania segmentów wycofania i zwiększania ich rozmiarów. Co jednak stanie się w sytuacji, gdy w takim segmencie zabraknie miejsca? Je eli du a transakcja wymaga więcej miejsca ni aktualnie posiada segment wycofania, segment ten zwiększy swój rozmiar, zajmując część pozostałej wolnej przestrzeni tabel, czyli za- chowując się dokładnie tak samo jak tabela w czasie dodawania nowych wierszy. Je eli jednak wymagana dla niego ilość miejsca przekracza rozmiar wolnej przestrzeni tabel, to transakcja nie zostanie wykonana i mo esz spodziewać się telefonu od zdenerwowa- nego u ytkownika! Jak zatem zdobyć pewność, e w segmencie wycofania istnieje do- stateczna ilość miejsca dla wykonywanych transakcji? Nale y kontrolować liczbę po- większeń rozmiarów segmentów wycofania, związaną z wykonywaniem transakcji. Je eli obszary wewnątrz segmentu wycofania są zbyt małe, transakcja będzie się „zawi- jać” od jednego do innego obszaru w obrębie segmentu. Ka da taka operacja wymaga od Oracle wykonania wewnętrznych zadań związanych z przydziałem przestrzeni. Zadania te pochłaniają czas i zasoby systemu. Zatem nale y dą yć do sytuacji, w której rozmiar segmentu wycofania jest wystarczający do pomieszczenia całej transakcji i kosztowne wewnętrzne zarządzanie przestrzenią zostaje wyeliminowane. Mo na monitorować ilość zawinięć segmentu wycofania pomiędzy obszarami. W jaki sposób to zrobić? Omówimy to w następnym podrozdziale. Monitorowanie rozmiaru segmentu wycofania Segmenty wycofania przypisane są do procesów w sposób cykliczny i wszystkie trans- akcje niezale nie od swoich rozmiarów rywalizują w dostępie do tych samych dostępnych segmentów. Je eli po ka dym zatwierdzeniu transakcji nie zostanie wydane polecenie UGV VTCPUCEVKQP WUG TQNNDCEM UGIOGPV, nakazujące kolejnej wykorzystanie specyficzne- go segmentu, to nie mamy wpływu na przydzielony transakcji segment wycofania. Pole- cenie UGV VTCPUCEVKQP WUG TQNNDCEM UGIOGPV musi wystąpić w pierwszej linii transak- cji, a EQOOKV lub TQNNDCEM w ostatniej. Je eli wykorzystywane jest polecenie UGV VTCPUCEVKQP WUG TQNNDCEM UGIOGPV dla du ej transakcji, powinieneś utworzyć segment wycofania przeznaczony specjalnie dla niej. Je eli nie wykorzystujemy UGV VTCPUCEVKQP WUG TQNNDCEM UGIOGPV, segment wycofania zostanie przydzielony w sposób przypadkowy. Poniewa większość przypisań segmen- tów wycofania do transakcji ma charakter losowy, nale y wykorzystywać standardowy rozmiar dla wszystkich segmentów wycofania (z wyjątkiem specyficznych, wspoma- gających du e transakcje). Nie ma adnej gwarancji, e du y segment wycofania, stwo- rzony specjalnie dla wielkiej transakcji, nie zostanie alokowany dla innego procesu, za- nim transakcja ta zostanie uruchomiona. Wiele transakcji mo e korzystać i korzysta ze wspólnych segmentów wycofania, je eli zatem w systemie pracują inni u ytkownicy, to nie mo na mieć stuprocentowej pewności, e to właśnie nasza transakcja jest jedyną, która korzysta z bardzo du ego segmentu. Jak ju wspominaliśmy, pojedynczy segment wycofania mo e przechowywać dane wielu ró nych transakcji. Ka da z transakcji wchodzących do segmentu wycofania mo e wymusić zwiększenie jego rozmiaru. Zatem je eli znajduje się w nim wiele małych transakcji, jego rozmiar mo e się zwiększyć dokładnie tak samo jak w przypadku jednej o du ym rozmiarze.
  29. 29. Rozdział 9. Codzienne czynności 279 Segment wycofania, optymalny parametr Załó my, e segment wycofania rozszerzał się i osiągnął punkt, w którym wykorzystuje ju całą dostępną przestrzeń. Co się stanie w takim wypadku? Transakcja, która podej- mie próbę zwiększenia jego rozmiarów, nie zostanie wykonana. Podobnie będą zacho- wywać się transakcje wymagające zwiększenia rozmiarów innych segmentów. Jakie mo liwości działania mamy w takim wypadku? Istnieje tylko jedna — dodać nowy plik danych do przestrzeni tabel segmentów wycofania i w ten sposób zwiększyć ilość do- stępnej przestrzeni. Mimo to jednak, zanim jeszcze sprawy przybiorą taki obrót, jest coś, co mo na zrobić w celu zapewnienia dostatecznej ilości miejsca w przestrzeni tabel segmentów wycofa- nia. Kontrolując zwiększanie się segmentów, mo na je przebudować (pojedynczo, je eli to konieczne) i ustalić optymalny rozmiar dla ka dego z nich. Mo esz wykorzystać pa- rametr optymalny klauzuli UVQTCIG do nadania mu najlepszej wartości w czasie wykony- wania poleceń ETGCVG TQNNDCEM UGIOGPV lub CNVGT TQNNDCEM UGIOGPV. Wartość optymal- nego parametru segmentów wycofania oraz statystyki dotyczące tych segmentów mo na znaleźć w perspektywie 8 41..56#6, który gromadzi informacje o wykorzystaniu wszyst- kich segmentów wycofania od czasu uruchomienia bazy danych, jak zostało to wyja- śnione w rozdziale 6. Segmenty wycofania, którym nadano rozmiar optymalny mogą zostać skrócone (ang. shrink) po zwiększeniu swojego rozmiaru. Optymalna wielkość segmentu powinna być dobrana tak, by liczba jego rozszerzeń i skróceń, związana z obsługą transakcji, była mi- nimalna. Ka de zmniejszenie rozmiaru segmentu wycofania do poziomu jego wielkości optymalnej powoduje spadek wydajności, zatem najlepiej jest wybrać ich wielkość w taki sposób, by powiększanie nie było ju konieczne. Mimo to jednak, dla sporadycznych, du ych transakcji wymuszających rozszerzenia, wartość optymalna umo liwia odzyskanie przestrzeni. Poszukiwanie wartości optymalnych, skróceń i rozszerzeń Poni szy skrypt wykonuje zapytanie na 8 41..56#6 i 8 41..0#/'. Perspektywa 8 41..0#/' zawiera nazwy aktywnych segmentów wycofania, podczas gdy w 8 41..56#6 są one identyfikowane jedynie przez swój USN (ang. Undo Segment Number — numer segmentu powrotu). Wykonanie kwerendy z tego listingu wyświetli optymalny rozmiar, liczbę skró- ceń, średni rozmiar na skrócenie i ilość rozszerzeń na segment wycofania. 4'/ 4QUGTCPKG UGIOGPVW Y[EQHCPKC 4'/ %QNWOP 0COG HQTOCV # 5GNGEV 0COG 1RVUKG5JTKPMU #XGUJTKPM 'ZVGPFU HTQO 8 41..56#68 41..0#/' YJGTG 8 41..56#67UP 8 41..0#/'7UP Przykładowe wyniki dla zapytania na 8 41..56#6 pokazano w listingu poni ej: 0#/' 1265+' 5*4+0-5 #8'5*4+0- ':6'05 5;56'/ 4 4
  30. 30. 280 Część II Zarządzanie bazą danych Popatrzmy, co dokładnie zawiera ten raport. W bazie danych istnieją trzy aktywne seg- menty wycofania. Segment 5;56'/ jest wykorzystywany do transakcji słownika danych. Transakcje u ytkowników są związane z segmentami R01 albo R02. Ka dy z nich po- siada rozmiar optymalny 10 MB (10 485 760 bajtów), rozszerzał się powy ej tej warto- ści i był ponownie do niej skracany, dwa lub więcej razy. Ka dorazowo segmenty były skracane przeciętnie o 40 MB. Uwa na analiza raportu pokazuje zatem, e optymalny rozmiar segmentów nie został dobrany właściwie dla transakcji, które je wykorzystują. Zbyt często zwiększają one swój rozmiar (49 razy od ostatniego startu bazy danych), a ich średni przyrost przekracza pięciokrotnie rozmiar przyjęty jako optymalny. W takiej sy- tuacji Oracle wykonuje mnóstwo niepotrzebnej pracy związanej z zarządzaniem prze- strzenią. W celu zmniejszenia ilości rozszerzeń segmentów, wartość optymalna powinna zostać zwiększona co najmniej do 40 MB. Systematyczne wykonywanie skryptu dostar- czy nam informacji, jaki skutek wywołała ta zmiana. Mo na równie zdecydować się na dodanie do bazy danych dodatkowych segmentów wycofania, co poprawi wykonywanie transakcji. Kiedy segment wycofania po raz pierwszy zwiększa swój rozmiar ponad wartość opty- malną, nie zostaje skrócony. Za drugim razem, gdy wielkość segmentu wzrasta powy ej wartości optymalnej, będzie on skrócony — zapewniając następnej transakcji wymu- szenie alokacji nowego obszaru. Pomimo e ustalenie wielkości optymalnej segmentów nie uchroni nas zupełnie przed administrowaniem nimi, pomo e niewątpliwie w ograni- czeniu liczby i rodzajów tych czynności. Z powodu specyfiki, zgodnie z którą zmienia się rozmiar segmentów wycofania, ilość „powiększeń” widoczna w wynikach wykonania poprzedniego skryptu będzie zawsze większa ni ilość „zmniejszeń”. Dla przykładu, je eli początkowy rozmiar segmentu wycofania jest mniejszy ni przewidziana dla niego wartość optymalna, ądanie nowe- go obszaru powoduje zwiększenie statystyki powiększeń (ang. Extends), lecz skrócenie (Shrink) nie jest konieczne. Kiedy segment wycofania zwiększy swój rozmiar powy ej wartości optymalnej, mo e być skracany jedynie po zakończeniu transakcji, która jest w stanie wymusić jego wielokrotne rozszerzenie. Do skracania segmentów wycofania do wybranego początkowo rozmiaru mo na wyko- rzystać polecenie UJTKPM TQNNDCEM UGIOGPV. Segment wycofania musi zawierać co naj- mniej dwa obszary. Je eli nie zostanie określony rozmiar, do jakiego ma on zostać zre- dukowany, domyślnie przyjmowana jest wielkość optymalna. Poni szy listing ilustruje zredukowanie rozmiaru segmentu do wartości optymalnej. #NVGT TQNNDCEM UGIOGPV 4 UJTKPM Monitorowanie rozmiaru obszaru segmentu wycofania W celu uproszczenia zarządzania wieloma pozycjami w segmencie wycofania, nale y tak skonfigurować rozmiar segmentu, by ka dy znajdujący się wewnątrz niego obsza- rów był wystarczająco du y do wsparcia typowej transakcji. Kiedy segment wycofania transakcji nie mo e być przechowany w pojedynczym obszarze, próbuje wykorzystać kolejny obszar segmentu. Obszary segmentu wycofania są przydzie- lane cyklicznie, zatem transakcja mo e zostać przewinięta od ostatniego do pierwszego
  31. 31. Rozdział 9. Codzienne czynności 281 obszaru segmentu wycofania, je eli tylko nie zawiera on aktywnej transakcji, w prze- ciwnym razie wykonywane jest powiększenie segmentu. Zapytanie wykonane dla perspektywy 8 41..56#6 umo liwia ilość okrą eń segmentu wycofania, które zaszły od ostatniego uruchomienia bazy danych. Je eli jest ona równa zero, oznacza to, e wielkość obszarów segmentu została dobrana prawidłowo dla wy- korzystujących je transakcji. Wartość większa od zera sugeruje konieczność ponownego utworzenia segmentu wycofania z większymi obszarami. Poni ej pokazujemy dwa ró - ne raporty uzyskane po wykonaniu zapytania i przedstawiamy sposób ich interpretacji. Najpierw zapytanie: 4'/ 5RTCYFGPKG RTGYKLCPKC UGIOGPVÎY Y[EQHCPKC 4'/ %QNWOP 0COG HQTOCV # 5GNGEV 0COG 1RVUKG5JTKPMU #XGUJTKPM9TCRU 'ZVGPFU (TQO 8 41..56#68 41..0#/' 9JGTG 8 41..56#67UP 8 41..0#/'7UP Podobnie jak zapytanie dla rozszerzeń segmentu wycofania, skrypt wykorzystuje staty- styki umieszczone w 8 41..56#6, a nazwy segmentów pobiera z 8 41..0#/'. Pierwszy analizowany raport wygląda tak: 0#/' 1265+' 5*4+0-5 #8'5*4+0- 94#25 ':6'05 5;56'/ 4 4 Jak widać, od uruchomienia bazy zaszło 67 przewinięć (94#25). W porównaniu z ilością rozszerzeń, jej wartość nie wydaje się zaskakująca (rozszerzenie zazwyczaj jest poprze- dzone przewinięciem). Występowanie rozszerzeń sygnalizuje, e segment wycofania ob- sługuje transakcje o większym rozmiarze ni te, dla których został on zaprojektowany. Je eli segment nie jest w stanie pomieścić informacji związanych z transakcją, to nie zrobi te tego jego pojedynczy obszar. Zatem segment zwiększający swój rozmiar często będzie wykazywać znaczną liczbę przewinięć. Drugi raport pokazany jest w poni szym listingu i ró ni się on nieco od pierwszego. Proszę zwrócić uwagę na to, e nie wykazuje on rozszerzeń (':6'05), a jedynie prze- winięcia. 0#/' 1265+' 5*4+0-5 #8'5*4+0- 94#25 ':6'05 5;56'/ 4 4 W takiej sytuacji optymalny rozmiar segmentu wycofania został dobrany prawidłowo, lecz wielkość jego obszarów jest zbyt mała. Pomimo e segment wycofania jest w sta- nie pomieścić transakcje, ich pozycje wymagają wielu obszarów wewnątrz segmentu. W takiej sytuacji nale y ponownie utworzyć segmenty wycofania z identycznymi war- tościami optymalnymi, ale ze zwiększonym rozmiarem obszarów.
  32. 32. 282 Część II Zarządzanie bazą danych Monitorowanie obszarów W aktualnej wersji oprogramowania maksymalna ilość obszarów jest ograniczona jedy- nie mo liwościami systemu operacyjnego. Mo liwe jest utworzenie tabeli z wykorzy- staniem opcji OCZGZVGPU WPNKOKVGF (lub przy u yciu dowolnej liczby takich opcji). Wiel- kość OCZGZVGPU WPNKOKVGF nie jest jednak zupełnie nieograniczona. Je eli sprawdzimy wartość kolumny /CZA'ZVGPU tabeli $#A6#$.'5 dla tabeli utworzonej z wykorzystaniem opcji OCZGZVGPU WPNKOKVGF, to oka e się, e znajdująca się tam liczba to 2 147 483 645, co w praktyce oznacza wielkość nieograniczoną. Je eli dla przestrzeni tabel nie została zdefiniowana maksymalna liczba obszarów i w czasie tworzenia tabeli w klauzuli UVQ TCIG nie zostanie podana maksymalna liczba obszarów, przyjęty zostanie maksymalny domyślny limit o wielkości opartej na rozmiarze bloku bazy danych. Dla przykładu utwórzmy przestrzeń tabel w bazie danych o rozmiarze bloku 8 KB: %TGCVG VCDNGURCEG /;A65 CVCHKNG O[FKUM=1TCENGO[FD?O[AVUFDH UKG / FGHCWNV UVQTCIG KPKVKCN M PGZV M OKPGZVGPVU QPNKPG 2TGUVTG VCDGN QUVC C WVYQTQPC Nie podaliśmy maksymalnej ilości obszarów. Utwórzmy teraz tabelę i sprawdźmy, jaka będzie dla niej domyślna wartość OCZGZVGPU. ETGCVG VCDNG /;A6#$ 'PCPOG XCTEJCT 'ORPQ PWODGT 6CDGNC QUVC C WVYQTQPC Sprawdźmy teraz nadaną jej wartość OCZGZVGPU w tabeli 75'4A6#$.'5. UGNGEV 6CDNGA0COG +PKVKCNA'ZVGPV /CZA'ZVGPVU HTQO 75'4A6#$.'5 YJGTG 6CDNGA0COG /;A6#$ 6#$.'A0#/' +0+6+#.A':6'06 /#:A':6'065 /;A6#$ Jak widać, maksymalna ilość obszarów odpowiada wartości domyślnej dla bazy danych o długości bloku 8K. Do monitorowania wzrostu tabel w bazie danych mo na wykorzystać poni szy skrypt: RTQORV 524#9#0+' (4#)/'06#%,+ 1$+'-6¦9 $#; #0;%* RTQORV EQNWOP 1YPGT PQRTKPV PGYAXCNWG 1YPGTA8CT EQNWOP 5GIOGPVA0COG HQTOCV C JGCFKPI 1DLGEV 0COG EQNWOP 5GIOGPVA6[RG HQTOCV C JGCFKPI 6CDNG+PFZ EQNWOP $[VGU HQTOCV JGCFKPI $[VGU WUGF EQNWOP 'ZVGPVU HQTOCV JGCFKPI 0Q DTGCM QP 1YPGT UMKR RCIG VVKVNG EGPVGT 4CRQTV HTCIOGPVCELK VCDGN UMKR NGHV 7VYQT[ 1YPGTA8CT UMKR UGNGEV 1YPGT 5GIOGPVA0COG 5GIOGPVA6[RG $[VGU
  33. 33. Rozdział 9. Codzienne czynności 283 /CZA'ZVGPVU 'ZVGPVU HTQO$#A5')/'065 YJGTG 'ZVGPVU CPF5GIOGPVA6[RG 6#$.' QTFGT D[ 1YPGT 5GIOGPVA0COG 5GIOGPVA6[RG /CZA'ZVGPVU VVKVNG EGPVGT 4CRQTV HTCIOGPVCELK KPFGMUÎY UMKR NGHV 7VYQT[ 1YPGTA8CT UMKR UGNGEV 1YPGT 5GIOGPVA0COG 5GIOGPVA6[RG $[VGU /CZA'ZVGPVU 'ZVGPVU HTQO $#A5')/'065 YJGTG 'ZVGPVU CPF 5GIOGPVA6[RG +0': CPF 1YPGT PQV KP 5;5 5;56'/ QTFGT D[ 1YPGT5GIOGPVA0COG5GIOGPVA6[RG/CZA'ZVGPVU Skrypt sprawdza dowolną tabelę lub indeks, dla których ilość obszarów przekracza 50. Oczywiście poziom ten mo na zmienić tak, aby był sensowny dla innego środowiska. Pomysł polega na kontrolowaniu tych tabel, które ze względu na wzrost mogą wymagać większej ilości obszarów, ni została im przydzielona. Wynik wykonania skryptu wy- gląda tak: 524#9#0+' (4#)/'06#%,+ 1$+'-6¦9 $#; #0;%* 4CRQTV HTCIOGPVCELK VCDGN 7VYQT[ 6'56 1DLGEV 0COG 6CDNG+PF $[VGU WUGF /#:A':6'065 0Q 4')A+0 6#$.' 4')A176 6#$.' 4CRQTV HTCIOGPVCELK KPFGMUÎY 7VYQT[ 6'56 1DLGEV 0COG 6CDNG+PF $[VGU WUGF /#:A':6'065 0Q +:A4'$A+0 +0': +:A4')A176 +0': +:A4')A176A +0': 5;5A% +0': 5;5A% +0': Jak widać, maksymalna ilość obszarów dla tabel 4')A+0 i 4')A176 jest większa od war- tości domyślnej. W części raportu dotyczącej indeksów widzimy dwa indeksy, których nazwy rozpoczynają się od 5;5A%. Je eli zostanie utworzony indeks bez nazwy, Oracle automatycznie przypisze mu identyfikator 5;5A% zakończony numerem. Pomimo e nie istnieją adne ograniczenia w tworzeniu takich indeksów, trudno jest uchwycić ich związek z tabelami, na których zostały zbudowane. Zalecamy jawne nazywanie indek- sów w czasie ich tworzenia i wykorzystywanie konwencji nazw, pozwalającej na szyb- ką identyfikację odpowiadających im tabel.
  34. 34. 284 Część II Zarządzanie bazą danych Jako alternatywę mo emy uruchomić taki skrypt: UGV HGGFDCEM QHH UGV VGTO QHH UGV RCIGUKG UGV PGYRCIG UGV NKPGUKG EQN DA0COG PGYAXCNWG KPUVCPEG UGNGEV +056#0%' 0#/' GUETKRVKQP 8CNWG DA0COG HTQO 8 2#4#/'6'4 YJGTG WRRGT 0COG $A0#/' VVKVNG EGPVGT KPUVCPEG 4#2146 24'564'0+6#$'.1$5#4#%* EQNWOP 6CDNGURCEGA0COG HQTOCV C JGCFKPI 6#$.'52#%'^0#/' EQNWOP 5GIOGPVA0COG HQTOCV C JGCFKPI 6#$.'^0#/' EQNWOP 'ZVGPVU HQTOCV JGCFKPI ':6'065 EQNWOP /CZA'ZVGPVU HQTOCV JGCFKPI /#:':6'065 EQNWOP 1YPGT HQTOCV C EQNWOP 5GIOGPVA6[RG HQTOCV C JGCFKPI 6#$.'^6;2' DTGCM QP 6CDNGURCEGA0COG UMKR QP TGRQTV URQQN EJGEMAGZVGPVUNQI UGNGEV 6CDNGURCEGA0COG 5GIOGPVA0COG5GIOGPVA6[RG 1YPGT 'ZVGPVU /CZA'ZVGPVU HTQO $#A5')/'065 YJGTG 5GIOGPVA6[RG PQV KP %#%*' 41..$#%- '('44' 41..$#%- CPF 'ZVGPVUFGEQFG /CZA'ZVGPVU/CZA'ZVGPVU
  35. 35. QT 'ZVGPVU CPF /CZA'ZVGPVU QTFGT D[ 6CDNGURCEGA0COG1YPGT 5GIOGPVA0COG URQQN QHH GZKV Ta wersja skryptu tworzy raport o wszystkich segmentach (tabelach, indeksach, seg- mentach chwilowych), które mają ju zaalokowane więcej ni 25 procent wartości mak- symalnej obszarów (OCZGVGPVU) lub, je eli wartość maksymalna jest nieograniczona, w których wypełnionych jest więcej ni 250 obszarów. Polecenie FGEQFG w klauzuli YJGTG zabezpiecza wyra enie przed ewentualnym dzieleniem przez zero. Wyniki wyko- nania raportu mogą wyglądać tak: 4#2146 24'564'0+6#$'.1$5#4#%* 6#$.'52#%' 6#$.' 6#$.' 0#/' 0#/' 6;2' 190'4 ':6'065 /#:':6'065 75'45 4')A+0 6#$.' 6'56 +%6/)/6 18'4/#: 6#$.' 4#%*'. Niezale nie od monitorowania obiektów, których rozmiar zbli a się do maksymalnej ilości zdefiniowanych dla nich obszarów, powinniśmy wiedzieć, które z nich nie są w sta- nie w ogóle zwiększyć swoich rozmiarów. Kolejny skrypt umo liwia identyfikację obiek- tów, dla których następny obszar przekracza ilość wolnego miejsca w przestrzeni tabel. EQNWOP 1$,'%6 HQTOCV C EQNWOP 6#$.'52#%' HQTOCV C EQNWOP 6;2' HQTOCV C EQNWOP 0':6 / HQTOCV EQNWOP ':6'065 HQTOCV UGV RCIGU VVKVNG 4#2146 24'-41%'0+# -1.',0;%* 1$5#4¦9 UGNGEV 5GIOGPVA0COG 1$.'%6 5GIOGPVA6[RG 6;2' 'ZVGPVU ':6'065
  36. 36. Rozdział 9. Codzienne czynności 285 TQWPF 0GZVA'ZVGPV 0':6 / FU6CDNGURCEGA0COG 6#$.'52#%' TQWPF FH.TIUVGZV .4)56':6 HTQO $#A5')/'065 FU UGNGEV 6CDNGURCEGA0COG 6#$.'52#%' OCZ $[VGU .4)56':6 HTQO $#A(4''A52#%' ITQWR D[ 6CDNGURCEGA0COG FH YJGTG FU6CDNGURCEGA0COG FH 6#$.'52#%' CPF 0GZVA'ZVGPV .4)56':6 CPF FU5GIOGPVA6[RG PQV KP 41..$#%- '('44' 41.$#%- 6'/214#4; 2Kæ 5V[ UVTQPC 4#2146 24'-41%'0+# -1.',0;%* 1$5#4¦9 1$.'%6 6;2' ':6'065 0':6 / 6#$.'52#%' .4)56':6 6#:4'6740 6#$.' 5/#..6$. Raport pokazuje, e następny obszar dla tabeli 6#:4'6740 ma rozmiar 5 MB, podczas gdy największy dostępny w przestrzeni tabel obszar ma wielkość 4 MB. Je eli tabela będzie musiała zwiększyć swoją wielkość, to transakcja, która tego za ąda nie zostanie wykonana z powodu braku wystarczającej ilości wolnego miejsca w przestrzeni tabel. Je eli liczba aktualnie alokowanych obszarów jest znaczna, mo na rozwa yć ewentual- ną przebudowę tabeli z większymi obszarami początkowym i kolejnym. W wypadku gdy w bazie danych istnieją przestrzenie z małymi, średnimi i du ymi rozmiarami ob- szarów, w grę wchodzi tez zmiana przestrzeni tabel, do której nale y tabela. Wiemy ju , kiedy próba rozszerzenia tabeli zakończy się negatywnie, ale jak określić, kiedy będzie ona zwiększać swój rozmiar? Chcemy teraz odpowiedzieć na to pytanie. Pozostała przestrzeń Pomimo e skrypty w poprzednim podrozdziale dostarczają informacji o poziomie frag- mentacji tabel i indeksów, umo liwiając tym samym porównywanie wyników na prze- strzeni wielu dni lub tygodni i obserwowanie częstotliwości powiększeń obiektów, nie dostarczają adnej informacji o tym, kiedy nale y spodziewać się zwiększenia ich roz- miarów. Dlaczego powinniśmy wiedzieć, jaką przestrzeń zajmują obiekty bazy danych? Otó wyobraźmy sobie sytuację, w której wszystkie obiekty jednocześnie próbują zwiększyć swoje wymiary. Czy w bazie danych istnieje tyle wolnego miejsca, by sprostać takiej sytuacji, czy te nagle go zabraknie, a kolejni zniecierpliwieni u ytkownicy będą sy- gnalizować brak przestrzeni? Czy w naszej przestrzeni tabel istnieje wystarczająco du y niezajęty obszar zdolny pomieścić największy kolejno alokowany obszar? Jedynym sposobem na utrzymanie kontroli nad taką sytuacją jest utworzenie tabeli przeznaczonej do przechowywania informacji o historii obiektów i charakterystyk ich przechowywania. Mo na ją wykorzystać do analizowania trendów i tworzyć na jej po- stawie dzienne raporty ostrzegające o obiektach, którym brakuje miejsca do rozszerzenia. Pokazany poni ej skrypt wykorzystujemy do utworzenia tabeli informacji historycz- nych. Wypełniamy tę tabelę informacjami początkowymi o największych i najczęściej aktualizowanych obiektach. Pozostałe skrypty tego podrozdziału słu ą do wpisywania dziennych statystyk dotyczących obiektów, których zachowanie analizujemy oraz do
  37. 37. 286 Część II Zarządzanie bazą danych raportowania wyników. Oracle dostarcza pakiet $/5A52#%', który mo na znaleźć w pod- katalogu /rdbms/admin, ORACLE_HOME. Pakiet ten zawiera procedurę 7075'A52#%' dostarczającą raport o rozmiarze alokowanej przestrzeni, która nie jest wykorzystywana dla danych. Przed wykorzystaniem tego pakietu trzeba zalogować się do bazy danych i zainstalować go w przedstawiony ni ej sposób (przykład dotyczy systemu Unix): USNRNWU CU U[UFDC 14#%.'A*1/'TFDOUCFOKPFDOUWVKNUSN 14#%.'A*1/'TFDOUCFOKPRTXVWVKNRND Mo na teraz wykorzystać pakiet $/5A52#%'. ETGCVG VCDNG ':6)419 5GIPCOG 8#4%*#4 016 07.. 5GIQYP 8#4%*#4 016 07.. )TQYFCVG #6' 016 07.. 5GIV[RG 8#4%*#4 5GIVDU 8#4%*#4 'ZVU 07/$'4 0GZVGZV 07/$'4 6DUHTGG 07/$'4 *YO 07/$'4 6QVD[VGU 07/$'4 7UGFD[VGU 07/$'4 %QPVKIHTGG 07/$'4 (TGGREV 07/$'4 6DUGZVU 07/$'4 VCDNGURCEG 611.5 UVQTCIG KPKVKCN PGZV OKPGZVGPVU OCZGZVGPVU REVKPETGCUG CNVGT VCDNG ':6)419 CFF EQPUVTCKPV ':6)419A2- RTKOCT[ MG[ 5GIPCOG5GIQYP)TQYFCVG WUKPI KPFGZ VCDNGURCEG 611.5A+: UVQTCIG KPKVKCN PGZV OKPGZVGPVU OCZGZVGPVU REVKPETGCUG Stopień wzrostu tej tabeli zale y od ilości analizowanych tabel i indeksów. Część in- formacji dotyczy przestrzeni tabel, w których znajdują się obiekty, pozostałe to dane na temat samych obiektów. Do wstępnego wypełnienia tej tabeli mo na wykorzystać pokazany ni ej skrypt. Po uru- chomieniu prosi on o nazwę u ytkownika tabeli i indeksu. Mo na go uruchamiać wielo- krotnie, dla ka dego u ytkownika bazy danych, którego obiekty zamierzamy kontrolować. +PUGTV KPVQ ':6)419 5GIPCOG5GIQYP)TQYFCVG5GIV[RG5GIVDU'ZVU 0GZVGZV6DUHTGG*YO6QVD[VGU7UGFD[VGU %QPVKIHTGG(TGGREV 6DUGZVU

×