Szczegóły ebooka

Oracle Database 12c. Problemy i rozwiązania

Oracle Database 12c. Problemy i rozwiązania

Bill Padfield, Sam Alapati, Darl Kuhn

Ebook

Twoja ostatnia deska ratunku przy problemach z bazą Oracle12c

Oracle to jedna z najpopularniejszych baz danych na świecie i znajduje zastosowanie w wielu firmach. W jej tabelach przechowywane są gigantyczne ilości danych. Zasoby te są każdego dnia przetwarzane na wiele sposobów, a szybkość dostępu do rezultatów w sposób kluczowy wpływa na efektywność pracy całej masy ludzi. Jeżeli dostęp do danych jest utrudniony, to administrator bazy musi błyskawicznie zlokalizować i rozwiązać problem.

Dzięki tej książce będziesz przygotowany na najbardziej stresujące sytuacje spotykane w codziennej pracy administratora. W trakcie lektury opanujesz techniki optymalizacji wykorzystania pamięci i dysków, czasu trwania zapytań SQL oraz wydajności. Znajdziesz tu również liczne opisy problemów z życia wziętych oraz najlepsze sposoby ich rozwiązywania. Ponadto nauczysz się monitorować pracę systemu i zidentyfikujesz problemy, zanim dotkną one jego użytkowników. Przekonasz się, jak kluczową rolę pełnią właściwie dobrane indeksy. Książka ta jest obowiązkową pozycją dla każdego administratora bazy danych!

Dzięki tej książce:

  • zapoznasz się z możliwymi przyczynami problemów z bazą
  • zoptymalizujesz zużycie pamięci RAM i dysków twardych
  • stworzysz indeksy, które poprawią wydajność Twojej bazy
  • będziesz automatycznie regulować i stabilizować zapytania za pomocą narzędzi SQL Tuning Advisor i SQL Plan Baselines
  • skutecznie przeanalizujesz wolne zapytania SQL
  • będziesz przygotowany na problemy z bazą

Błyskawicznie rozwiąż problemy z bazą danych!

O autorach (13)

O korektorach merytorycznych (15)

Podziękowania (17)

Wprowadzenie (19)

Rozdział 1. Optymalizacja wydajności tabel (21)

  • 1.1. Tworzenie maksymalnie wydajnej bazy danych (22)
  • 1.2. Tworzenie przestrzeni tabel i maksymalizacja wydajności (26)
  • 1.3. Dobór typów tabel do wymagań biznesowych (28)
  • 1.4. Dobór cech tabel zwiększających wydajność (29)
  • 1.5. Właściwy dobór typów danych (31)
  • 1.6. Zapobieganie opóźnieniom przydzielania rozszerzeń podczas tworzenia tabel (35)
  • 1.7. Maksymalizacja prędkości ładowania danych (37)
  • 1.8. Wydajne usuwanie danych z tabel (39)
  • 1.9. Wyświetlanie automatycznych zaleceń narzędzia Segment Advisor (42)
  • 1.10. Ręczne generowanie zaleceń narzędzia Segment Advisor (44)
  • 1.11. Automatyczne wysyłanie pocztą e-mail zaleceń narzędzia Segment Advisor (48)
  • 1.12. Przebudowa wierszy obejmujących kilka bloków (49)
  • 1.13. Wykrywanie łańcuchowania i migracji wierszy (53)
  • 1.14. Odróżnienie migracji od łańcuchowania wierszy (54)
  • 1.15. Proaktywne zapobieganie migracji/łańcuchowaniu wierszy (55)
  • 1.16. Wykrywanie niewykorzystanego miejsca w tabeli (56)
  • 1.17. Śledzenie i wykrywanie miejsca poniżej wskaźnika zajętości (57)
  • 1.18. Zastosowanie pakietu DBMS_SPACE do wykrywania wolnego miejsca poniżej wskaźnika zajętości (59)
  • 1.19. Zwalnianie niewykorzystanego miejsca w tabelach (60)
  • 1.20. Kompresja danych podczas ładowania za pomocą bezpośredniej ścieżki (61)
  • 1.21. Kompresja danych dla wszystkich instrukcji DML (64)
  • 1.22. Kompresja danych na poziomie kolumny (65)

