OCP  
line decor
  Начало  ::  
line decor
   
 
Инсталация на Oracle 11g R1 под Linux x86, част 1 Август 2007

 

Забележка: Това ръководство претендира да бъде първото такова на български език. Както при излизането на Oracle 10g преди 3 години, и сега пускам опътване за инсталация не повече от седмица след излизането на Oracle 11g R1 for Linux. За това моля, ако има някакви несъответствия, бъдете снизходителни... (-:


В началото искам да предупредя, че това не е ръководство за инсталиране на Production система. Познанията ми в областта на Linux не са толкова дълбоки, колкото ми се иска. За това, ако съм направил нещо, което не може да си позволи един Linux гуру – моля за извинение.
Инсталацията на Oracle Database 11g for Linux x86 е много подобна на тази на 10g, поне "на външен вид". Както е доказала практиката, най-добре е да се инсталира след като се изпълнят инструкциите за "Preinstallation Requirements" в Oracle® Database Installation Guide 11g Release 1 (11.1) for Linux. Това спестява ужасно много главоболия.

Тестовата инсталация направих на виртуална машина върху VMware Server. Отделих 1.5 GB RAM и 20 GB HDD. За операционна система сложих Oracle Enterprise Linux 5.

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

Следвайки Installation guide, първо проверих наличната физическа памет и swap. Теоретично и 256 МВ физическа памет са достатъчни, но 1 GB е силно препоръчителен. SWAP пространството трябва да е поне 1.5 пъти физическата памет. Следващите команди са изпълнени с потребителя root:
# grep MemTotal /proc/meminfo
MemTotal:      1535260 kB
# grep SwapTotal /proc/meminfo
SwapTotal:     3047416 kB

В ръководството следват препоръки за shared memory и file descriptors, които ще настроим по-късно в частта "Настройки на параметрите на ядрото " Следващата проверка е наличното свободно пространство в /tmp. Трябва да има поне 400 МВ свободно пространство (иначе може да последват много лоши грешки при самата инсталация):
# df -k /tmp
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
17203612   2697232  13618368  17% /

Следващата проверка засяга версията на ядрото. За Oracle Enterprise Linux 5.0, версията трябва да е поне 2.6.18:
# uname -r
2.6.18-8.el5

Следва проверка дали са налични всички необходими пакети. За избраната ОС installation guide препоръчва наличието на:
binutils-2.17.50.0.6-2.el5
compat-libstdc++-33-3.2.3-61
elfutils-libelf-0.125-3.el5
elfutils-libelf-devel-0.125
glibc-2.5-12
glibc-common-2.5-12
glibc-devel-2.5-12
gcc-4.1.1-52
gcc-c++-4.1.1-52
libaio-0.3.106
libaio-devel-0.3.106
libgcc-4.1.1-52
libstdc++-4.1.1
libstdc++-devel-4.1.1-52.e15
make-3.81-1.1
sysstat-7.0.0
unixODBC-2.2.11
unixODBC-devel-2.2.11

Проверката за наличие на пакет е следната:
# rpm -q binutils
binutils-2.17.50.0.6-2.el5

Последния параметър е името на пакета, без версия в него (т.е. binutils, а не binutils-2.17.50.0.6-2.el5). Ако даден пакет липсва се издава следното съобщение:
# rpm -q unixODBC-devel
package unixODBC-devel is not installed

Всички необходими пакети се намират в директория Server на инсталационните медии на Oracle Linux. Инсталацията на липсващ пакет от съответната медия става така:
# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom

mount: block device /dev/cdrom is write-protected, mounting read-only
# cd /mnt/cdrom/Server/
# rpm -iv unixODBC-devel-2.2.11-7.1.i386.rpm

warning: unixODBC-devel-2.2.11-7.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing packages for installation...
unixODBC-devel-2.2.11-7.1
# cd /
# umount /dev/cdrom

След това се проверяват настройките на мрежата. Първо дали файла /etc/hosts участва в name resolving-а. Файла /etc/nsswitch.conf трябва да съдържа ред за hosts, който указва търсене тип files:
# cat /etc/nsswitch.conf | grep hosts
...
hosts:      files dns

Проверява се дали има зададено име на машината:
# hostname
ba

Следващата проверка е дали няма динамично зададен domainname:
# domainname
(none)

Задава се съответствие между IP адреса на машината и името и във файла /etc/hosts. Трябва да се получи така:
# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.100.16 myhost.us.mycompany.com myhost

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

За инсталация са необходими групите dba (групата на администраторите на базата) и oinstall (необходима само за инсталацията). Oracle 11g добавя и една нова група, към която спадат администраторите на ASM (Automatic Storage Management) ресурсите. Потребителя oracle, от който се стартира инсталацията, трябва да е член поне на oinstall и dba.

Първо създаваме групите:
# groupadd oinstall
# groupadd dba
# groupadd asadmin

Проверяваме дали има потребител oracle:
# id oracle
id: oracle: No such user

Създаваме потребителя:
# useradd -g oinstall -G dba oracle

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

Задаваме парола на потребителя oracle:
# passwd oracle
Changing password for user oracle.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

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

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

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

Parameter Value File
semmsl

semmns

semopm

semmni

250

32000

100

128

/proc/sys/kernel/sem
shmall 2097152 /proc/sys/kernel/shmall
shmmax Minimum of the following values:
- Half the size of the physical memory
- 4GB - 1 byte
/proc/sys/kernel/shmmax
shmmni 4096 /proc/sys/kernel/shmmni
file-max 512 * PROCESSES /proc/sys/fs/file-max
ip_local_port_range Minimum:1024
Maximum: 65000
/proc/sys/net/ipv4/ip_local_port_range
rmem_default 4194304 /proc/sys/net/core/rmem_default
rmem_max 4194304 /proc/sys/net/core/rmem_max
wmem_default 262144 /proc/sys/net/core/wmem_default
wmem_max 262144 /proc/sys/net/core/wmem_max

Настройките се записват във файла /etc/sysctl.conf. При мен необходимите промени бяха следните:
# tail -n 15 /etc/sysctl.conf
#kernel.shmmax = 4294967295
kernel.shmmax = 794820608

# Controls the maximum number of shared memory segments, in pages
#kernel.shmall = 268435456
kernel.shmall = 2097152

#Added for oracle 11g
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144

За да влязат в сила промените без рестарт се пуска следната команда:
# sysctl –p

Следват няколко настройки на shell, които засягат потребителя oracle. Трябва да се добавят следните редове към конфигурационните файлове:
# tail -n 5 /etc/security/limits.conf
oracle          soft    noproc          2047
oracle          hard    noproc          16384
orecle          soft    nofile          1024
oracle          hard    nofile          65536
# End of file

# tail -n 3 /etc/pam.d/login
#added for Oracle 11g
session    required     /lib/security/pam_limits.so
session    required     pam_limits.so

# tail -n 4 /etc/profile
if [ $USER = "oracle" ]; then
ulimit -u 16384 -n 65536
fi

# tail -n 2 /home/oracle/.bash_profile
umask 022

Интересното в 11g е, че според installation guide, преди да се стартира инсталацията трябва да се премахнат променливите ORACLE_SID, ORACLE_HOME и ORACLE_BASE от профила (ако има такива от по-рано). Добавянето им става по-късно, както съм описал във втората част на статията.

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

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

След това, вече като потребител oracle, разархивираме и пускаме инсталацията:
$ unzip linux_11gR1_database.zip
$ cd database
$ ./runInstaller

Инсталатора е графичен. За да стартира трябва runInstaller да се пусне при стартиран X или да се пренасочи X към някой друг компютър, на който е стартирна X средата. Пренасочването може да стане с
$ export DISPLAY=192.168.12.21:0

Първия прозорец ни примамва да инсталираме всичко по подразбиране. За по-добър контрол над инсталацията избрах Advanced installation.

Следва избор на директория, в която стои inventory и група, в която са потребителите, имащи права да пишат в него. Inventory е мястото, в което се описва инсталирания Oracle софтуер. По принцип няма проблем на една машина да работят различни версии и различни софтуери на oracle, като единственото, което ги свързва, е информацията в inventory.

След това избираме типа на инсталацията - Enterprise, Standard или Custom. Какво ще изберем зависи от целта и лиценза, които имаме.

В следващия прозорец избираме директорията, в която инсталираме. Идеологията е следната:
- ORACLE_BASE е директорията, в която стои всичкия инсталиран oralce софтуер
- ORACLE_HOME е под-директория, на ORACLE_BASE и съдържа точно един софтуер.
Идеята е, че на един компютър може да имаме, примерно Oracle Database 10g, Oracle Database 11g, Oracle Grid Control Agent и всякакъв друг oracle софтуер, като всички съжителстват съвсем безпроблемно. Инсталирани са под един ORACLE_BASE, но в различни ORACLE_HOME.

Следва проверка дали са изпълнени всички предварителни изисквания - инсталирани пакети, версия на ОС и ядрото, налично пространство, настройки на ядрото и мрежата и т.н. Ако е изпълнено всичко според Installation guide, не би трябвало да има проблем. Ако тук всичко е ОК, има много голям шанс инсталацията да завърши съвсем успешно. Ако дадена проверка не премине успешно, потребителя може да кликне чек-бокса срещу нея и тя става "User verified". Това е предупреждение, че Oracle Installer не харесва нещо, но ще се опита да инсталира каквото може.

След това избираме дали инсталатора трябва да създаде празна БД, да конфигурира ASM или просто да инсталира софтуера. Аз предпочитам последното, за да има разделение между грешките - ако гръмне създаването на БД (пример), това да не повлияе на изхода от самата инсталация. Създаването и настройката на БД са описани в следващата част на статията.

На следващият екран избираме ролите на създадените от нас групи в операционната система.

Следва обобщение (sumary) на избраното от нас. Тук натискаме бутона "Install" и стискаме палци всичко да мине безпроблемно (1, 2). И наистина, всичко минава. Oracle твърдят, че са се постарали доста да отстранят всякакви възможни бъгчета. И макар да е невъзможно да се предвидят всички възможни конфигурации от хардуер, софтуер и потребителски изисквания, във всяка следваща версия инсталатора става все по-здрав.

След като инсталацията завърши, инсталатора ни приканва да стартираме два скрипта с потребител root. Първия е необходим само при първа инсталация на Oracle софтуер на машината и засяга създаването на Inventory. Втория е свързан конкретно с инсталирания в момента продукт. Стартирането им става по следния начин:

$ su -
Password:
# cd /u01/app/oraInventory/
# ./orainstRoot.sh

Changing permissions of /u01/app/oraInventory to 770.
Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete

# cd /u01/app/oracle/product/11.1.0/db_1/
# ./root.sh
Running Oracle 11g root.sh script...
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME=  /u01/app/oracle/product/11.1.0/db_1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...

Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions.

Така стигаме до заветния екран, който ни казва, "честито, всичко мина ОК".

Следва създаване и конфигуриране на БД и настройки на мрежата. Тези неща са описани във втората част на статията. Моля не се притеснявайте да пишете въпроси и препоръки на мейла ми или като коментар към съответната статия в личния ми блог.

Явор Иванов