Wstęp Firma Oracle, IBM, Sun Microsystems, czy też Novell - od lat wspierają projekty OpenSource i rozwój samego Linuksa. Można wręcz powiedzieć, że symbioza dużych korporacji i środowiska związanego z rozwojem Wolnego Oprogramowania daje obopólne korzyści. Aby wypróbować Oracle'a, możemy ze strony http://www.oracle.com/ pobrać pełne wersje oprogramowania, które do celów testowo-edukacyjnych dostępne jest bezpłatnie (na zasadach tzw. Development License). Warto wspomnieć, że jest to system relacyjno-obiektowych baz danych, doskonale zintegrowany z systemami linuksowymi, czy też uniksowymi - wyróżniający się m.in. takimi rozwiązaniami jak:
Instalacja serwera Oracle 9i na platformie Linux - z racji silnej integracji środowiska bazy danych z systemem operacyjnym - wymaga wykonania szeregu czynności przygotowawczych. Głównie mają one na celu poprawę wydajności instalowanego oprogramowania, konfigurację zmiennych środowiskowych oraz zdefiniowanie odpowiednich uprawnień. Warto przy tej okazji wspomnieć o pewnej specyfice działania Oracle'a na systemach z rodziny Linux/Unix. Polega ona głównie na tym - że na wspomnianych platformach praca serwera baz danych opiera się na modelu procesowym (w przeciwieństwie do wątkowego modelu, w jakim Oracle pracuje np. na Windows). Oznacza to mniej więcej tyle - że na Linuksie zadania takie jak zapisywanie do bazy, monitory usług, czy obsługa połączeń klienta działają jako oddzielne procesy. W Windows wszystkie te zadania pracują jako wątki jednego procesu. Stanowi to pewną niedogodność, ponieważ wątki dzielą tę samą przestrzeń adresową pomiędzy całą pulę dostępnej dla bazy pamięci. W przypadku bardzo obciążających zadań (repliki, sortowanie), na platformie Windows może więc występować problem z dostępną w danej chwili pamięcią RAM w ramach pojedynczego wątku. Tego typu niuanse powodują właśnie, że połączenie oprogramowania takiego jak Oracle z systemem uniksowym (w kontekście tego tekstu z Linuksem) - szczególnie przy słabszej maszynie, pozwala na dokładniejsze wykorzystanie zasobów sprzętowych i programowych. Jako że dochodzi do tego możliwość zmiany ustawień jądra systemu operacyjnego - łatwiej jest również precyzyjnie dostrajać wydajność oprogramowania. Odpowiednią dystrybucją Linuksa na
potrzeby serwera baz danych, może być np. CentOS 4.1 (http://www.centos.org).
Jest to system dostępny na licencji GPL i w pełni zgodny z komercyjnym
obecnie RedHat Enterprise Linux 4 (RHEL). Instalując go otrzymujemy
także możliwość dokonywania wszelkich aktualizacji oprogramowania
bezpośrednio poprzez sieć (za pomocą usługi CentOS Network). Jest to o
tyle istotne, że do RHEL trafiają w zasadzie dobrze przetestowane i
dobrane komponenty. Fundacja CAOS zajmująca się rozwojem CentOS'a,
stawia sobie za cel dostarczanie alternatywnej dystrybucji Linuksa,
zgodnej binarnie z enterprisowym produktem firmy RedHat i w pełni
bezpłatnej. Sam system jest po prostu kompilacją pakietów
źródłowych RHEL (src.rpm) jakie zgodnie ze wspomnianą
licencją
firma RedHat musi udostępniać w sieci. Wszelkie aktualizacje
publikowane dla RHEL są też po niedługim czasie dostępne w
repozytoriach CentOS'a. Jeśli komuś wydaje się dziwne takie zjawisko,
powinien zapoznać się z licencją GPL (http://www.gnu.org)
na jakiej udostępniane jest jądro Linuksa i większość dostarczanych z
nim aplikacji. Konfiguracja przedinstalacyjna Kluczem do wydajnej i prawidłowej pracy Oracle'a na Linuksie jest odpowiednia konfiguracja określonych obszarów systemu operacyjnego. W zasadzie jest ona niezbędna, jeśli chcemy - żeby instalacja serwera baz danych w ogóle się powiodła. W pierwszej kolejności powinniśmy sprawdzić, czy posiadamy wymagane przez bazę pakiety RPM, takie jak kompilatory, czy też biblioteki systemowe. W przypadku RHEL 4 lub CentOS 4.1 wszystkie potrzebne komponenty znajdują się na płytach instalacyjnych. Za pomocą polecenia "rpm -q" możemy odpytać system, czy mamy już zainstalowane to co potrzeba:
Polecenia wykonujemy cały czas jako użytkownik root. Żeby sobie ułatwić - możemy po prostu skopiować zawartość powyższej ramki do terminala (pomijając rzecz jasna znak "#", który oznacza powłokę roota i pamiętając o znakach "\"). Po wykonaniu tej komendy system wylistuje nam odpowiednie paczki RPM, wyświetlając komunikat: "pakiet X nie jest zainstalowany", jeśli czegokolwiek zabraknie. Gdyby okazało się, że musimy coś doinstalować - możemy posłużyć się menadżerem pakietów rpm (rpm -Uvh brakujący_pakiet.rpm) lub aplikacją yum, która potrafi pobierać binarki bezpośrednio z sieciowych repozytoriów CentOS'a. Jeśli więc chcielibyśmy doinstalować np. kompilator gcc-c++, wystarczy skonfigurować połączenie z Internetem i wpisać w terminalu polecenie:
Oczywiście jeśli mamy wszystkie
płyty
instalacyjne RHEL lub CentOS, nie ma potrzeby pobierać niczego z sieci.
Właściwą konfigurację zaczynamy od utworzenia dedykowanego dla Oracle'a
użytkownika systemowego oraz odpowiednich grup. Nie jest zalecane aby
serwer był instalowany lub działał z uprawnieniami root'a:
Następnie dla nowego użytkownika "oracle" ustawiamy hasło:
Teraz pobrane z http://www.oracle.com/ pliki instalacyjne Oracle'a 9i (najnowsza dostępna wersja z serii 9i to 9.2.0.4) przenosimy do /opt/ i rozpakowujemy:
Po wykonaniu powyższych poleceń utworzone zostaną trzy katalogi: Disk1, Disk2 i Disk3, w których znajdzie się zawartość pobranych archiwów. Teraz powinniśmy utworzyć katalog instalacyjny dla serwera baz danych:
Parametr "-p" przy mkdir oznacza, że system utworzy jednocześnie wszystkie wymagane podkatalogi. W przeciwnym wypadku musielibyśmy tworzyć oddzielnie /u01/, a w nim /app/, /oracle/ itd. Po utworzeniu katalogu należy zmienić jego właściciela oraz nadać mu odpowiednie prawa:
W tej chwili zarówno /u01 z całą zawartością, jak i /opt/Disk1, /opt/Disk2 oraz /opt/Disk3 należą do użytkownika "oracle" i grupy "oinstall". Teraz pozostała konfiguracja zmiennych środowiskowych powłoki i parametrów jądra. W Linuksie i innych systemach uniksowych, w których zainstalowana jest powłoka bash, odpowiednie zmienne i ustawienia przechowywane są w pliku /home/użytkownik/.bash_profile. Kropka poprzedzająca nazwę pliku oznacza, że jest on ukryty. W naszym wypadku edytujemy /home/oracle/.bash_history i dopisujemy na jego końcu:
Wpis LD_ASSUME_KERNEL=2.4.19 oznacza, że system będzie poprawnie obsługiwał pliki binarne dedykowane dla starszych wersji jądra (nie wszystkie komponenty Oracle'a były tworzone z myślą o jądrach z serii 2.6, w jakie wyposażone są nowe dystrybucje Linuksa). Pozostałe parametry wskazują na lokalizację katalogów w których zostanie zainstalowana baza, SID, ścieżkę do bibliotek itp. Po tej operacji, musimy ustawić jeszcze parametry jądra, jakich wymaga instancja (pliki + procesy) bazy danych. Najprościej zrobić to, dopisując do pliku /etc/sysctl.conf poniższą sekcję:
Wpis "kernel.sem" oznacza liczbę semaforów (semafor to taki sprytny mechanizm w jądrze Linuksa, synchronizujący działanie procesów). Najważniejszy jest jednak parametr "kernel.shmmax", który określa maksymalny rozmiar tzw. segmentu wyrażony w bitach (w jego obrębie będzie pracował oracle'owy SGA (System Global Area), który jest wydzielonym dla bazy fragmentem pamięci. Wielkość segmentu jest oczywiście uzależniona od ilości pamięci operacyjnej w jaką wyposażony jest nasz komputer. Po uzupełnieniu pliku /etc/sysctl.conf - możemy "zmusić" jądro systemu, żeby wczytało dopisane parametry bez potrzeby restartu komputera. Wystarczy w tym celu polecenie:
Na koniec powinniśmy zainstalować łatkę (dokładnie p4198954_21_LINUX.zip), jaką Oracle wypuścił ostatnio dla RHEL 4 (tym samym i dla CentOS 4.1) oraz zgodnych z tymi systemami dystrybucji. Zawiera ona dwa pakiety RPM i można ją pobrać ze strony http://metalink.oracle.com. Jeśli nie mamy czasu na poszukiwania - możemy z poniższych lokalizacji ściągnąć wspomniane RPM'y bezpośrednio:
Paczki instalujemy za pomocą polecenia: "rpm -Uvh pakiet1.rpm pakiet2.rpm". Są one niezbędne - jeśli chcemy, żeby instalator bazy danych się uruchomił. Obydwie wymagają również pakietu xorg-x11-deprecated-libs-devel (to ten z listy niezbędnych komponentów, których weryfikację opisywałem na początku). Ok. W tym momencie system jest gotowy do rozpoczęcia instalacji oracle'owego serwera i reszty "zabawek". Instalacja Minimalne wymagania dotyczące instalacji Oracle 9i wynoszą wg oficjalnej dokumentacji 512 MB RAM oraz 1 GB przestrzeni dyskowej. Jeśli jednak nie planujemy używać pamięciożernych narzędzi typu Oracle Data Mining, przeznaczonych na potrzeby hurtowni - komputer z 256 MB RAM pozwala na całkiem przyzwoitą pracę z serwerem. Znaczenie ma tu oczywiście również ilość danych, jakimi zamierzamy zapełniać nasze bazy. Istotne jest także wyłączenie wszystkich zbędnych usług systemowych, uruchomionych wraz ze startem Linuksa i działających w tle (tzw. demonów). Część z nich zapewne nie jest nam potrzebna - natomiast potrzebna może się okazać pamięć jaką zużywają (mam tu na myśli serwer pocztowy sendmail, usługi związane z sieciowym systemem plików: nfs, nfs-lock itp). Należy pamiętać również o tym, że jeśli podczas instalacji wybierzemy opcję "Enterprise Edition" lub "Standard Edition" - minimalną wymaganą przestrzenią dyskową będzie 2,5 GB. Instalator bazy Oracle (OUI - Oracle Universal Installer) to javowa, graficzna aplikacja, uruchamiana z katalogu Disk1 poleceniem:
W przypadku kiedy nie mamy oficjalnie supportowanej dystrybucji Linuksa - instalator nie chce się jednak uruchamiać. Weryfikuje podczas startu plik /etc/redhat_release i sprawdza, czy znajdzie tam stosowny wpis (czyli "Redhat-3", "Redhat-4" itp). Jeśli napotka coś w stylu "Fedora, "CentOS" lub pliku w ogóle nie znajdzie - bo instalujemy przykładowo bazę na Debianie - nie ma mowy o uruchomieniu instalacji. Prostym i powszechnie stosowanym zabiegiem jest więc podmiana zawartości redhat_release. Wystarczy w tym celu komenda:
Następnie logujemy się na konto użytkownika oracle. Wchodzimy do katalogu /opt/Disk1 i uruchamiamy instalator wspomnianym: ./runInstaller. Pojawi się ekran startowy, na którym wystarczy kliknąć "Next":
Następnie określamy lokalizację katalogu Inventory - w którym znajdą się informacje o zainstalowanych produktach oraz dane na temat środowiska Oracle. Jeśli poprawnie ustawiliśmy parametry w pliku /home/oracle/.bash_profile - instalator sam uzupełni właściwą ścieżkę i wyświetli: /u01/app/oracle/oraInventory:
Krok następny to ustalenie nazwy grupy użytkowników. Wpisujemy założoną podczas konfiguracji "oinstall":
Po zdefiniowaniu grupy - instalator wyświetli komunikat o konieczności wykonania z poziomu terminala skryptu orainstRoot.sh. Jest to konieczne ponieważ pracujemy w tej chwili jako użytkownik oracle - a skrypt modyfikuje uprawnienia do założonych przed chwilą katalogów instalacyjnych:
Żeby wymagany skrypt wykonać - powinniśmy otworzyć nowe okno terminala i wpisać w nim:
Po wpisaniu "su -" zostaniemy zapytani o hasło użytkownika root, a znak prompt zmieni się w charakterystyczny "#". Jeśli skrypt wykona się poprawnie - klikamy na "Continue" i przechodzimy do kolejnego etapu instalacji. Teraz musimy wskazać na katalog, w którym mają się znaleźć pliki bazy danych. Jest to nic innego - jak zawartość zmiennej $ORACLE_HOME, jaką definiowaliśmy wcześniej pliku .bash_profile:
W kolejnym oknie definiujemy typ instalacji. Do wyboru mamy "Enterprise Edition", "Standard Edition" i "Custom". Edycja enterprisowa zajmuje trochę ponad 2,5 GB oraz zawiera narzędzia do eksploracji danych(tzw: Data Mining) wykorzystywane najczęściej w hurtowniach. Jeśli nie planujemy projektować hurtowni danych, w zupełności wystarczy opcja "Standard Edition".
Po wybraniu preferowanego typu, instalator weryfikuje konfigurację naszego systemu operacyjnego. O ile nie znajdzie żadnych błędów, wyświetla okno podsumowania. Klikamy "Continue" i przechodzimy dalej. Następne okno to konfiguracja testowej bazy danych. Wybieramy opcję "General Purpose":
W tej chwili będziemy musieli ustawić nazwę naszej bazy oraz SID (System Identifier), który jest unikalnym identyfikatorem instancji. Przechodzimy dalej i na następnym ekranie określamy miejsce, w którym chcemy przechowywać pliki danych. W przypadku opisywanej tu konfiguracji będzie to /u01/app/oracle/oradata. Po kliknięciu "Next" przechodzimy do ustawienia kodowania znaków w bazie. Jeśli korzystamy z utf8 - zalecaną opcją jest AL32UTF8.
Na koniec podsumowanie wszystkich ustawień instalacyjnych:
Oraz instalacja:
Pod koniec procesu instalacyjnego musimy uruchomić kolejny skrypt z prawami użytkownika root. Otwieramy więc okno terminala i analogicznie jak poprzednim razem, wykonujemy /u01/app/oracle/product/9.2.0/root.sh:
Chwilę później uruchomi się tzw: "Database Configuration Assistant", który utworzy zdefiniowaną wcześniej bazę testową:
Po jej utworzeniu musimy ustawić hasła dla użytkowników SYS oraz SYSTEM.
Na koniec wyświetli się nam okno informujące o zakończeniu instalacji. Wciskamy "Exit", potwierdzamy zamknięcie instalatora ... i rozpoczynamy pracę z bazą danych. Czynności poinstalacyjne Po instalacji Oracle'a możemy połączyć się do nie zamontowanej jeszcze instancji i uruchomić serwer z lokalnego konta sysdba (bez podawania hasła):
Następnie powinniśmy uruchomić
proces Listenera:
Oracle Listener jest komponentem odpowiedzialnym za komunikację
pomiędzy serwerem baz danych a klientami. Nasłuchuje standardowo na
porcie TCP 1521.
Oczywiście poza SQL*Plus możemy posłużyć się również konsolą Enterprise Managera. Jest to narzędzie służące do administracji i zarządzania bazą danych (a także całą instancją Oracle'a). W celu uruchomienia konsoli wpisujemy w terminalu polecenie:
Po uruchomieniu aplikacji, należy kliknąć prawym klawiszem na identyfikator bazy danych znajdujący się na liście w lewym panelu (w naszym przypadku jest to "oratest") i wybrać z menu pozycję "Connect":
Po poprawnej autoryzacji, możemy zweryfikować np. w jaki sposób OEM prezentuje dane założonego przez nas przed chwilą użytkownika:
Jeśli chcemy zamknąć bazę danych - powinniśmy połączyć się z nią jako sysdba i wykonać polecenie: shutdown:
Przed wyłączeniem bazy muszą być zamknięte wszystkie nawiązane wcześniej połączenia użytkowników. Jeśli chcemy żeby Oracle nie czekał na zakończenie sesji - możemy posłużyć się poleceniem "shutdown immediate".
Pomimo, że oficjalnie Oracle nie supportuje Debiana (nie jest to komercyjna dystrybucja) - z powodu wysokiej jakości pakietów *.deb i możliwości administracyjnych jakie daje sam system, warto pokusić się o uruchomienie serwera Oracle 9i właśnie na tej odmianie Linuksa. Większość zadań konfiguracyjnych wykonuje się analogicznie jak w RedHat/CentOS, są natomiast pewne drobne różnice. Podczas zakładania grup i użytkownika "oracle", należy posłużyć się poleceniem "adduser", za którego pomocą dodajemy użytkownika - i następnie przypisujemy go do grup "dba" oraz "oinstall":
Istotne jest również, aby pamiętać o wymaganych pakietach DEB. Są to: binutils, lesstif oraz libstdc++2.10-glibc2.2. W razie potrzeby możemy w/w doinstalować za pomocą apt-get'a:
Domyślnie w Debianie Sarge instaluje się komilator GCC w wersji 3.35. Bardzo ważne jest, żeby doinstalować na potrzeby Oracle'a starszą wersję tego komilatora:
Oraz zrobić serię dowiązań do niezbędnych bibliotek, odpowiedniej wersji GCC, utworzyć plik oratab z odpowiednimi uprawnieniami itp:
Jeśli pod koniec instalacji serwera, w oknie "Configuration Tools" - przy opcji: "Oracle Database Configuration Assistant" otrzymamy błąd: -------------------------------------------------------------------------------------- SIGSEGV 11* segmentation violation .. powinniśmy otworzyć terminal i wykonać następujące polecenie (jako użytkownik root):
Teraz przy opcji "Oracle Database Configuration Assistant" w oknie instalatora wciskamu przycisk "Retry" i tym razem konfiguracja testowej bazy powinna przebiec bez żadnych problemów. |
||||||||||||||||||||||||