Rozdział 2. Dobór i optymalizacja indeksów (67)

  • 2.1. Czym są B-drzewa? (69)
  • 2.2. Wybór kolumn do indeksowania (75)
  • 2.3. Tworzenie ograniczenia klucza podstawowego i indeksu (78)
  • 2.4. Zapewnienie unikatowości wartości w kolumnie (80)
  • 2.5. Indeksowanie kolumn z kluczami obcymi (82)
  • 2.6. Kiedy stosować indeks łączony (85)
  • 2.7. Zmniejszenie wielkości indeksu za pomocą kompresji (87)
  • 2.8. Implementacja indeksu funkcyjnego (89)
  • 2.9. Indeksowanie kolumny wirtualnej (91)
  • 2.10. Ograniczenie rywalizacji o miejsce w indeksie podczas kilku równoległych procesów umieszczania danych (92)
  • 2.11. Przełączanie widoczności indeksu dla optymalizatora (93)
  • 2.12. Tworzenie indeksu bitmapowego dla schematu gwiaździstego (95)
  • 2.13. Tworzenie łączonego indeksu bitmapowego (97)
  • 2.14. Tworzenie tabeli indeksowej (98)
  • 2.15. Monitorowanie wykorzystania indeksów (100)
  • 2.16. Maksymalizacja szybkości tworzenia indeksu (101)
  • 2.17. Odzyskiwanie niewykorzystanego miejsca indeksu (103)

Rozdział 3. Optymalizacja pamięci instancji bazy danych (107)

  • 3.1. Automatyczne zarządzanie pamięcią (107)
  • 3.2. Zarządzanie wieloma buforami (110)
  • 3.3. Określenie minimalnych wielkości pamięci (112)
  • 3.4. Kontrola operacji zmiany wielkości pamięci (113)
  • 3.5. Optymalizacja wykorzystania pamięci (114)
  • 3.6. Regulacja przydziału pamięci obszarowi PGA (115)
  • 3.7. Konfiguracja pamięci podręcznej serwera (118)
  • 3.8. Zarządzanie pamięcią podręczną serwera (120)
  • 3.9. Zapamiętywanie wyników zapytań SQL (122)
  • 3.10. Zapisywanie wyników w pamięci podręcznej klienta (125)
  • 3.11. Zapamiętywanie wyników funkcji PL/SQL (127)
  • 3.12. Konfiguracja pamięci podręcznej Smart Flash (130)
  • 3.13. Regulacja bufora dziennika powtórzeń (131)
  • 3.14. Ograniczenie przydziału pamięci obszaru PGA (133)

Rozdział 4. Monitoring wydajności systemu (135)

  • 4.1. Implementacja repozytorium AWR (136)
  • 4.2. Zmiana interwału zbierania i okresu przechowywania statystyk (137)
  • 4.3. Ręczne tworzenie raportów AWR (139)
  • 4.4. Tworzenie raportów AWR za pomocą aplikacji Enterprise Manager (142)
  • 4.5. Tworzenie raportu AWR dla wybranego zapytania SQL (143)
  • 4.6. Tworzenie statystyk odniesienia bazy danych (145)
  • 4.7. Zarządzanie statystykami odniesienia za pomocą aplikacji Enterprise Manager (148)
  • 4.8. Zarządzanie repozytorium statystyk AWR (149)
  • 4.9. Automatyczne tworzenie statystyk odniesienia (151)
  • 4.10. Szybka analiza raportów AWR (153)
  • 4.11. Ręczne pozyskiwanie informacji o aktywnych sesjach (154)
  • 4.12. Pozyskiwanie informacji ASH z aplikacji Enterprise Manager (159)
  • 4.13. Pozyskiwanie informacji ASH ze słownika danych (160)

