OracleALS40

Материал из ALT Linux Wiki


Установка Oracle DBMS на ALTLinux Server 4.0 VPS

Проверялись версии:

  • Oracle Database 11g Release 1 (11.1.0.6.0)
  • Oracle Database 10g Release 2 (10.2.0.1.0)

Предупреждение! Данный вариант установки СУБД Oracle не может быть рекомендован для рабочих серверов. Цель данного HOWTO выявить все необходимые зависимости ПО от Oracle и возможные «подводные камни» при его установке. Поэтому весь процесс установки сделан в изолированной среде виртуального сервера с минимально возможным набором установленных пакетов.

Исходные данные: установленный и настроенный ALTLinux Server 4.0 со всеми официальными обновлениями. Дистрибутив Oracle Database 10g или 11g доступный для скачивания на Oracle Technology Network.

Рекомендуется использовать пакет oracle-preinstall версии не ниже чем 0.4-alt7

Подготовка виртуального сервера (VPS)

Настройка хост-системы.

Прежде всего, подготовим хост-систему. Отредактируем файл /etc/vz/dists/scripts/functions и укажем в нем правильные значения для переменных $FAKEGATEWAY и $FAKEGATEWAYNET. Значения этих переменных зависят от настроек вашей сети.

Установите правильные параметры ядра в файле /etc/sysctl.conf хост-системы (см. /usr/share/doc/oracle-preinstall-<versoin>/README). Отредактируйте файл /etc/sysconfig/oracle установив правильные значения для переменных $ORACLE_BASE и $ORACLE_HOME.

Создание виртуального сервера

Через Web-интерфейс альтератора создаем новый профиль oracle10g-database. В список обязательных пакетов этого профиля добавляем:


  • altlinux-release
  • apt
  • apt-conf-server
  • etcnet
  • libstdc++
  • net-tools
  • openssh-server (опционально)
  • oracle-preinstall
  • rootfiles (опционально)
  • startup
  • twm (выбран как наиболее простой оконный менеджер с минимумом зависимостей)
  • vnc-server
  • xorg-x11-server-common
  • xorg-x11-xfs

Замечу, что профиль для виртуального сервера включает в себя только те пакеты, которые непосредственно используется в процессе установки или работы Oracle. Все остальные пакеты будут установлены по зависимостям вышеперечисленных.

На основе получившегося профиля, создайте шаблон с тем же именем oracle10g-database (дабы не путаться). Шаблон представляет из себя полный набор устанавливаемых пакетов, которые остаётся только развернуть в нужном каталоге. Создание шаблона занимает некоторое время и зависит от производительности машины. Вы можете посмотреть текущее состояние шаблона, кликнув на соответствующую ссылку.

Когда шаблон будет готов, создайте новый виртуальный сервер с именем oracle и IP-адресом отличающимся от адреса хост-системы.

Отредактируйте таблицу системных ресурсов своего виртуального сервера. Ниже приведены минимальные значения некоторых параметров:


  • PRIVVMPAGES="1050000:1145430"
  • SHMPAGES="65536:65536"
  • NUMPROC="192:192"
  • PHYSPAGES="0:2147483647"
  • VMGUARPAGES="6144:2147483647"
  • OOMGUARPAGES="6144:2147483647"
  • TCPSNDBUF="327680:532480"
  • TCPRCVBUF="638976:1048576"
  • NUMFILE="2048:2048"
  • DISKSPACE="2097152:2306868"

Теперь запустите VPS

# vzctl start 101

Примечание.

В процессе создания шаблона VPS мы получили пустой каталог пользователя oracle. Это не совсем удобно. Поэтому, чтобы иметь более комфортное окружение, можете скопировать настройки bash из домашнего каталога пользователя root.

# cp -a /root/.bash* /root/.i18n oracle/
# chown oracle:oinstall /home/oracle/.bash* /home/oracle/.i18n

Подготовка сервера VNC

При установке и настройке Oracle нам понадобится X-сервер для запуска некоторых графических утилит. В этом случае мы можем воспользоваться либо X-сервером рабочей станции, подключившись к серверу через ssh с ключиком -X, либо установив X-сервер прямо внутри VPS. Удалённый доступ к такому X-серверу можно будет обеспечить с помощью VNC. Опишем второй вариант так как вариант с ssh во-первых, не требует дополнительных действий, а во-вторых, он применим только если у вас есть достаточно надёжное соединение с сервером. Например локальная сеть.

