Wpływ ustawień parametru wieloblokowego sekwencyjnego czytania danych na czas wykonywania zapytania SQL w bazie danych Oracle 11g



Podobne dokumenty
Audyt serwera bazy danych Oracle Database 12c

Wydajność hurtowni danych opartej o Oracle10g Database

Politechnika Poznańska TWO

Optymalizacja poleceń SQL Statystyki

060 SQL FIZYCZNA STRUKTURA BAZY DANYCH. Prof. dr hab. Marek Wisła

Monitorowanie wydajność w bazie Oracle11g

DB2 with BLU acceleration rozwiązanie in-memory szybsze niż pamięć operacyjna&

Szkolenie obejmuje zagadnienia związane z tworzeniem i zarządzaniem bazą danych Oracle, jej zasobami i dostępem do danych.

Strojenie systemu Linux pod k¹tem serwera bazy danych Oracle 9i

Administracja i programowanie pod Microsoft SQL Server 2000

Konfiguracja komputera przeznaczonego do pracy z IndustrialSQL Server 8.0 (komputer serwer)

Pomiar czasu przetwarzania rozproszonych zapytań w ewoluujących silnikach serwerów baz danych SQL Microsoft Server

Optymalizacja poleceń SQL

AKADEMIA GÓRNICZO-HUTNICZA im. Stanisława Staszica w Krakowie. Wydział Geologii, Geofizyki i Ochrony Środowiska. Bazy danych 2

SSI Katalog. Program do katalogowania zawartości dysków. Dariusz Kalinowski

Optymalizacja poleceń SQL Wprowadzenie

Instalacja SQL Server Konfiguracja SQL Server Logowanie - opcje SQL Server Management Studio. Microsoft Access Oracle Sybase DB2 MySQL

2. Jakie i ile licencji Oracle 10g posiada zamawiający i czy posiada do tych licencji wsparcie techniczne?

Administracja bazy danych Oracle 10g

Instrukcja instalacji i obsługi programu Szpieg 3

Statystyki (1) Optymalizacja poleceń SQL Część 2. Statystyki (2) Statystyki (3) Informacje, opisujące dane i struktury obiektów bazy danych.

DBPLUS BETTER PERFORMANCE. Dokumentacja operacyjna do oprogramowania DBPLUS PERFOMANCE MONITOR firmy DBPLUS

"Kilka słów" o strojeniu poleceń SQL w kontekście Hurtowni Danych wprowadzenie. Krzysztof Jankiewicz

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

Kosztowy optymalizator zapytań

Fizyczna organizacja danych w bazie danych

(c) Politechnika Poznańska, Instytut Informatyki

Oprogramowanie IP - pytania i odpowiedzi. JPEG (Mb/s) kl./s BASIC SUPER FINE BASIC SUPER FINE 5 0,46 1,45 1,02 2,5 12,5 1,17 3,6 2,53 6,32

Block Change Tracking

Zadania do wykonania na laboratorium

dr inż. Jarosław Forenc

Szpieg 2.0 Instrukcja użytkownika

1. Podstawy...P Polecenia podstawowe...p... 18

CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu

SZCZEGÓŁOWY OPIS PRZEDMIOTU ZAMÓWIENIA

Dokument zawiera instrukcję samodzielnej Instalacji Microsoft SQL Server 2008 R2 RTM - Express na potrzeby systemu Sz@rk.

dziennik Instrukcja obsługi

Zarządzanie strukturą bazy danych Oracle11g

Rozproszone bazy danych 3

Pomiar czasu przetwarzania rozproszonych zapytań w ewoluujących silnikach serwerów baz danych SQL Microsoft Server.

SQL SERVER 2012 i nie tylko:

Optymalizacja zapytań. Proces przetwarzania i obliczania wyniku zapytania (wyrażenia algebry relacji) w SZBD

Dokumentacja fillup - MS SQL

Jarosław Kuchta. Administrowanie Systemami Komputerowymi. System plików

TABELA PORÓWNAWCZA OFEROWANEGO SPRZĘTU

Tytuł kursu: Oracle 11g XE Administracja (kompleksowe)

Migracja XL Business Intelligence do wersji

Szczegółowa specyfikacja funkcjonalności zamawianego oprogramowania.