Rozdział 5. Minimalizacja rywalizacji o zasoby (165)

  • 5.1. Czas odpowiedzi bazy (165)
  • 5.2. Identyfikacja najdłużej oczekujących zapytań SQL (168)
  • 5.3. Analiza zdarzeń oczekiwania (169)
  • 5.4. Klasy zdarzeń oczekiwania (170)
  • 5.5. Badanie zdarzeń oczekiwania sesji (171)
  • 5.6. Badanie zdarzeń oczekiwania według klas (173)
  • 5.7. Rozwiązywanie problemu oczekiwania na zajęty bufor (175)
  • 5.8. Rozwiązywanie problemu oczekiwania na synchronizację pliku dziennika (177)
  • 5.9. Minimalizacja czasu oczekiwania na odczyt danych w innej sesji (178)
  • 5.10. Zmniejszenie liczby zdarzeń oczekiwania na bezpośredni odczyt pliku (179)
  • 5.11. Minimalizacja czasu oczekiwania na proces Recovery Writer (181)
  • 5.12. Wyszukiwanie przyczyny blokady (182)
  • 5.13. Identyfikacja sesji blokowanych i blokujących (183)
  • 5.14. Obsługa blokad (185)
  • 5.15. Identyfikacja zablokowanego obiektu (186)
  • 5.16. Obsługa zdarzeń enq: TM - contention (187)
  • 5.17. Identyfikacja ostatnio zablokowanych sesji (189)
  • 5.18. Analiza ostatnich zdarzeń oczekiwania w bazie danych (192)
  • 5.19. Określenie czasu oczekiwania spowodowanego blokadą (193)
  • 5.20. Minimalizacja czasu oczekiwania na zatrzaski (195)

Rozdział 6. Analiza wydajności systemu operacyjnego (199)

  • 6.1. Wykrywanie problemów z miejscem na dysku (201)
  • 6.2. Identyfikacja słabych punktów systemu (203)
  • 6.3. Określenie procesów wykorzystujących najwięcej zasobów systemu (205)
  • 6.4. Wykrywanie problemów z procesorem (207)
  • 6.5. Identyfikacja procesów zajmujących procesor i pamięć (209)
  • 6.6. Identyfikacja problemów z dyskami (210)
  • 6.7. Wykrywanie procesów obciążających sieć (213)
  • 6.8. Kojarzenie procesu zajmującego zasoby z bazą danych (214)
  • 6.9. Przerywanie procesu zajmującego dużo zasobów systemu (217)

Rozdział 7. Rozwiązywanie problemów z bazą danych (219)

  • 7.1. Określenie optymalnego okresu przechowywania danych o wycofaniach transakcji (219)
  • 7.2. Wyszukiwanie obiektów zajmujących najwięcej miejsca w przestrzeni wycofań (224)
  • 7.3. Eliminacja błędu ORA-01555 (225)
  • 7.4. Kontrola wykorzystania tymczasowej przestrzeni (227)
  • 7.5. Identyfikacja obiektów zajmujących przestrzeń tymczasową (228)
  • 7.6. Eliminacja błędu "Unable to Extend Temp Segment" (229)
  • 7.7. Eliminacja błędów otwartego kursora (231)
  • 7.8. Odblokowanie zawieszonej bazy danych (233)
  • 7.9. Korzystanie z interpretera ADRCI (237)
  • 7.10. Przeglądanie logu alarmów za pomocą poleceń ADRCI (240)
  • 7.11. Przeglądanie incydentów za pomocą interpretera ADRCI (242)
  • 7.12. Pakowanie incydentów dla zespołu pomocy technicznej Oracle (243)
  • 7.13. Wykonanie testu stanu bazy danych (245)
  • 7.14. Tworzenie testu SQL (247)
  • 7.15. Tworzenie raportu AWR (249)
  • 7.16. Porównywanie wydajności bazy z dwóch okresów (252)
  • 7.17. Analiza raportu AWR (253)

