Установка Oracle 10G На Centos 6.2 X64

На днях мне пришлось установить на эту ось такой продукт, который официально не поддерживается Oracle. CentOS для меня — достаточно неизведанный Linux, поэтому я погуглил, как его установить.

Я нашел несколько инструкций, к сожалению, ни одна из них не была той самой инструкцией, которой можно было бы тупо следовать, чтобы совершить это действие.

Все требовало доработок, поиска недостающих библиотек и т.д. В итоге я написал что-то вроде HOWTO с учетом всех поправок.

Возможно, кому-то будет интересно.

P.S. Истинные поклонники Oracle, прошу не судить строго, я знаю, что установка этой базы на неподдерживаемые ОС чревата и т.д. Но так как у меня есть практический опыт работы с этой СУБД в нескольких "несертифицированных" ОС и опыт решения очень небольшого количества коллизий при работе - до сих пор считаю требование "сертификации" ОС сильно преувеличенным.

Подключаемся под root и работаем в его среде:

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   

su -

Установите необходимые пакеты (все есть в стандартном репозитории, с небольшими вкраплениями):

yum install libXp gcc make setarch libaio glibc-devel glibc.i686 libXp.so.6 libXt.so.6 libXtst.so.6 compat-libstdc++-33.x86_64 binutils elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel glibc-headers gcc gcc-c++ libaio-devel libaio libgcc libstdc++ make sysstat unixODBC unixODBC-devel unzip glibc-devel.i686 libgcc.i686 binutils compat-db libstdc++ gdbm make ksh libaio-devel libXtst xorg-x11-utils openmotif openmotif.i686 libaio.i686 libaio-devel.i686 compat-glibc.x86_64

Создайте пользователей и группы:

groupadd oinstall groupadd dba useradd -d /opt/oracle -g oinstall -G dba -s /bin/bash -m oracle passwd oracle useradd nobody

Настраиваем параметры системы на совместимость.

Отредактируйте /etc/sysctl.conf, добавьте и измените следующие строки:

kernel.sem = 250 32000 100 128 fs.file-max = 6815744 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 fs.aio-max-nr = 1048576

и примените конфигурацию:

sysctl -p

Настраиваем ограничения на количество файловых процессов для пользователя oracle (так как он будет владельцем процессов СУБД).

Отредактируйте /etc/security/limits.conf, добавьте и измените следующие строки:

oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536

Отредактируйте /etc/pam.d/login, добавьте/измените:

session required /lib64/security/pam_limits.so session required pam_limits.so

Также создаем файл профиля (vi /etc/profile.d/custom.sh), добавляем в него текст:

#!/bin/bash if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi

Добавьте права исполнения:

chmod +x /etc/profile.d/custom.sh

Временно меняем описание версии ОС, чтобы Oracle не ругался при установке.

Можно, конечно, при установке использовать ключ ignoreSysPrereqs, что подойдет не всем.



cp /etc/redhat-release /etc/redhat-release.6 echo redhat-4 > /etc/redhat-release

Чтобы у других пользователей ОС и владельцев процессов, которым может понадобиться доступ к базе данных, не возникло с этим затруднений, добавьте в общий профиль (/etc/profile) в конце следующие строки:

ORACLE_BASE=/opt/oracle ORACLE_HOME=/opt/oracle/database ORACLE_SID=navdb export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH=$ORACLE_HOME/bin:$ORACLE_HOME/lib:$ORACLE_HOME/lib32:$PATH:.

export PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$ORACLE_HOME/lib32:/lib:/usr/lib CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib export LD_LIBRARY_PATH CLASSPATH export NLS_LANG=AMERICAN_AMERICA.UTF8

Всё, root-доступ нам пока не нужен, подключаемся как пользователь oracle. Установить в /opt/oracle/database

cd /opt/oracle cpio -idmv < database_linux_x86_64.cpio cd database .

/runInstaller

Устанавливаем.

В процессе установки может возникнуть ошибка: ins_emdb (ошибка вызова целевого «сборщика»…), проигнорируйте ее и нажмите «Продолжить».

В процессе установки следуем инструкциям установщика, вам нужно будет выполнить два скрипта из-под рута, выполняем их.

Ура? Еще нет. Помним, что мы изменили описание релиза ОС, возвращаем старое описание обратно (выполняем из-под рута):

