от Явор Иванов(8-03-2004)

рейтинг (11)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

Инсталация на Oracle 10g под Linux x86

В началото искам да предупредя, че това не е ръководство за инсталиране на Production система. Познанията ми в областта на Linux не са толкова дълбоки, колкото ми се иска. За това, ако съм направил нещо, което не може да си позволи един Linux гуру – моля за извинение.

Искам да благодаря и на Geroy, който ми оказа безценна помощ. То е моя личен Linux гуру

Oracle е утвърдена система за управление на бази от данни. Въпреки напредъка на безплатните open-source СУБД като MySQL и PostgeSQL, все още за сериозна работа трябва сериозна БД. Новата версия Oracle 10g държи рекорда за производителност – 1 184 893 транзакции в минута (tpmC) върху HP Integrity rx5670 Cluster 64P с ОС Red Hat Enterprise Linux AS 3 (http://www.tpc.org/tpcc/results/tpcc_perf_results.asp). Oracle дава живот и на най-голямата бизнес БД за 2003 г. – 29 232 GB данни на France Telecom (http://www.wintercorp.com/vldb/ 2003_TopTen_Survey /TopTenWinners.asp). При това всеки може да си свали функционално неограничено копие на последната версия на Oracle софтуера (http://otn.oracle.com/software/products/database/oracle10g/index.html), ако е съгласен със условията. Ето част от тях:

”License Rights
We grant you a nonexclusive, nontransferable limited license to use the programs only for the purpose of developing a single prototype of your application, and not for any other purpose...”

Ако това предизвиква във вас някакъв гъдел, запретвайте ръкави и да започваме.
Инсталацията на Oracle 10g for Linux x86 е значително опростена от тази на предишните версии. Това позволи на мен, човек, който съвсем не е „на вътре” с администрирането на Linux, да се справя с помощта на Oracle Database Installation Guide for UNIX Systems (http://download.oracle.com/docs/pdf/B10811_01.pdf).

Да запретваме ръкави. Тестовата инсталация направих на Compaq Prolinat ML 350 G3 сървър със процесор Intel Xeon 2.8 GHz, 512 MB RAM и 3 x 36 GB SCSI диска. Според Oracle се поддържа всеки хардуер, на който се поддържа Red Hat AS. Инсталирах го на Red Hat Advanced Server 2.1 (чист, без фиксове). Според Oracle се поддържа само Red Hat Advanced Server 2.1 и 3 и SuSE SLES8. Въпреки това чух, че има и успешни инсталации на върху Fedora.

1. Подготовка на ОС

В Installation Guide са описани някой необходими пакети и техните версии. Ето с какви инсталирах аз:
# rpm –q make
make-3.79.1-8
# rpm –q bunutils
bunutils-2.11.90.0.8-12
# rpm –q gcc
gcc-2.96-108.1
# rpm –q openmotif
openmotif-2.1.30-11

Необходими са и следните фиксове за RH AS 2.1:

RHSA-2003:195-06
Updated kernel addresses security vulnerabilities
RHSA-2003:022-09
Updated glibc packages fix vulnerabilities in resolver

Наличието им е силно препоръчително, особено за production databases, но не и задължително. Аз не съм ги слагал, т.к. инсталирах тестов сървър. За да проверите дали е инсталиран update RHSA-2003:195-06 напишете:
# uname -r
2.4.9-e.25
При мен резултата е
2.4.9-e.3smp
Кръпката може да се изтегли от
https://rhn.redhat.com/errata/RHSA-2003-195.html

За да проверите дали е инсталиран update RHSA-2003:022-09:
# rpm -q glibc
glibc-2.2.4-31
При мен резултата е
glibc-2.2.4-26
Кръпката може да се изтегли от
https://rhn.redhat.com/errata/RHSA-2003-022.html

2. Създаване на необходимите групи и потребители

За инсталация са необходими групите dba (групата на администраторите на базата) и oinstall (необходима само за инсталацията). Към тези групи трябва да принадлежи потребителя oracle, от който се стартира инсталацията. Необходимо е и да има потребител nobody.
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle

За да проверим дали потребителя е коректно създаден може да ползваме id:
# id oracle
uid=500(oracle) gid=500(оinstall) groups=500(оinstall),501(dba)

За да проверим дали има потребител nobody:
# id nobody
uid=99(nobody) gid=99(nobody) groups=99(nobody)

3. Настройки на параметрите на Kernel

Oracle е система с изисквания и към kernel параметрите. Ето изискванията, според installation guide:

Параметър Стойност Файл
semmsl 250 /proc/sys/kernel/sem
semmns 32000 /proc/sys/kernel/sem
semopm 100 /proc/sys/kernel/sem
semmni 128 /proc/sys/kernel/sem
shmall 2097152 /proc/sys/kernel/shmall
shmmax (physical memory)/2 /proc/sys/kernel/shmmax
shmmni 4096 /proc/sys/kernel/shmmni
file-max 65536 /proc/sys/fs/file-max
ip_local_port_range 1024 65000 /proc/sys/net/ipv4/ip_local_port_range

Настройките, необходими при мен, бяха:
echo "250 32000 100 128" > /proc/sys/kernel/sem
echo "65536" > /proc/sys/fs/file-max
echo “1024 65000” > /proc/sys/net/ipv4/ip_local_port_range
echo “262266880” > /proc/sys/kernel/shmmax

4. Последни стъпки преди инсталацията

Остава да направим необходимите директории и да разопаковаме архива. Аз инсталирах всичко на един SCSI диск, монтиран в /u01. Това не е най-доброто решение, но всъщност за най-доброто решение са необходими поне 20 диска (-:
# mkdir -p /u01/app/oracle
# chown -R oracle:oinstall /u01/app/oracle
# chmod -R 775 /u01/app/oracle

Копираме инсталацията от cd-то...
# mount /dev/cdrom /mnt/cdrom
# cd /u01
# cp /mnt/cdrom/ship.db.cpio.gz .
# umount /dev/cdrom
... и я разархивираме
# gunzip ship.db.cpio.gz
# cpio –idmv Инсталацията се изсипва във директория Disk1.

Трябва да настроим и обкръжението на потребителя oracle преди да пуснем самата инсталация. Задават се базова директория за всички Oracle инсталации (ORACLE_BASE), директория за инсталация на настоящия продукт (ORACLE_HOME) и име на БД, която ще създадем по-късно (ORACLE_SID). За целта редактирах файла .bash_profile от /home/oracle, като му добавих следните редове:
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/10.1.0.2
export ORACLE_SID=TEST10G

Базовите директория трябва да бъде една за всички инсталирани на компютъра Oracle продукти. Различни версии (примерно 9i и 10g) могат да съжителстват безпроблемно, при условие, че са в един общ oracle_base и различни oracle_home.

Освен това трябва да се добави и $ORACLE_HOME/bin към пътя. Това постигнах като промених реда, указващ path на
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin


5. Инсталация на софтуера

Инсталацията е графична, под Java. В предишните версии (Oracle 9i и по-ниски) трябваше да се изтегли специална версия на jvm. В 10g вече инсталатора се оправя сам. Но трябва да се стартира под X, и то като потребител oracle
$ startx

Стартира се Konsole (или конзолата на Gnome, или друга конзола под X) и се стартира самия инсталатор
$ cd /u01/Disk1
$ ./runInstaller

Първо излиза Welcome screen. Следващият екран ни пита къде да сложи Inventory. Приема се стойността по подразбиране, ако няма предишна инсталация на някакъв oracle софтуер. При натискане на Next изкача popup screen, който ни казва да пуснем скрипта orainstRoot.sh като root.

За целта се пуска друга конзола:
$ su –
# cd /u01/app/oracle/oraInventory/
# ./orainstRoot.sh

Без да затваряме конзолата настискаме continue на popup screen-а. След това приемаме file locations. Това е директорията, в която да се инсталира софтуера. Не е задължително след това да се слагат и файловете с данни в нея.

На следващият екран избираме тип на инсталация. Аз избрах Enterprise edition, като най-пълна с благинки. При натискане на Next инсталатора проверява ОС. Ако не е инсталирана кръпката за ядро 2.4.9-e.25 издава предупреждение. Натискаме next и потвърждаваме с Yes

На следващият екран трябва да изберем каква БД да създаде инсталатора. Избираме Do not create starter database. Ако инсталацията е успешна, после ще стартираме Database Configuration Assistant.

Стигаме до заветният бутон Install. След натискането му, при предишните версии започваше истинската мъка по поправяне на make файлове. Чест за Oracle е, че настоящата инсталация не гръмва нито веднъж (при правилно конфигурирана ОС)

Ако все пак гръмне на 71% за ins_net_client.mk значи не е инсталиран gcc. След инсталация на gcc продължаваме с retry.

На края на инсталацията излиза popup, който ни подканва (отново като root) да стартираме /u01/app/oracle/product/10.1.0.2/root.sh. Стартираме го в конзолата, в която сме root. На въпроса къде е локалната bin директория натискаме enter. След като приключи скрипта (отнема му около минута-две) потвърждаваме с ОК на инсталатора.

Излизаме с Exit.


6. Създаване на БД

След като имаме вече инсталиран софтуер, трябва и да го впрегнем в действи. За целта трябва да създадем БД, която да управлява. Средството, предоставено ни за тази цел е Database Configuration Assistant и работи под X (споменах ли, че Java е любима среда на Oracle?). От Konsole стартираме:
$ dbca

Ако не тръгне, значи няма указан път към $ORACLE_HOME/bin

На Welcome екрана натискаме next. След това трябва да изберем с какво сме се захванали. Избираме “Create a Database”.

На следващият екран предстои да изберем типа на БД, която ще създаваме. Transaction Processing (или OLTP) е база, в която ще има много потребители с малки транзакции, които постоянно ще променят данните. Data Warehouse е БД, която изпълнява предимно големи по обем и малко на брой заявки, които са главно read-only. General purpose е опит да се намери компромис между двата типа. От избора тук зависи как ще бъде разпределена после паметта, както и други параметри на БД. Аз препоръчвам Custom database.

След това трябва да въведем Global Database Name и SID за новата база. SID трябва да е уникално за сървъра – примерно TEST10G. Името трябва да е указано и в променливата на обкръжението ORACLE_SID (зададено в .bash_profile). Global name се състои от SID и домейн, примерно TEST10G.us.acme.com (стандартно сравнениеJ). Аз избирам
Global name -> TEST10G.WORLD
SID -> TEST10G

След това трябва да зададем някой настройки по управлението на БД. Силно препоръчително е да изберем “Configure the Database with Enterprise Manager”. Една Oracle БД може да се управлява и чрез проста текстова конзола, но Enterprise Manager е голямо улеснение.

Следващият екран ни предлага да зададем пароли на някой от потребителите на БД. Най-важните са SYS и SYSTEM. Потребителят с най-много права е SYS. Той единствен може да стартира и спира БД. SYSTEM е друг силен потребител, с който обикновено работи администратора на БД.

Следващият важен избор е как ще се съхраняват файловете с данни. Най лесното решение е да се запишат като файлове на файлова система. Най-трудния (за създаване и за поддръжка) е Raw devices. Той се използва само ако се изгражда клъстер (RAC). ASM е нова технология, въведена в 10g и като такава не бих я използвам поне до втория patchset J. За това избирам filesystem.

На екрана Database File Locations избирам “Use Common Location for All Database Files” и указвам /u01/app/oracle. Това означава, че самите файлове с данни ще се създадат в /u01/app/oracle/TEST10G

Осмата стъпка от wizard-а предлага избор на Flash recovery area (необходима е ако се прави backup). Деветата ни дава избор какво да включим в базата, която предстои да се създаде. В десетата има разни фини настройки ,които са описани в документацията.

На следващият екран може да променим размера или мястото на файловете на БД. След това само потвърждаваме, че искаме да създадем база, зареждаме се с търпение и натискаме Finish.

7. Допълнителни настройки

За да достигаме базата е необходимо да се направят още няколко настройки.

1. Настройка на Listener
Listener е услугата, която приема заявките за връзка към БД от клиентите. За да го подкараме можем да използваме Oracle Net Manager (отново написан на Java инструмент, работещ само под X):
$ netmgr

Другият (и препрочитан от мен) вариант е да редактираме файла $ORACLE_HOME/network/admin/listener.ora. Ето една примерна настройка:
# File: /u01/app/oracle/product/10.1.0.2/network/admin/listener.ora
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = TEST10G.world)
      (ORACLE_HOME = /u01/app/oracle/product/10.1.0.2)
      (SID_NAME = TEST10G)
    )
  )
LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.38)(PORT = 1521))
  )

В първата секция се описват базите, които обслужва listener-а. Втората секция описва адреса и порта на които да „слуша”. След като настроим този файл трябва да стартираме самия listener. Това става с командата
$ lsnrctl start

2. Настройка на TNSNames
Файла $ORACLE_HOME/network/admin/tnsnames.ora описва базите с които ще работим (като клиент). Този файл се използва от oracle клиента, който ще стартираме. Файла може да се генерира с Oracle Net Manager, а може да се напише и ръчно:
# File: /u01/app/oracle/product/10.1.0.2/network/admin/tnsnames.ora
TEST10G.WORLD =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.38)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = TEST10G.world)
    )
  )

Важно е тук да зададем адреса и порта, на които работи listener и SERVICE_NAME, който е описан в listener.ora като GLOBAL_DBNAME.
След тези настройки можем успешно

3. Да подкараме всичко
Като стар Windows потребител смятам момента за подходящ за рестарт. След това всичко се стартира в следния ред.

- стартираме Listener
$ lsnrctl start

- стартираме инстанция на БД
$ sqlplus /nolog
SQL> connect sys@test10g.world as sysdba
SQL> startup
SQL> exit

- стартираме услугата Enterprise Manager
$ emctl start dbconsole

Вече можем да управляваме базата от http://localhost:5500/em

Явор Иванов

Моля не се притеснявайте да изпращате мнения, препоръки и въпроси на
yivanov@abv.bg



<< Наръчник за използване на GnuPG (Част I) | Да поговорим отново за Samba >>