Rozdział 17. Zarządzanie współbieżnością zadania

Wymagania sprzętowe i systemowe

4Trans Tutorial - Aktualizacja do Windows 10. Wersja: 4.5

Zasady współpracy programu Doradca Handlowy z Symfonią

(a) T (b) N (c) N (d) T

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

DBPLUS Data Replicator Subtitle dla Microsoft SQL Server. dbplus.tech

DBPLUS Performance Monitor opis zmian w wersji

Wewnętrzny Pomiar Ryzyka* (WPR)

Instrukcja instalacji i konfiguracji bazy danych SQL SERVER 2008 EXPRESS R2. Instrukcja tworzenia bazy danych dla programu AUTOSAT 3. wersja 0.0.

Wymagania sprzętowe i systemowe

Optymalizacja poleceń SQL

Administrowanie systemami informatycznymi Kod przedmiotu

Instalacja Ubuntu 12.12

AUREA BPM Oracle. TECNA Sp. z o.o. Strona 1 z 7

Plan. Raport. Tworzenie raportu z kreatora (1/3)

Zarządzanie kontami użytkowników w i uprawnieniami

T: Instalacja systemu Windows 2008 Serwer w maszynie wirtualnej VirtualBox.

Systemy baz danych. mgr inż. Sylwia Glińska

Administracja bazami danych

Cele RAID. RAID z ang. Redundant Array of Independent Disks, Nadmiarowa macierz niezależnych dysków.

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Biuletyn techniczny. CDN OPT!MA 8.5 Wskazówki dotyczące instalacji programu. Copyright 2006 COMARCH SA

Wstęp. Opis ten dotyczy wydziałów orzeczniczych.

Uprawnienia, role, synonimy

Parametry techniczne. Testy

ETAP II. 2. Analiza liczby instancji dla stowarzyszenia START

Program RMUA. Instrukcja konfiguracji i pracy w programie. (Wersja 2)

Cel przedmiotu. Wymagania wstępne w zakresie wiedzy, umiejętności i innych kompetencji 1 Język angielski 2 Inżynieria oprogramowania

1. Instalacja jednostanowiskowa Instalacja sieciowa Instalacja w środowisku rozproszonym Dodatkowe zalecenia...

Krzysztof Kadowski. PL-E3579, PL-EA0312,

która metoda jest najlepsza

startup pfile= '$HOME/admin/pfile/initDBx.ora'; create spfile from pfile= '$HOME/admin/pfile/initDBx.ora';

Architektura komputerów

NOWY OPIS TECHNICZNY PRZEDMIOTU ZAMÓWIENIA

Wymagania sprzętowe i systemowe obowiązujące od

PODSTAWY BAZ DANYCH Wykład 6 4. Metody Implementacji Baz Danych

Opis przedmiotu zamówienia

OMNITRACKER Wersja testowa. Szybki przewodnik instalacji

PROJEKTOWANIE SYSTEMÓW KOMPUTEROWYCH

ZAPYTANIE OFERTOWE. Zamawiający. Przedmiot zapytania ofertowego. Warszawa, dnia r.

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

INSTRUKCJA INSTALACJI SYSTEMU NA SERWERZE KROK PO KROKU

Instalacja aplikacji

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Program kadrowo płacowy - wersja wielodostępna z bazą danych Oracle SQL Server 10g

16MB - 2GB 2MB - 128MB

INSTRUKCJA INSTALACJI I PIERWSZEGO URUCHOMIENIA APLIKACJI Rodzajowa Ewidencja Wydatków plus Zamówienia i Umowy

Wykład XII. optymalizacja w relacyjnych bazach danych

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Optymalizacja zapytań SQL

Konfiguracja modułu alarmowania w oprogramowaniu InTouch 7.11

Transkrypt:

Radosław Boroński Politechnika Koszalińska, Wydział Elektroniki i Informatyki E-mail: radoslaw.boronski@tu.koszalin.pl Wpływ ustawień parametru wieloblokowego sekwencyjnego czytania danych na czas wykonywania zapytania SQL w bazie danych Oracle 11g Streszczenie: Przedmiotem badań jest wpływ wielkości parametru inicjującego odpowiedzialnego za maksymalną ilość bloków danych czytanych jednocześnie w pojedynczej operacji wieloblokowego czytania sekwencyjnego (db_file_multiblock_read_count) i statystyk systemowych oraz statystyk obiektowych na czas wykonania zapytania SQL do bazy danych Oracle 11g. Badaniu poddano również różnice wykonania zapytania pomiędzy domyślnym ustawieniem parametru db_file_multiblock_read_count a jego ręczną modyfikacją i pośredni wpływ statystyk. 1. Środowisko produkcyjne Stanowisko dla przeprowadzenia badań składało się z jednego serwera o konfiguracji: system operacyjny Red Hat Enterprise Linux Server release 5.5, z jądrem 2.6.18-194.26.1.el5, pamięć operacyjna 48 GB, cztery 4-rdzeniowe procesory Intel(R) Xeon(R) CPU E5620 @ 2.40 GHz, jedna partycja dyskowa o pojemności 535 GB. Na serwerze zainstalowano produkcyjną bazę danych Oracle w wersji 11.1.0.7, instancję ASM z dostępem do łącznej pojemności dysków 5,6 TB (macierz RAID). 2. Wieloblokowe czytanie danych Parametr db_file_multiblock_read_count odpowiedzialny jest za ustawienie możliwej, największej liczby bloków czytanych w operacji I/O (czytanie z dysku) w pojedynczej operacji czytania sekwencyjnego. Parametr ten jest pomocny przy minimalizacji bądź maksymalizacji operacji czytania danych z tabeli przy pełnym przeszukiwaniu tabeli. Całkowita liczba operacji I/O potrzebna do pełnego czytania tabeli uzależniona jest od takich operacji jak całkowity rozmiar przetwarzanej tabeli, wielkości rozmiaru czytania wieloblokowego czy operacji równoległego czytania tabeli. Zaczynając od wersji bazy danych Oracle 10g, domyślne ustawienie parametru db_file_multiblock_read_count odpowiada największej ilości operacji I/O dozwolonych przez system operacyjny. Wy- 7

sokość jej jest uzależniona jest od platformy i w większości przypadków równa się 1 MB danych czytanych równocześnie. Parametr ten wyrażany jest w blokach danych a jego wartość równa się ilorazowi największej ilości operacji I/O dozwolonych przez system operacyjny i rozmiarowi bloku danych [1]. W przypadku nieznanej wartości x(i/o), silnik bazy danych Oracle ustala ten parametr wg reguły [2]: 1048576 _ _ _ _ _ _, _ _ _ _ Wieloblokowe czytanie danych uzależnione jest również od ilości ekstentów w danym segmencie. W przypadku, gdy segment zbudowany jest z ekstentów zawierających mniejszą ilość bloków danych niż parametr db_file_multiblock_read_count, nastąpi czytanie bloków danych do maksymalnej wartości ilości bloków danych w danym ekstencie. Dodatkowo, nagłówek segmentu danych zawsze czytany jest pojedynczo, blok po bloku i nigdy nie bierze udziału w czytaniu wieloblokowym. Kolejnym wyjątkiem jest sytuacja w której iloraz całkowitej ilości bloków danych w ekstencie i wielkość parametru db_file_multiblock_read_count nie jest liczbą całkowitą. W takim przypadku następuje czytanie wszystkich pozostałych, nieprzeczytanych bloków danych z ekstentu, a kolejny do przeczytania ekstent jest traktowany jako osobny obiekt, czyli maksymalna ilość czytanych bloków danych nie może być rozdzielona na następujące po sobie ekstenty [3]. 3. Przedmiot badań Badanie zostało przeprowadzone na niepartycjonowanej tabeli o wielkości 9576 MB, zawierającej 102,5 miliona rekordów. Tabela przechowywana jest w przestrzeni tabel, w jednym pliku, zarządzanym przez system plików ASM (Automatic Storage Management), o łącznej pojemności dysków macierzy 5,6 TB i zastosowanej jednostce alokacji 1 MB (au_size). Oprócz tabeli testowej, w przestrzeni tabel znajdują się też inne tabele biorące udział w procesach prod produkcyjnych. Całkowite miejsce zajęte przez wszystkie obiekty w bazie danych wynosi 1,2 TB. Logiczna budowa tabeli testowej składa się z 332 ekstentów, zawierających 306434 bloków danych o wielkości 32768 bajtów. Pierwszy ekstent tabeli ma rozmiar 192 kb. Średnia ilość bloków w ekstencie wynosi 923. Rozkład ekstentów w testowanym segmencie zarządzany jest automatycznie (lokalnie) przez silnik bazy danych. Bloki występujące w pamięci podręcznej bufora danych bazy danych nie są brane pod uwagę jako kandydaci do czytania z ekstentu. W takim przypadku, następuje czytanie maksymalnej, dopuszczalnej ilości bloków danych do buforowanego bloku. 4. Badanie modelowe Badanie testowe polegało na 32-krotnym, pełnym (full table scan) czytaniu tabeli testowej z zastosowaniem różnych wartości parametru db_file_multiblock_read_count. Najmniejszą ustawioną wartością było 0 bloków (co wymusza zastosowanie wartości 8

domyślnej parametru), największą zaś 256 bloków przy jednorazowym czytaniu, co przy ustawionym rozmiarze bloku danych (32 kb) generowało operację odczytu o wielkości 8 MB. Krok zmiany parametru wynosił 8 w każdej operacji (0, 8, 16, 24, 32, 40,., 256). Parametr maksymalny został ustawiony na wartość 256 po to, aby nie przeciążyć systemu operacyjnego i procesów I/O potrzebnych do wykonania innych równoległych operacji w bazie danych. System operacyjny nie miał ustawionej dopuszczalnej wartości maksymalnej dla operacji I/O. Przed każdą operacją odczytu danych czyszczony był bufor pamięci podręcznej bazy danych. Zapytanie testowe do bazy danych zawierało nakaz wygenerowania ilości wszystkich wierszy zawartych w tabeli (SELECT count(*) FROM test). W zapytaniu, dodatkowo zastosowano serię wskazówek (hints). Pierwszą wskazówką (nocache) było wymuszenie pomijania odczytu danych z bufora danych. Miało to na celu upewnienie się, że wszystkie czytane przez bazę bloki danych są blokami pochodzącymi z dysku a nie bufora pamięci podręcznej. Kolejną wskazówką (full) zastosowaną w zapytaniu było wymuszenie pełnego czytania tabeli (blok po bloku). Ostatnią zaś wskazówką (noparallel) było wymuszenie niestosowania przetwarzania równoległego, które rozdzieliłoby operacje czytania bloków danych na procesy podrzędne. Operacja taka mogłaby zapobiec wykorzystania maksymalnej wartości parametru czytania wieloblokowego. Pełną iterację testową (32 kroki) podzielono na 2 nadrzędne serie różniące się sposobem rozproszonego ładowania czytanych bloków do buforu danych (db file scattered read) i z pominięciem takiego ładowania (direct path read). Celem takiego kroku było sprawdzenie czy przy sekwencyjnym czytaniu wieloblokowym, ładowanie danych do bufora danych ma wpływ na czas wykonania zapytania. Rozproszone ładowanie do bufora danych polega na sekwencyjnym czytaniu danych z dysku a następnie dyslokacyjnemu załadowaniu tych danych do bloków pamięci podręcznej bazy danych. Operacja taka ma na celu przechowywanie bloków danych w pamięci do ponownego użycia przez inne procesy w przyszłości, ze względu na szybszy dostęp do komórek pamięci niż do bloków dysku. Direct path read natomiast całkowicie pomija bufor danych i ładuje czytane bloki bezpośrednio do pamięci PGA (Program Global Area) części pamięci wydzielonej do obsługi sesji i przechowywania elementów potrzebnych do jej poprawnej obsługi [4]. Nadrzędne serie podzielono na serie podrzędne różniące się zastosowaniem aktualnych statystyk systemowych i obiektowych. Statystyki systemowe mogą mieć duże znaczenie przy opracowywaniu najlepszego planu wykonania zapytania przez optymalizator kosztowy. Zawierają one dane nt. szybkości procesorów, uśrednionych czasów potrzebnych wykonania pojedynczej operacji czytania jednego bloku lub operacji czytania wieloblokowego, lub uśrednioną ilość bloków czytanych w jednej operacji [5]. Statystyki systemowe nie są generowane automatycznie przy tworzeniu bazy danych. Należy je wygenerować ręcznie. Tabela 1 przedstawia parametry statystyk systemowych wygenerowane podczas jednego kroku wykonywania zapytania testowego. 9