mv /etc/redhat-release.6 /etc/redhat-release

Заходим в oracle, пытаемся создать базу данных через dbca, при создании получаем ошибку:

ORA-27125: unable to create shared memory segment

Давайте разрешим это досадное недоразумение.

Мы осуществляем

cd $ORACLE_HOME/bin mv oracle oracle.bin

создайте файл $ORACLE_HOME/bin/oralce со следующим содержимым:

#!/bin/bash export DISABLE_HUGETLBFS=1 exec $ORACLE_HOME/bin/oracle.bin $@

дайте права на выполнение файла:

chmod +x oracle

Теперь у нас все работает. Остается только спроектировать Oracle и прослушиватель как демонов, чтобы они запускались при загрузке системы.

Для прослушивателя создайте скрипт (/etc/init.d/listener) со следующим содержимым:

#!/bin/bash # # chkconfig: 345 51 49 # description: startup and shutdown the Oracle 10g listener # echo "Oracle 10g listener start/stop/restart/status" ORA_OWNER=oracle ORACLE_BASE=/opt/oracle ORACLE_HOME=/opt/oracle/database ORACLE_SID=navdb export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH=$ORACLE_HOME/bin:$PATH:.

export PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$ORACLE_HOME/lib32:/lib:/usr/lib CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib export LD_LIBRARY_PATH CLASSPATH alias sqlplus='rlwrap sqlplus' export NLS_LANG=AMERICAN_AMERICA.UTF8 case $1 in start) echo -n "Starting oracle listener: " su - $ORA_OWNER -c "$ORACLE_HOME/bin/lsnrctl start" echo ;; stop) echo -n "Shutting down oracle listener: " su - $ORA_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop" echo ;; status) echo -n "Status of oracle listener: " su - $ORA_OWNER -c "$ORACLE_HOME/bin/lsnrctl status" echo ;; restart) echo -n "Restarting oracle listener:" $0 stop $0 start echo ;; *) echo "Usage: listener [ start | stop | restart | status ]" exit 1 esac exit 0

Правим права, добавляем в автозапуск

chmod 700 listener chkconfig listener on

Для базы данных создайте скрипт (/etc/init.d/oracle) следующего содержания:

#!/bin/bash # # chkconfig: 345 51 49 # description: startup and shutdown the Oracle 10g instance # # Run-level Startup script for the Oracle Instance, Listener, and Web Interface echo "Oracle 10g database start/stop/restart" ORA_OWNER=oracle ORACLE_BASE=/opt/oracle ORACLE_HOME=/opt/oracle/database ORACLE_SID=navdb export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH=$ORACLE_HOME/bin:$PATH:.

export PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$ORACLE_HOME/lib32:/lib:/usr/lib CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib export LD_LIBRARY_PATH CLASSPATH export NLS_LANG=AMERICAN_AMERICA.UTF8 # if the executables do not exist -- display error if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ] then echo "Oracle startup: cannot start" exit 1 fi # depending on parameter -- startup, shutdown, restart # of the instance and listener or usage display case "$1" in start) # Oracle listener and instance startup echo -n "Starting Oracle: " su $ORA_OWNER -c "$ORACLE_HOME/bin/lsnrctl start" su $ORA_OWNER -c $ORACLE_HOME/bin/dbstart touch /var/lock/oracle # su $ORA_OWNER -c "$ORACLE_HOME/bin/emctl start dbconsole" echo "OK" ;; stop) # Oracle listener and instance shutdown echo -n "Shutdown Oracle: " su $ORA_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop" su $ORA_OWNER -c $ORACLE_HOME/bin/dbshut rm -f /var/lock/oracle # su $ORA_OWNER -c "$ORACLE_HOME/bin/emctl stop dbconsole" echo "OK" ;; restart) $0 stop $0 start ;; *) echo "Usage: `basename $0` start|stop|restart" exit 1 esac exit 0

Правим права, добавляем в автозапуск

chmod 700 oracle chkconfig oracle on

Чтобы автоматически запускать необходимые экземпляры, отредактируйте /etc/oratab, измените

navdb:/opt/oracle/database:N

на

navdb:/opt/oracle/database:Y

Собственно это все :) Теги: #базы данных #администрирование Linux #howto #oracle

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.