Rozdział 8. Tworzenie wydajnych zapytań SQL (259)

  • 8.1. Odczytywanie wszystkich wierszy tabeli (260)
  • 8.2. Odczytywanie zestawu wierszy tabeli (261)
  • 8.3. Łączenie tabel odpowiednimi wierszami (263)
  • 8.4. Łączenie tabel z brakującymi wierszami (266)
  • 8.5. Tworzenie prostych podzapytań (269)
  • 8.6. Tworzenie podzapytań skorelowanych (272)
  • 8.7. Porównywanie dwóch tabel z brakującymi wierszami (274)
  • 8.8. Porównywanie dwóch tabel i wyszukiwanie wspólnych wierszy (276)
  • 8.9. Łączenie wyników podobnych zapytań SELECT (277)
  • 8.10. Przeszukiwanie zakresu wartości (279)
  • 8.11. Przetwarzanie wartości NULL (282)
  • 8.12. Wyszukiwanie fragmentów wartości w kolumnach (285)
  • 8.13. Wielokrotne użycie zapytań zapisanych we współdzielonym buforze (288)
  • 8.14. Zapobieganie przypadkowemu pełnemu skanowaniu tabeli (292)
  • 8.15. Tworzenie wydajnych widoków tymczasowych (294)
  • 8.16. Unikanie operatora NOT (296)
  • 8.17. Sterowanie wielkością transakcji (298)

Rozdział 9. Ręczna regulacja zapytań SQL (301)

  • 9.1. Wyświetlenie planu wykonania zapytania (302)
  • 9.2. Dostosowanie zawartości planu wykonania (304)
  • 9.3. Graficzne przedstawienie planu wykonania (307)
  • 9.4. Jak czytać plan wykonania (308)
  • 9.5. Obserwacja długotrwałych zapytań SQL (310)
  • 9.6. Wyszukiwanie bieżących zapytań SQL zajmujących najwięcej zasobów (311)
  • 9.7. Wyświetlanie statystyk dotyczących bieżących zapytań SQL (313)
  • 9.8. Obserwacja postępu realizacji planu wykonania zapytania SQL (315)
  • 9.9. Wyszukiwanie wykonanych w przeszłości zapytań SQL zajmujących najwięcej zasobów (318)
  • 9.10. Porównywanie wydajności zapytań SQL po wprowadzeniu zmian w systemie (320)

Rozdział 10. Śledzenie realizacji zapytań SQL (327)

  • 10.1. Przygotowanie środowiska (327)
  • 10.2. Śledzenie wybranego zapytania SQL (329)
  • 10.3. Włączenie śledzenia zapytań we własnej sesji (331)
  • 10.4. Wyszukiwanie plików śledzenia (331)
  • 10.5. Badanie surowego pliku śledzenia zapytania SQL (332)
  • 10.6. Analiza plików śledzenia (333)
  • 10.7. Formatowanie plików śledzenia za pomocą narzędzia TKPROF (334)
  • 10.8. Analiza pliku wynikowego narzędzia TKPROF (335)
  • 10.9. Analiza plików śledzenia za pomocą narzędzia Oracle Trace Analyzer (338)
  • 10.10. Śledzenie zapytań równoległych (341)
  • 10.11. Śledzenie wybranego wątku zapytania równoległego (342)
  • 10.12. Śledzenie zapytań równoległych w środowisku RAC (343)
  • 10.13. Scalanie kilku plików śledzenia (344)
  • 10.14. Określenie sesji do śledzenia (345)
  • 10.15. Śledzenie całych sesji (345)
  • 10.16. Śledzenie sesji na podstawie identyfikatora procesu (347)
  • 10.17. Śledzenie kilku sesji (348)
  • 10.18. Śledzenie instancji bazy danych (349)
  • 10.19. Wywoływanie zdarzenia 10046 śledzącego sesję (350)
  • 10.20. Wywoływanie zdarzenia 10046 w instancji bazy (351)
  • 10.21. Włączenie śledzenia trwającej sesji (352)
  • 10.22. Włączenie śledzenia sesji po zalogowaniu (353)
  • 10.23. Śledzenie ścieżki optymalizatora (354)
  • 10.24. Tworzenie automatycznych plików śledzenia błędów (356)
  • 10.25. Śledzenie procesów działających w tle (357)
  • 10.26. Śledzenie procesu nasłuchu (358)
  • 10.27. Śledzenie aktywności archiwum w środowisku Data Guard (359)