Tab. 1. Wygenerowane parametry statystyk systemowych na środowisku testowym Parametr Wartość CPUSPEEDNW 2178.366 IOSEEKTIM 82220.839 IOTFRSPEED 1.05.754 SREADTIM 31.12.390 MREADTIM.578 CPUSPEED 2060 MBRC 4 MAXTHR 940670976 SLAVETHR 315887616 Statystyki obiektów są również niezbędne do oszacowania poprawnego planu wykonywania zapytania. Brane są pod uwagę ilość rekordów w tabelach, liczba użytych i pustych bloków, średnia zajętość bloków danych czy średnia długość rekordu [6]. Zastosowanie statystyk obiektowych i systemowych miało na celu sprawdzenia czy dla tej samej liczby bloków czytanych naraz (w danej iteracji), owe statystyki mają znaczący wpływ na czas wykonania zapytania. Czy poprzez zwiększoną ilość czytanych bloków i z jednocześnie lepszą wiedzą na temat testowanego obiektu, optymalizator kosztowy jest w stanie wygenerować lepszy plan wykonania zapytania [7]. 5. Przebieg badania Każdą serię testów powtórzono pięciokrotnie. Sprawdzony został czas systemowy przed wykonaniem każdej z iteracji, wykonano krok iteracji (przeczytano całą tabelę) z ustawionym w zależności od kroku parametrem db_file_multiblock_read_count, a następnie znowu sprawdzono czas systemowy. Różnica czasu systemowego jest wynikiem końcowym dla danego pomiaru. Wartości tego czasu z każdej iteracji zostały uśrednione. Badanie przeprowadzono najpierw na obiekcie z niedostępnymi statystykami systemowymi i obiektowymi, z zastosowaną metodą ładowania czytanych bloków do bufora danych (db file scattered read). Następnie wygenerowano statystyki systemowe i przeprowadzono kolejną serię testów. W kolejnej serii wygenerowano statystyki obiektowe dla tabeli testowej. Po każdej serii sprawdzono maksymalną ilości bloków czytanych w danej serii. Rysunek 1 przedstawia wyniki pomiaru ilości czytanych jednorazowo bloków dla serii bez statystyk systemowych i obiektowych. Rysunek 2 przedstawia uśrednione wartości pomiaru czasu wykonywania zapytania dla każdej z serii. 10

Ilość przeczytanych bloków 130 120 110 100 90 80 70 60 50 40 30 20 10 0 240 680 1120 1560 2000 2440 2880 3320 3760 4200 4640 5080 5520 5960 6400 6840 7280 7720 8160 8600 9040 9480 20 460 900 1340 1780 2220 2660 3100 3540 3980 4420 4860 5300 5740 6180 6620 7060 7500 7940 8380 8820 9260 SR 0 SR 256 SR 128 SR 64 Liczba operacji czytania bloków Rys. 1. Ilość jednorazowo czytanych bloków danych dla operacji czytania z ładowaniem do bufora danych czas [s] 31 30,5 30 29,5 29 28,5 28 27,5 27 26,5 26 25,5 25 24,5 24 23,5 0 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 128 136 144 152 160 168 176 184 192 200 208 216 224 232 240 248 256 mbrc [blocks] scatter reads / no system stats / no object stats scatter reads / no system stats / object stats uśredniona wartość domyślna [0] scatter reads / system stats / no object stats scatter reads / system stats / object stats Rys. 2. Uśrednione wartości pomiaru czasu wykonywania zapytania dla różnych wartości parametru db_file_multiblock_read_count z ładowaniem do bufora danych Te same kroki powtórzono dla metody z pominięciem ładowania bloków do bufora danych (direct path read). Rysunek 3 przedstawia wyniki pomiaru ilości czytanych jednorazowo bloków dla serii bez statystyk systemowych i obiektowych dla tej metody. Rysunek 4 przedstawia uśrednione wartości pomiaru czasu wykonywania zapytania dla każdej z serii tej metody. 11

