Download: KnowHow_oracle
Transkrypt
Download: KnowHow_oracle
KNOW HOW Oracle Firma Oracle Corporation powstała ponad 25 lat temu i praktycznie od samego początku jej sztandarowym produktem była relacyjna (obecnie Instalujemy serwer Oracle Dwa światy relacyjno-obiektowa) baza danych. Dzięki starannemu procesowi projektowania i ciągłej ewolucji, dodawaniu nowych możliwości i wychodzeniu naprzeciw potrzebom współczesnego społeczeństwa inwww.dfrc.nasa.gov/gallery/photo formatycznego, produkt firmy Oracle jest bez wątpienia najlepszą propozycją w swej klasie. DARIUSZ WALAT W ielu Czytelników zadaje sobie zapewne pytanie – co w miesięczniku poświęconym Linuksowi i oprogramowaniu Open Source robi artykuł o komercyjnej bazie danych Oracle? W odpowiedzi mógłbym przeprowadzić wywód dotyczący korzyści płynących ze wsparcia ruchu Open Source przez takich potentatów światowego rynku oprogramowania, jak IBM, Sun Microsystems, czy też właśnie Oracle. Wywód taki byłby całkiem długi, musiałby bowiem odkryć meandry toczonych od kilku lat dyskusji dotyczących sensowności, korzyści, opłacalności stosowania oprogramowania Open Source we współpracy z komercyjnym i zamkniętym kodem. Nie będziemy po raz kolejny odkrywać „prawd oczywistych”, bo nie to jest tematem niniejszego artykułu. Ograniczymy się jedynie do przypomnienia kilku znanych powszechnie argumentów, które w przypadku połączenia bazy danych Oracle i Linuksa sprawdzają się wyśmienicie, a mianowicie o stabilności, elastyczności, otwartości kodu Linuksa (co jest również wykorzystywane przez firmę Oracle wraz z firmą Red Hat przy optymalizacji Red Hat Enterprise Linux pod kątem współpracy z bazą danych Oracle), wydajności oraz łatwości zarządzania systemem operacyjnym. W niniejszym artykule zostanie opisany proces instalacji serwera bazodanowego Oracle na platformie Red Hat Linux 9.0. 60 Lipiec 2004 Aby mieć pewność, że korzystamy z bazy w sposób optymalny, w przypadku zastosowań produkcyjnych należałoby skorzystać z jednej z certyfikowanych przez Oracle Corporation dystrybucji: Red Hat Advanced Server i Enterprise Linux oraz SuSE Linux Enterprise Server firmy Novell/SuSE. Jednak w celu poznania potężnych możliwości drzemiących we flagowym produkcie Oracle, nie jest konieczny zakup tych komercyjnych dystrybucji. Wystarczy stary, poczciwy Red Hat 9.0. Proces instalacji motora bazy danych będzie taki sam zarówno dla Red Hat 9.0, jak i na przykład w Red Hat Advanced Serwer 2.1, zatem po poznaniu tajników instalacji bazy Oracle na tym pierwszym, nie będziemy mieli specjalnych problemów z instalacją na platformach klasy Enterprise. Spróbujemy zainstalować najpopularniejszą obecnie wersję bazy – 9iR2. Stosunkowo niedawno na rynku pojawił się nowy produkt oznaczony jako 10g, gdzie „g” w nazwie symbolizuje wsparcie bazy Oracle dla niezbyt często jeszcze spotykanych, ale z całą pewnością przyszłościowych systemów opartych na grid computing. Jednakże wersja „g” jest stosunkowo młoda, stąd też my skupimy się na standardowej wersji 9iR2. gramowania, posiada doskonale przygotowany portal, który ma pomóc użytkownikom w uzyskaniu wersji instalacyjnych poszczególnych produktów, odpowiedniej dokumentacji oraz uzyskiwaniu dostępu do szkoleń on-line, artykułów technicznych, itd. W celu uzyskania wersji instalacyjnej Oracle 9iR2 dla Linuksa, należy wejść na strony portalu OTN – Oracle Technology Network (http://otn.oracle.com), zarejestrować się (cały proces jest bezpłatny), a następnie wybrać odpowiedni produkt w sekcji „Product Centers > Services -> Downloads -> Database”. Należy jednak pamiętać o tym, iż uzyskane w ten sposób oprogramowanie może być używane tylko w określonych celach (szczegóły licencji są opisane na stronach OTN). Komercyjne wykorzystanie wymaga bezwzględnie OTN – skarb kibica Firma Oracle, podobnie do kilku innych czołowych graczy na komercyjnym rynku opro- www.linux-magazine.pl Rysunek 1: Okno powitalne Uniwersalnego Instalatora Oracle. Oracle oprogramowanie należy przygotować partycję o wielkości około 3,5 GB. Następnie na przygotowanych partycjach należy utworzyć odpowiednie systemy plików, np. ext3: [root@pyrltest]# mke2fs -L oracle U -j /dev/sda10 [root@pyrltest]# mke2fs -L ora9iU R2home -j /dev/sda11 Rysunek 2: Okno konfiguracji plików OUI. nabycia stosownej licencji. Gdzie mieszkam i kim jestem? Pierwszym krokiem koniecznym do zainstalowania świeżo pozyskanego oprogramowania jest stworzenie odpowiedniej struktury katalogów (systemów plików) oraz stworzenie odpowiedniego użytkownika i grupy. Jeśli chodzi o strukturę katalogów docelowych, można skorzystać ze wskazówek zawartych w specyfikacji OFA (Optimal Flexible Architecture). Została ona opracowana przez specjalistów Oracle Corporation w celu zapewnienia optymalnej organizacji plików serwera bazy danych oraz plików konkretnych baz danych. Należy pamiętać, iż jest to zbiór pewnych założeń, które nie są bynajmniej obligatoryjne. Autor od lat stosuje z powodzeniem następujący schemat systemu plików dla katalogu domowego właściciela oprogramowania bazy danych oraz dla samego zbioru plików wchodzących w skład konkretnego wydania motoru bazodanowego: /Oracle jako katalog domowy właściciela oprogramowania serwera Oracle oraz /Oracle/app/oracle/product/x.y.z dla składowania plików konkretnego systemu zarządzania bazą danych, gdzie x.y.z stanowią trzy najbardziej znaczące cyfry konkretnej wersji, np. 9.2.0. W celu przygotowania stosownych systemów plików należy najpierw utworzyć odpowiednie partycje, np. za pomocą narzędzia fdisk lub też (co jest sugerowanym rozwiązaniem) przygotować odpowiednie wolumeny logiczne zarządzane przez np. LVM. Dlaczego? Ponieważ oprogramowanie Oracle od czasu do czasy wymaga instalowania łatek, które mogą spowodować w końcu zapełnienie partycji, a systemy takie jak LVM pozwalają na elastyczną zmianę wielkości woluminów. Partycja katalogu domowego właściciela oprogramowania Oracle powinna mieć nie więcej niż 300-500 MB, natomiast na samo gdzie sda10 i sda11 należy zastąpić odpowiednimi plikami specjalnymi partycji dyskowych istniejącymi w konkretnym systemie. W celu zamontowania przygotowanych partycji konieczne jest utworzenie odpowiednich punktów montowania, zatem należy przygotować specjalne katalogi, a następnie dokonać operacji montowania. [root@pyrltest]# mkdir /Oracle [root@pyrltest]# mount /dev/sda10 U /Oracle [root@pyrltest]# mkdir -p U /Oracle/app/oracle/product/9.2.0 [root@pyrltest]# chmod -R 2750 U /Oracle [root@pyrltest]# mount /dev/sda11 U /Oracle/app/oracle/product/9.2.0 Aby proces przebiegał automatycznie, po każdym restarcie systemu konieczne jest dodanie do pliku /etc/fstab następujących wpisów: LABEL=oracle /Oracle ext3 U defaults 1 2 LABEL=ora9iR2home /Oracle/app/U oracle/product/9.2.0 ext3 U defaults 1 2 Kolejnym krokiem jest utworzenie odpowiednich użytkowników i grup, które będą potrzebne do instalacji i zarządzania oprogramowaniem Oracle RDBMS. Doświadczenie autora pokazuje, że całość KNOW HOW procesu instalacji oprogramowania i jego późniejszego uruchamiania można z powodzeniem wykonać przy pomocy jednego konta i jednej grupy, odpowiednio oracle i dba. Warto przy okazji odnotować, iż przy planowaniu instalacji oprogramowania Oracle na większej ilości serwerów warto ustalić zawczasu odpowiednie identyfikatory systemowe dla grupy dba i użytkownika oracle, wspólne dla wszystkich instalacji w całej organizacji – ułatwi to późniejszą opiekę nad wieloma bazami danych. [root@pyrltest]# groupadd -g U 200 dba [root@pyrltest]# useradd -u 200 U -g dba -s /bin/bash -d /Oracle U -c „oracle owner” oracle Po utworzeniu odpowiedniego użytkownika i grupy należy uczynić ich właścicielami katalogów w uprzednio utworzonych systemach plików. [root@pyrltest]#chown -R U oracle.dba /Oracle Duchy przeszłości W celu uniknięcia błędów podczas operacji linkowania i kompilacji binariów serwera Oracle należy upewnić się, że w systemie są zainstalowane następujące pakiety: gcc-3.2.2-5 cpp-3.2.2-5 glibc-devel-2.3.2-11.9 nss_db-compat-2.2-20 compat-gcc-7.3-2.96.118 compat-libgcj-7.3-2.96.118 compat-libgcj-devel-7.3-2.96.118 binutils-2.13.90.0.18-9 na przykład za pomocą [root@pyrltest]# rpm -qa | egrep U „gcc|cpp|glibc-devel|binutils|U compat-gcc|compat-libgcj|U compat-libgcj-devel|nss_db-compat” W przypadku braku powyższych pakietów należy je zainstalować za pomocą narzędzia RPM, wszystkie potrzebne pakiety znajdują się na płytach instalacyjnych Red Hat 9.0. Jądro na sterydach Rysunek 3: Okno źródła plików instalacyjnych oraz Oracle Home. Do komunikacji międzyprocesowej serwer Oracle wykorzystuje w intensywny sposób zasoby, takie jak pamięć dzielona, semafory oraz pamięć wirtualna (swap). Z tego powodu www.linux-magazine.pl Lipiec 2004 61 KNOW HOW Oracle wskazana jest zmiana domyślnych ustawień pewnych parametrów jądra, powiązanych bezpośrednio lub pośrednio z tymi zasobami w stosunku do oferowanych standardowo w dystrybucji Red Hat 9.0. W przeciwnym wypadku proces instalacji może zakończyć się niepowodzeniem. Szczegółowy opis poszczególnych parametrów jądra oraz ich minimalnych wartości wymaganych przez serwer Oracle można znaleźć w dokumentacji. Tutaj skupimy się jedynie na sposobie ustawienia odpowiednich wartości. Czynność tę można wykonać na dwa sposoby: interaktywny, polegający na bezpośredniej zmianie odpowiednich parametrów jądra poprzez ingerencję w pliki znajdujące się w katalogu /proc: [root@pyrltest]# echo 250 32000 U 100 128 > /proc/sys/kernel/sem [root@pyrltest]# echo 2147483648 U > /proc/sys/kernel/shmmax [root@pyrltest]# echo 4096 U > /proc/sys/kernel/shmmin [root@pyrltest]# echo 2097152 U > /proc/sys/kernel/shmall [root@pyrltest]# echo 65536 U > /proc/sys/fs/file-max [root@pyrltest]# echo 1024 65000 U > /proc/sys/net/ipv4/U ip_local_port_range oraz nieinteraktywny, polegający na ustawieniu odpowiednich parametrów (które zostaną odczytane przez jądro po restarcie systemu) w pliku /etc/sysctl.conf kernel.sem = 250 32000 100 128 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.shmall = 2097152 kernel.file-max = 65536 net.ipv4.ip_local_port_range = U 1024 65000 Dodatkowo w pliku /etc/security/limits.conf należy ustawić limity dla maksymalnej liczby otwartych plików oraz maksymalnej liczby procesów właściciela serwera Oracle. oracle soft proc 16384 oracle soft nofile 65536 oracle hard nofile 65536 Wygodne mieszkanie Wymagania dotyczące wielkości pamięci RAM i pamięci wirtualnej niezbędnej do instalacji bazy Oracle 9iR2 są duże. Wynoszą one (podaję za dokumentacją) odpowiednio: 512 MB i 1GB oraz dwukrotność wielkości pamięci RAM dla pamięci wirtualnej. W celu sprawdzenia dostępnej pamięci RAM można się posłużyć poleceniem: [root@pyrltest]# grep MemTotal U /proc/meminfo MemTotal: 524288kB Natomiast do sprawdzenia przestrzeni wymiany: [root@pyrltest]# cat /proc/swaps Filename Type Size U Used Priority /dev/sda09 partition U 1044144 0 -1 W przypadku braku odpowiednio dużej partycji wymiany należy ją koniecznie utworzyć, na przykład za pomocą fdisk, następnie utworzyć na niej przestrzeń wymiany w następujący sposób: [root@pyrltest]# mkswap /dev/sda12 Rysunek 5: Okno wyboru komponentów serwera Oracle. [root@pyrltest]# zcat lnx_920_disk1.cpio.gz [root@pyrltest]# zcat lnx_920_disk2.cpio.gz [root@pyrltest]# zcat lnx_920_disk3.cpio.gz U | cpio -idmv U | cpio -idmv U | cpio -idmv Dzięki tej operacji stworzone zostaną 3 katalogi instalacyjne Oracle RDBS 9iR2; odpowiednio Disk1, Disk2 i Disk3. Należy jeszcze stosownie zmienić prawa do nich, tak aby później użytkownik oracle mógł uruchomić odpowiedni plik instalacyjny. [root@pyrltest]# chown -R oracle.dba Disk[1-3] We własnej skórze Do tej pory wszystkie czynności przygotowawcze były wykonywane jako root. Najwyższa pora zmienić skórę i stać się użytkownikiem oracle. Przedtem jednak wskazane jest ustawienia odpowiedniego środowiska pracy (ścieżki, ORACLE_BASE, ORACLE_HOME, ustawienia językowe, itd.) użytkownika oracle poprzez dodanie odpowiednich zmiennych na końcu pliku ~oracle/.bashrc, tak jak na poniższym listingu. a wreszcie ją aktywować [root@pyrltest]# swapon /dev/sda12 Rysunek 4: Wybór opcji językowych. 62 Lipiec 2004 Wymagana wolna przestrzeń w systemie plików /tmp to 400 MB. Jeśli serwer ma zbyt mało miejsca w katalogu /tmp, należy przed rozpoczęciem instalacji motoru bazodanowego Oracle ustawić jako użytkownika oracle zmienną TEMP, wskazującą na katalog z odpowiednią ilością przestrzeni. W tym kroku można również przygotować do instalacji pobrane ze strony OTN oprogramowanie. www.linux-magazine.pl # Srodowisko oracle export ORACLE_BASE=U /Oracle/app/oracle export ORACLE_HOME=U /Oracle/app/oracle/product/9.2.0 export ORACLE_SID=testsid export ORACLE_TERM=xterm export ORA_NLS33=U $ORACLE_HOME/ocommon/nls/admin/data # Sciezka przeszukiwan export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=U $ORACLE_HOME/lib:/lib:/usr/lib Oracle :/usr/local/lib # Use old Linuxthreads with U floating stacks instead of # the new Native POSIX Thread U Library (NTPL) # export LD_ASSUME_KERNEL=2.4.1 # export THREADS_FLAG=native # Narodowe ustawienia językowe U dla Oracle export NLS_LANG=U 'polish_poland.ee8iso8859p2' # Classpath CLASSPATH=$ORACLE_HOME/JRE:U $ORACLE_HOME/jlib:U $ORACLE_HOME/rdbms/jlib CLASSPATH=$CLASSPATH:U $ORACLE_HOME/network/jlib Po tej operacji przełączenie na użytkownika oracle spowoduje odpowiednie ustawienie środowiska pracy koniecznego do rozpoczęcia instalacji. [root@pyrltest]# su – oracle Po przygotowaniu odpowiedniego środowiska można w końcu rozpocząć proces instalacji oprogramowania bazy danych Oracle. Budujemy nowy dom Począwszy od wersji 8i systemy zarządzania bazą danych Oracle zostały wyposażony w graficzne, praktycznie jednakowe dla wszystkich platform, oparte o Java środowisko instalacyjne nazywane Uniwersalnym Instalatorem Oracle (Oracle Universal Installer). Tak więc proces instalacji oprogramowania Oracle odbywa się w środowisku graficznym. Dowolnym środowisku graficznym – dodajmy gwoli ścisłości. W celu poprawnego uruchomienia instalatora konieczne jest ustawienie zmiennej DISPLAY jako użytkownik oracle. Rysunek 6: Okno podsumowania parametrów instalacji. [oracle@pyrltest]% export U DISPLAY=127.0.0.1:0 Następnie z poziomu użytkownika root wykonujemy polecenie, które umożliwi innym użytkownikom uruchamianie programów w środowisku graficznym. Uruchamiamy więc nowe okno X-terminalowe i w nim wykonujemy polecenie: [root@pyrltest]# xhost +127.0.0.1 System jest gotowy do uruchomienia instalatora. W sesji X-terminalowej użytkownika oracle uruchamiamy skrypt: [oracle@pyrltest]% U Disk1/runInstaller który spowoduje otwarcie graficznego okna instalatora. Instalator jest zbudowany w przejrzysty, klarowny sposób, większość pytań przez niego zadawanych ma ustawione sensowne wartości domyślne, tak więc na tym etapie nawet mało doświadczony użytkownik nie powinien mieć większych problemów. Przy pierwszej instalacji serwera Oracle (w danym systemie można mieć zainstalowanych kilka różnych wersji serwera Oracle) w systemie Instalator zapyta o katalog, w którym będą przechowywane informacje związane z OUI (Rysunek 2). Należy w tym miejscu zostawić podpowiadaną ścieżkę, gdyż jest ona zbudowana w oparciu o zmienną środowiskową $ORACLE_BASE i jej wartość jest prawidłowa. W kolejnych krokach będziemy pytani o ścieżkę do katalogów z wersją instalacyjną, nazwę Oracle Home (którą autor zwyczajowo zmienia w przypadku serwera 9iR2 na OraHome9iR2), ścieżkę do Oracle Home (podpowiadana wartość jest pobierana ze zmiennej $ORACLE_HOME). W kolejnych oknach pojawią się pytania dotyczące języków, w których serwer Oracle będzie mógł pracować (Rysunek 4), oraz typu przeprowadzanej instalacji, gdzie najelastyczniejszym wyborem jest Custom, pozwalający zadecydować o instalacji odpowiednich komponentów serwera Oracle (nie wszystkie komponenty są potrzebne w każdym wypadku – przykładowo w bazach danych OTLP raczej nie wybierzemy komponentu Oracle OLAP bądź Oracle Data Mining). Instalator zapyta również o uprzywilejowaną grupę w Linuksie, która będzie miała możliwość uaktualniania oprogramowania serwera Oracle (należy tutaj wybrać dba), lo- KNOW HOW kalizację komponentów związanych z Java oraz, czy po instalacji serwera Oracle będziemy chcieli od razu utworzyć bazę danych (w przypadku czystej instalacji serwera Oracle należy wybrać „No”). Po zebraniu odpowiednich informacji OUI wyświetla okno podsumowujące parametry instalacji, zaś wybranie przycisku Install powoduje rozpoczęcie procesu fizycznej instalacji (linkowanie, kompilowanie) plików serwera bazodanowego Oracle. Po zakończeniu procesu instalacji serwera Oracle OUI uruchomi jeszcze kreatora konfiguracji podstawowych parametrów sieciowych – w naszym przypadku należy wybrać wartości domyślne. I to już wszystko. Serwer Oracle 9iR2 został zainstalowany! To jednak dopiero początek drogi. W celu jego efektywnego wykorzystania konieczne jest przede wszystkim stworzenie jakiejś bazy danych, a w dalszej kolejności przygotowanie odpowiednich skryptów startowych, pozwalających na automatyczne podnoszenie instancji bazy danych po restarcie systemu, odpowiedniego środowiska zapewniającego automatykę wykonywania kopii zapasowych, strojenie systemu, konfiguracja pod kątem bezpieczeństwa itd. To jednak tematy na kolejne artykuły. W niniejszym artykule pominąłem również milczeniem (z niewielkim odstępstwem dotyczącym pamięci RAM i przestrzeni dyskowej) aspekty związane z doborem architektury sprzętowej systemu, a więc tematami oscylującymi wokół ilości procesorów, macierzy dyskowych, bibliotek taśmowych. Nie są to jednak kwestie, bez omówienia których nie da się poprawnie zainstalować omawianego w niniejszym tekście oprogramowania, a zasługują one z całą pewnością na osobne potraktowanie. Do przodu! Pomimo niewątpliwego wkładu firmy Oracle w poprawienie komfortu instalacji oprogramowania bazy danych, proces ten w Linuksie wciąż wymaga (i zapewne długo jeszcze będzie wymagał) pewnego doświadczenia i wiedzy. Samodzielne zainstalowanie motoru bazy danych w systemie RedHat 9.0 oraz późniejsze utworzenie bazy danych da jednak użytkownikowi możliwość zapoznania się z wysoce cenioną technologią w stabilnym, dającym wysoki komfort pracy środowisku i zasmakowania w tym co najlepsze z obu światów, tego komercyjnego, oraz tak przez nas wszystkich cenionego Open Source. ■ www.linux-magazine.pl Lipiec 2004 63