Rozdział 11. Automatyczna regulacja zapytań SQL (361)

  • 11.1. Wyświetlenie szczegółów zadania automatycznej regulacji zapytania SQL (363)
  • 11.2. Wyświetlenie zaleceń narzędzia Automatic SQL Tuning Advisor (365)
  • 11.3. Tworzenie skryptu SQL implementującego automatyczne zalecenie (368)
  • 11.4. Modyfikacja funkcjonalności automatycznej regulacji zapytań SQL (369)
  • 11.5. Włączanie i wyłączanie automatycznej regulacji zapytań SQL (371)
  • 11.6. Zmiana atrybutów okna serwisowego (373)
  • 11.7. Tworzenie zestawu regulacyjnego SQL (374)
  • 11.8. Przeglądanie najbardziej obciążających bazę zapytań SQL w repozytorium AWR (375)
  • 11.9. Wypełnianie zestawów regulacyjnych SQL danymi z repozytorium AWR (378)
  • 11.10. Przeglądanie najbardziej obciążających system zapytań SQL zapisanych w pamięci (379)
  • 11.11. Wypełnianie zestawu regulacyjnego informacjami o zapytaniach zapisanych w pamięci (381)
  • 11.12. Wypełnianie zestawu regulacyjnego SQL informacjami o wszystkich zapytaniach zapisanych w pamięci (382)
  • 11.13. Wyświetlenie zawartości zestawu regulacyjnego SQL (384)
  • 11.14. Wybiórcze usuwanie zapytań z zestawu regulacyjnego (385)
  • 11.15. Przenoszenie zestawu regulacyjnego SQL (386)
  • 11.16. Tworzenie zadania regulacyjnego (388)
  • 11.17. Uruchomienie narzędzia SQL Tuning Advisor (391)
  • 11.18. Przygotowywanie zaleceń regulacji zapytań SQL za pomocą narzędzia ADDM (394)

Rozdział 12. Optymalizacja i ujednolicenie planu wykonania zapytania (397)

  • Podstawowe informacje (397)
  • Całościowy obraz (399)
  • 12.1. Tworzenie i zatwierdzanie profili SQL (402)
  • 12.2. Sprawdzenie, czy profil SQL zapytania jest wykorzystywany (405)
  • 12.3. Automatyczne zatwierdzanie profili SQL (406)
  • 12.4. Wyświetlanie informacji o profilu SQL (408)
  • 12.5. Wybiórcze testowanie profili SQL (410)
  • 12.6. Przenoszenie profilu SQL do innej bazy danych (411)
  • 12.7. Blokowanie profilu SQL (413)
  • 12.8. Usuwanie profilu SQL (414)
  • 12.9. Tworzenie wzorca planu dla zapytania zapisanego w pamięci (415)
  • 12.10. Tworzenie wzorca planu dla zapytań zapisanych w zestawie regulacyjnym (417)
  • 12.11. Automatyczne tworzenie wzorców planów (419)
  • 12.12. Zmiana wzorca planu (420)
  • 12.13. Sprawdzenie dostępności wzorca planu (422)
  • 12.14. Sprawdzenie, czy wzorzec planu jest wykorzystywany (423)
  • 12.15. Wyświetlenie planów wykonania we wzorcu planu (424)
  • 12.16. Ręczne dodawanie planu wykonania do wzorca planu (425)
  • 12.17. Przełączanie automatycznego zatwierdzania nowych planów wykonania (428)
  • 12.18. Blokowanie wzorca planu (429)
  • 12.19. Usuwanie wzorca planu (430)
  • 12.20. Przenoszenie wzorców planów (431)