Таким образом, мы можем обойтись одним только сервером VNC не устанавливая SSH внутри виртуального сервера, что и было отмечено на этапе подготовки профиля VPS.

Внутри VPS получите права пользователя oracle и создайте конфигурацию для VNC:

# su - oracle
$ vncserver
You will require a password to access your desktops.
Password: 
Verify:   
xauth:  creating new authority file /home/oracle/.Xauthority
New 'X' desktop is database.example.net:1
Creating default startup script /home/oracle/.vnc/xstartup
Starting applications specified in /home/oracle/.vnc/xstartup
Log file is /home/oracle/.vnc/db.example.org:1.log

Конфигурация готова. Остановите VNC-сервер. В дальнейшем мы будем запускать его только как сервис

$ vncserver -kill :1
$ exit

Отредактируйте файл /etc/sysconfig/vncservers примерно таким образом:

VNCSERVERS="1:oracle"

Запустите сервисы xfs и vncserver

# service xfs start
# service vncserver start

Включайте эти сервисы только когда вам нужно воспользоваться графическими утилитами Oracle. В штатном режиме эксплуатации эти сервисы не нужны и их можно выключать. Подключитесь к имеющемуся серверу с помощью vncviewer с соответствующим паролем.

$ vncviewer db.example.org:1
Connected to RFB server, using protocol version 3.3
Performing standard VNC authentication
Password: 
Authentication successful

Запуск Oracle

Установка базы данных

В процессе установки у вас обязательно возникнет ошибка линковки. Не пугайтесь, к сожалению это нормально. Данная ошибка связана с тем, что Oracle не обеспечивает правильный порядок линковки, что по умолчанию запрещено в дистрибутивах ALT начиная с v4.0.

Мы не будем исправлять ошибки Oracle а просто обойдём их, разрешив сборку в неправильной последовательности. Для этого нам необходимо передать линковщику параметр --no-as-needed. Очевидно было бы использовать для этого переменную $LDFLAGS. Однако тут проявляется ещё одна особенность Oracle. Во всех make-файлах переменная $LDFLAGS переопределяется без учёта предыдущего значения. Таким образом, этой переменной воспользоваться не получится. Мне удалось вычислить что переменная $COMPSOBJS нигде не инициализируется. Поэтому нужный нам параметр мы можем передать через эту переменную, что мы и сделаем перед запуском инсталятора.

Только в одном месте это не будет работать — в скрипте $ORACLE_HOME/bin/genorasdksh. Вот здесь-то инсталятор и выдаст ошибку. Это место придётся исправлять на ходу. Патч с исправлениями есть в документации к пакету oracle-preinstall.

Прежде всего необходимо определить переменные $ORACLE_BASE и $ORACLE_HOME. Возьмём их значения из файла /etc/sysconfig/oracle

$ . /etc/sysconfig/oracle
$ export ORACLE_BASE ORACLE_HOME

Для правильной работы gcc установите переменную $COMPSOBJS:

$ export COMPSOBJS="-Wl,--no-as-needed"

Запустите инсталятор Oracle и выполняйте установку в соответствии с документацией. После заполнения всех форм, начнётся процесс копирования файлов и затем линковки. В процессе линковки возникнет ошибка приблизительно следующего содержания:

Error in invoking target 'all_no_orcl' of makefile $ORACLE_HOME/rdbms/lib/ins_rdbms.mk. See log file for details.

При появлении этого сообщения поправьте файл $ORACLE_HOME/bin/genorasdksh воспользовавшись редактором или утилитой patch.

$ cd $ORACLE_HOME
$ patch -p0 < /usr/share/doc/oracle-preinstall-<version>/Oracle10g_ALT40.patch

После этого вернитесь в программу установки и нажмите кнопку Retry.

Дальнейшие действия

После установки сервера Oracle необходимо настроить listener с помощью программы netca и потом создать базу данных программой dbca. Последним шагом будет редактирование файла /etc/oratab где в соответствующей строке нужно будет последним параметром указать Y. Это будет означать что данную базу данных нужно запускать при старте системы. Когда это будет сделано, можно стартовать базу данных и listener

# service oracle-db start
# service oracle-lsnr start

При необходимости включите эти сервисы в начальную загрузку системы

# chkconfig oracle-db on
# chkconfig oracle-lsnr on