2008-08-08

Установка Oracle8i на RHEL3


Установка Oracle8i на RHEL3

Итак, необходимо установить Oracle 8.1.7.4 на RHEL3.

Создаем группы для oracle. Действия выполняются под root:

root> groupadd oinstall

root> groupadd dba

root> groupadd oper

Далее создаем пользователя oracle. Действие выполняется под root:

root> useradd -g oinstall -G dba,oper oracle

root> passwd oracle

root> chown oracle:oinstall /u01 -R

root> chown oracle:oinstall /u02 -R

Далее предполагается, что программное обеспечение oracle будет устанавливаться в /u01, ORACLE_HOME=/u01/ora81.

Логинимся под пользователем oracle. Редактируем ~/.bash_profile. С самого начала он имеет следующий вид:

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

unset USERNAME

Меняем на следующее:

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

# User specific environment and startup programs

export LD_ASSUME_KERNEL=2.2.5

export LANG="en_US.UTF-8"

export JAVA_HOME=/usr/local/java

export ORACLE_BASE=/u01

export ORACLE_HOME=/u01/ora81

export NLS_LANG="AMERICAN_CIS.CL8MSWIN1251"

export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

if [ "${LD_LIBRARY_PATH:-}" == "" ]; then

LD_LIBRARY_PATH=${ORACLE_HOME}/lib:/usr/lib:/usr/local/lib

else

LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${LD_LIBRARY_PATH}

fi

export LD_LIBRARY_PATH

PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin

export PATH

unset USERNAME

Далее опять логинимся под root. Необходимо установить корректные параметры ядра для нормальной работы oracle. В файл /etc/sysctl.conf добавляем следующее:

kernel.shmmax = 4096000000

kernel.shmmni = 100

kernel.sem = 600 32000 100 128

fs.file-max = 131072

Если там такие параметры уже были, то исправляем на указанные выше. Применяем измененные параметры:

root> sysctl -p

Проверяем, установлен ли пакет compat-gcc-7.3-2.96 (rpm -q compat-gcc). Если нет, устанавливаем, после чего делаем следующее:

root> mv /usr/bin/gcc /usr/bin/gcc323

root> ln –s /usr/bin/gcc296 /usr/bin/gcc

После этого заходим в KDE под пользователем oracle. Далее предполагается, что установочные файлы oracle 8.1.7 располагаются в папке /home/install/tmp/oracle.8.1.7, патчсет 8.1.7.4 находится в папке /home/install/tmp/patch.8.1.7.4, и у пользователя oracle есть полный доступ на /home/install. Если это не так, то в консоли от имени root делаем следующее:

> chown oracle:oinstall /home/install/tmp -R

После этого консоль root можно закрыть.

Далее от имени oracle даем права на запуск Installer-а. Как это не странно, но в дистрибутиве oracle на запуск инсталлера ни у кого прав нет...

oracle> chmod ug+x /home/install/tmp/oracle.8.1.7/runInstaller

oracle> chmod ug+x /home/install/tmp/oracle.8.1.7/install/linux/runInstaller/

Сразу скажу, что для успеха дальнейших действий по установке oracle необходимо иметь такую штуку, как glibc-2.1.3-stubs.tar.gz. Мне эту штуку подарил добрый парень Денисков Игорь, за что ему огромное спасибо, так же как и подарил набор патчей, о которых речь пойдет ниже.

Теперь нам необходим набор патчей, которые нам понадобятся при установке. Создаем их. Далее предполагается, что создаваемые нами патчи мы размещаем в каталоге /home/install/tmp/rhel3.

Создаем патч для root.sh. Называем его root.sh.patch (/home/install/tmp/rhel3/root.sh.patch)

--- /usr/local/oracle/product/8.1.7/root.sh 2005-10-18 16:39:48.000000000 +0300

+++ root.sh 2005-10-18 16:42:14.000000000 +0300

@@ -99,7 +99,7 @@

TEE=/usr/bin/tee

TMPORATB=/tmp/oratab$$

TEST=/usr/bin/test

-RMF=/bin/rm -f

+RMF="/bin/rm -f"

#

# If LOG is not set, then send output to /dev/null

#

@@ -153,7 +153,7 @@

$ECHO "ORACLE_SID is not set."| $TEE -a $LOG

fi

-RUID=`/usr/bin/id|$AWK -F\( '{print $2}'|$AWK -F\) '{print $1}`

+RUID=`/usr/bin/id|$AWK -F\( '{print $2}'|$AWK -F\) '{print $1}'`

if [ ${RUID} != "root" ];then

$ECHO "You must be logged in as root to run root.sh."| $TEE -a $LOG

$ECHO "Log in as root and restart root.sh execution."| $TEE -a $LOG

Создаем патч для загадочной штуки ins_oemagent.mk. Называем его ins_oemagent.mk.patch (/home/install/tmp/rhel3/ins_oemagent.mk.patch). Вот его содержимое:

--- ins_oemagent.mk.orig 2005-10-18 17:29:37.000000000 +0300

+++ ins_oemagent.mk 2005-10-18 17:31:11.000000000 +0300