Ilość przeczytanych bloków 260 240 220 200 180 160 140 120 100 80 60 40 20 0 240 680 1120 1560 2000 2440 2880 3320 3760 4200 4640 5080 5520 5960 6400 6840 7280 7720 8160 8600 9040 9480 20 460 900 1340 1780 2220 2660 3100 3540 3980 4420 4860 5300 5740 6180 6620 7060 7500 7940 8380 8820 9260 Liczba operacji czytania bloków DR 0 DR 256 DR 128 DR 64 Rys. 3. Ilość jednorazowo czytanych bloków danych dla operacji czytania bez ładowania do bufora danych 21 20 19 18 czas [s] 17 16 15 14 13 0 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 128 136 144 152 160 168 176 184 192 200 208 216 224 232 240 248 256 mbrc [blocks] direct reads / no system stats / no object stats direct reads / system stats / no object stats direct reads / no system stats / object stats direct reads / system stats / object stats uśredniona w artość domyślna [0] Rys. 4. Uśrednione wartości pomiaru czasu wykonywania zapytania dla różnych wartości parametru db_file_multiblock_read_count bez ładowania do bufora danych 6. Wnioski Z przeprowadzonych badań i uzyskanych wyników wnioskuje się, że: domyślnie ustawienie parametru db_file_multiblock_read_count nie jest ustawieniem optymalnym dla najszybszego czytania całej tabeli, dla wieloblokowego czytania danych z dysku z ładowaniem do bufora danych, zawsze otrzymuje się lepszy wynik dla ustawienia parametru db_file_multiblock_read_count powyżej 32 bloków, dla wieloblokowego czytania danych z dysku z pominięciem ładowania danych do bufora danych, otrzymuje się lepszy wynik dla ustawienia parametru db_file_multiblock_read_count powyżej 140 bloków, z pominięciem serii be statystyk obiektowych i z zastosowaniem statystyk systemowych, dla której wartość jest bliska domyślnej wartości uśrednionej, 12

wartości 8 i 16 parametru db_file_multiblock_read_count nie są optymalne dla operacji czytania tabeli i uzyskany czas czytania jest zawsze gorszy od domyślnego ustawienia parametru przez system bazy danych, wieloblokowe czytanie serii danych metodą z pominięciem ładowania do buforu jest w każdym przypadku szybsze niż czytanie wieloblokowe danych z ładowaniem danych do bufora danych, statystyki systemowe i obiektowe nie mają większego wpływu na szybkość wykonania zapytania i czasy wykonywania są porównywalne (dla tej samej wartości parametru wieloblokowego czytania danych) z czasami wykonywania zapytania na obiekcie z aktualnymi statystykami, najlepszy czas wykonywania uzyskano dla parametru db_file_multiblock_read_count wielkości 256 z zastosowaniem metody czytania z pominięciem bufora danych i zastosowaniem obydwu rodzajów statystyk. Czad wykonania zapytania wyniósł 13 sekund, dla metody db file scattered read, pomimo ustawionego parametru db_file_multiblock_read_count na wielkości powyżej 128, nie udało się uzyskać jednoczesnego wieloblokowego czytania danych o ilości powyżej 128 bloków. Powodem może być blokada silnika bazy danych na jednoczesne czytanie ilości danych powyżej 4MB (128 bloków x 32768 bajtów/blok) [8], silnik bazy danych w każdym przypadku stara się czytać jednocześnie maksymalną dozwoloną ilość bloków i wielkości te odchylają się nieznacznie (rysunki 1 i 3). Literatura 1. Oracle Database Reference 11g Release 1 (11.1), Part Number B28320-03. 2. Antognini C., Troubleshooting Oracle Performance, Apress, 2008. 3. Ibidem. 4. Oracle Database Performance Tuning Guide, 11g Release 1 (11.1), Part Number B28274-02. 5. Loney K., Oracle Database 11g. Kompendium Administratora, Helion, Warszawa, 2010. 6. Freeman Rober G., OCP: Oracle Database 11g Administrator Certified Professional, Sybex, 2009. 7. Oracle Database Performance Tuning Guide, op.cit. 8. Burleson D., Oracle Tuning: The Definitive Reference, Rampant Techpress, 2011. 13