Rozdział 13. Konfiguracja optymalizatora zapytań (433)

  • 13.1. Określenie celu optymalizatora (434)
  • 13.2. Włączenie automatycznego zbierania statystyk (435)
  • 13.3. Ustawianie preferencji zadania zbierania statystyk (437)
  • 13.4. Ręczne zbieranie statystyk (441)
  • 13.5. Blokowanie statystyk (443)
  • 13.6. Kompensacja brakujących statystyk (444)
  • 13.7. Eksport statystyk (446)
  • 13.8. Odtwarzanie wcześniejszych wersji statystyk (447)
  • 13.9. Zbieranie statystyk systemowych (448)
  • 13.10. Weryfikacja nowych statystyk (450)
  • 13.11. Narzucenie optymalizatorowi użycia indeksu (452)
  • 13.12. Włączanie funkcjonalności optymalizatora zapytań (453)
  • 13.13. Zapobieganie tworzeniu histogramów przez bazę danych (455)
  • 13.14. Zwiększenie wydajności zapytań bez zmiennych powiązanych (456)
  • 13.15. Adaptacyjne współdzielenie kursora (458)
  • 13.16. Tworzenie statystyk dla wyrażeń (463)
  • 13.17. Zbieranie statystyk dla skorelowanych kolumn (464)
  • 13.18. Automatyczne tworzenie grup kolumn (465)
  • 13.19. Zbieranie statystyk dla partycjonowanych tabel (467)
  • 13.20. Równoległe zbieranie statystyk dla dużych tabel (468)
  • 13.21. Ustalanie aktualności statystyk (470)
  • 13.22. Przeglądanie obiektów do objęcia statystykami (471)

Rozdział 14. Implementacja wskazówek w zapytaniach (473)

  • 14.1. Tworzenie wskazówki (474)
  • 14.2. Zmiana ścieżki dostępu do danych (475)
  • 14.3. Zmiana kolejności łączenia tabel (478)
  • 14.4. Zmiana metody łączenia tabel (480)
  • 14.5. Zmiana wersji optymalizatora (482)
  • 14.6. Wybór między szybką odpowiedzią a ogólną optymalizacją zapytania (483)
  • 14.7. Umieszczanie danych za pomocą bezpośredniej ścieżki do pliku (486)
  • 14.8. Umieszczanie wskazówek w widokach (489)
  • 14.9. Zapisywanie wyników zapytania w pamięci podręcznej (491)
  • 14.10. Kierowanie rozproszonego zapytania do określonej bazy danych (495)
  • 14.11. Zbieranie rozszerzonych statystyk realizacji zapytania (498)
  • 14.12. Aktywacja przekształcenia zapytania (500)
  • 14.13. Zwiększenie wydajności zapytań wykorzystujących gwiaździsty schemat danych (502)

Rozdział 15. Równoległe wykonywanie zapytań (505)

  • 15.1. Zastosowanie równoległości w wybranym zapytaniu (506)
  • 15.2. Konfiguracja równoległości podczas tworzenia obiektów (509)
  • 15.3. Konfiguracja równoległości dla istniejących obiektów (510)
  • 15.4. Implementacja równoległych operacji DML (511)
  • 15.5. Równoległe tworzenie tabel (514)
  • 15.6. Równoległe tworzenie indeksów (516)
  • 15.7. Równoległe przebudowywanie indeksu (517)
  • 15.8. Równoległe przenoszenie partycji (519)
  • 15.9. Równoległe dzielenie partycji (521)
  • 15.10. Konfiguracja automatycznego stopnia równoległości (522)
  • 15.11. Badanie planu wykonania zapytania (525)
  • 15.12. Kontrola równoległych operacji (528)
  • 15.13. Wyszukiwanie słabych punktów procesów równoległych (530)
  • 15.14. Uzyskiwanie szczegółowych informacji o równoległych sesjach (531)

Skorowidz (535)

  • Tytuł: Oracle Database 12c. Problemy i rozwiązania
  • Autor: Sam Alapati, Darl Kuhn, Bill Padfield
  • Tytuł oryginału: Oracle Database 12c Performance Tuning Recipes: A Problem-Solution Approach
  • Tłumaczenie: Andrzej Watrak
  • ISBN: 978-83-246-9804-2, 9788324698042
  • Data wydania: 2014-11-21
  • Format: Ebook
  • Identyfikator pozycji: or12pr
  • Wydawca: Helion