@@ -17,7 +17,7 @@

RDBMSHOME = $(ORACLE_HOME)/rdbms/

RDBMSLIB = $(ORACLE_HOME)/rdbms/lib/

RDBMSBIN = $(ORACLE_HOME)/rdbms/bin/

-LDFLAGS = $(STDMODE) -L$(LIBHOME) -L$(ORACLE_HOME)/rdbms/lib -L$(ORACLE_HOME)/network/lib

+LDFLAGS = $(STDMODE) -L$(LIBHOME)/stubs -L$(LIBHOME) -L$(ORACLE_HOME)/rdbms/lib -L$(ORACLE_HOME)/network/lib

LDCCOM = $(LINK) $(LDFLAGS) $(EXOSFLAGS) -o $@

Создаем патч для загадочной штуки ins_net_server.mk. Называем его ins_net_server.mk.patch (/home/install/tmp/rhel3/ins_net_server.mk.patch). Вот его содержимое:

--- ins_net_server.mk.orig 2005-10-18 17:32:50.000000000 +0300

+++ ins_net_server.mk 2005-10-18 17:33:39.000000000 +0300

@@ -21,7 +21,7 @@

RDBMSBIN = $(ORACLE_HOME)/rdbms/bin/

MAKEFILE = $(ORACLE_HOME)/network/lib/ins_net_server.mk

-LDFLAGS = -L$(LIBHOME) -L$(RDBMSLIB) -L$(NETWORKLIB)

+LDFLAGS = -L$(LIBHOME)/stubs -L$(LIBHOME) -L$(RDBMSLIB) -L$(NETWORKLIB)

LDCCOM = $(LINK) -Wl,-rpath,$(ORACLE_HOME)/lib $(LDFLAGS) $(EXOSFLAGS) -o $@

ECHO = $(ORACLE_HOME)/bin/echodo

Создаем патч для загадочной штуки genagtsh. Называем его genagtsh.patch (/home/install/tmp/rhel3/genagtsh.patch). Вот его содержимое:

--- genagtsh.orig 2005-10-18 17:35:04.000000000 +0300

+++ genagtsh 2005-10-18 17:36:41.000000000 +0300

@@ -132,8 +132,7 @@

# Linker command and options

-LD="ld -G -L${ORACLE_HOME}/lib" # shared library link command

-LD_OPT="-h ${AGENT_LIBNAME}" # name inserted into library

+LD="gcc -shared -fpic -L${ORACLE_HOME}/lib/stubs -L${ORACLE_HOME}/lib" # shared library link command

LD_OUT="-o ${LIB_NAME}" # output specification

Все, необходимый набор патчей подготовили. Поехали дальше.

Собственно говоря, мы должны щас находится в KDE под oracle. Если нет, то нужно чтоб было так. Под пользователем oracle запускаем runInstaller:

oracle> /home/install/tmp/oracle.8.1.7/runInstaller

Ставим программное обеспечение oracle. В процессе установки будет предложено выполнить скрипт orainstRoot.sh. Выполняем. На ошибки компиляции внимания не обращаем, так и должно быть. Когда нас попросят выполнить скрипт root.sh – останавливаемся и делаем следующее:

oracle> patch /u01/ora81/root.sh /home/install/tmp/rhel3/root.sh.patch

После этого выполняем root.sh:

oracle> /u01/ora81/root.sh

Продолжаем процесс установки. Игнорируем все ошибки – мы их потом исправим.

Затем накатываем патч 8.1.7.4. Ждем первой ошибки связывания:

Error in invoking target relink of makefile /u01/ora81/precomp/lib/ins_precomp.mk

Покидаем наш любимый инсталлятор оракла, берем бубен и....

Разворачиваем glibc-2.1.3-stubs.tar.gz в /u01/ora81 и ставим:

oracle> /u01/ora81/setub_stubs.sh

И вот теперь пришло время воспользоваться всеми написанными ранее патчами, не считая root.sh.patch, который мы уже использовали:

oracle> patch /u01/ora81/network/lib/ins_oemagent.mk /home/install/tmp/rhel3/ins_oemagent.mk.patch

oracle> patch /u01/ora81/network/lib/ins_net_server.mk /home/install/tmp/rhel3/ins_net_server.mk.patch

oracle> patch /u01/ora81/bin/genagtsh /home/install/tmp/rhel3/genagtsh.patch

oracle> cd /u01/ora81/network/lib

oracle> make -f ins_oemagent.mk install

oracle> make -f ins_net_server.mk install

oracle> cd /u01/ora81/rdbms/lib

oracle> make -f ins_rdbms.mk iextproc

Теперь необходимо пересобрать libagtsh.so.1.0:

oracle> cd /u01/ora81/lib

oracle> genagtsh libagtsh.so.1.0

oracle> ln -sf libagtsh.so.1.0 libagtsh.so

Теперь возвращаемся к нашему инсталлеру, в котором у нас висит ошибка связывания, нажимаем там retry, и дальше все должно быть без проблем.

ВСЁ!!! На этом нелегкий процесс установки можно считать законченным...

Комментариев нет: