OracleALS40
Установка 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 и выполняйте установку в соответствии с документацией. После заполнения всех форм, начнётся процесс копирования файлов и затем линковки. В процессе линковки возникнет ошибка приблизительно следующего содержания:
При появлении этого сообщения поправьте файл $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