Необходимые файлы
- Архив с дистрибутивом Oracle 11.2.0.2 (например,
database-linux-x86-64-11.2.0.2.zip
); - Архив с библиотеками Oracle Instant Client 11.2.0.2 (например,
instantclient-basic-linux-x86-64-11.2.0.2.0.zip
); - Архив с заголовками для разработки Oracle Instant Client 11.2.0.2 SDK (например,
instantclient-sdk-linux-x86-64-11.2.0.2.0.zip
); - Архив с приложением sqlplus Oracle Instant Client 11.2.0.2 SQL*Plus (например,
instantclient-sqlplus-linux-x86-64-11.2.0.2.0.zip
).
Создание пользователя oracle
# groupadd -r oinstall && \ groupadd dba && \ useradd -r -g oinstall -G dba -s /bin/bash -d /opt/oracle -m -k /dev/null oracle
В случае, если в системе не существует группы nobody, ее необходимо создать:
# groupadd -r nobody
Также нужно добавить в группу dba некоторых пользователей:
# usermod -a -G dba nixon && \ usermod -a -G dba llama && \ usermod -a -G dba gordon && \ usermod -a -G dba fly && \ usermod -a -G dba lodkin
После этого необходимо добавить новый конфигурационный файл sudo /etc/sudoers.d/oracle
со следующим содержимым:
%dba ALL=(oracle) NOPASSWD: ALL
После добавления файла /etc/sudoers.d/oracle
следует изменить права доступа к нему:
# chmod 0440 /etc/sudoers.d/oracle
Конфигурирование ядра
Необходимо установить следующие значения параметров ядра.
kernel.shmall = $SHMALL kernel.shmmax = $SHMMAX kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 6815744 net.core.rmem_default = 262144 net.core.wmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_max = 1048576 fs.aio-max-nr = 1048576
$SHMALL
— количество страниц памяти. Оно равно размеру оперативной памяти, деленной на размер страницы памяти в системе. Получить это значение можно c помощью команды:
echo "$(free -b|grep Mem|awk '{print$2}')/$(getconf PAGE_SIZE)"|bc
$SHMMAX
— максимальное значение разделяемой области памяти в байтах. Рекомендуется устанавливать его в размере 1,5*N*SGA
, где N
— количество БД (инстансов) Oracle на сервере, SGA
— размер области SGA-памяти на БД (4 Гб = 4294967296 байт).
Если значения каких-либо параметров кроме SHMALL
в системе больше указанных, изменять их не требуется. Для проверки текущих значений параметров следует использовать вывод команды sysctl -a
. Например, для проверки значения параметра kernel.shmall
команда проверки будет выглядеть следующим образом:
# sysctl -a | grep kernel.shmall
Те параметры, чьи текущие значения в системе меньше минимальных необходимо добавить в файл /etc/sysctl.conf
. После изменения файла /etc/sysctl.conf
для применения новых параметров необходимо выполнить следующую команду:
# sysctl -p
Установка системных ограничений для пользователя oracle
В файл /etc/security/limits.conf
необходимо добавить следующее содержимое:
oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 64000
В файл /etc/pam.d/login
необходимо добавить следующую строку (если ее там нет):
session required pam_limits.so
Установка переменных окружения
В зависимости от дистрибутива необходимо произвести следующие действия.
- Gentoo Linux
Необходимо создать файл/etc/env.d/99oracle
со следующим содержимым:ORACLE_BASE="/opt/oracle" ORACLE_HOME="/opt/oracle/product/11.2.0.2" ORACLE_SID="$ORACLE_SID" ORACLE_OWNER="oracle" TNS_ADMIN="/etc/oracle" NLS_LANG="AMERICAN_RUSSIA.AL32UTF8" DISABLE_HUGETLBFS="1" PATH="/opt/oracle/product/11.2.0.2/bin" ROOTPATH="/opt/oracle/product/11.2.0.2/bin" TZ="$TZ"
$TZ
нужно заменить на часовой пояс системы (например,Europe/Moscow
),$ORACLE_SID
— название основной БД Oracle (будет создана отдельно и, как правило, совпадает с названием компании).
После этого нужно обновить системные переменные окружения следующей командой:# env-update && \ source /etc/profile
- Debian Linux
Необходимо добавить в файл/etc/environment
следующее содержимое:ORACLE_BASE="/opt/oracle" ORACLE_HOME="/opt/oracle/product/11.2.0.2" ORACLE_SID="$ORACLE_SID" ORACLE_OWNER="oracle" TNS_ADMIN="/etc/oracle" NLS_LANG="AMERICAN_RUSSIA.AL32UTF8" DISABLE_HUGETLBFS="1" TZ="$TZ"
$TZ
нужно заменить на часовой пояс системы (например,Europe/Moscow
),$ORACLE_SID
— название основной БД Oracle (будет создана отдельно и, как правило, совпадает с названием компании).
После этого нужно перевыполнить вход в систему, чтобы переменные окружения обновились. - Ubuntu Linux
Необходимо изменить в файле/etc/environment
значение переменнойPATH
, добавив в конец ее значения следующее содержимое:Также дополнительно необходимо добавить в этот файл следующее содержимое::/opt/oracle/product/11.2.0.2/bin
ORACLE_BASE="/opt/oracle" ORACLE_HOME="/opt/oracle/product/11.2.0.2" ORACLE_SID="$ORACLE_SID" ORACLE_OWNER="oracle" TNS_ADMIN="/etc/oracle" NLS_LANG="AMERICAN_RUSSIA.AL32UTF8" DISABLE_HUGETLBFS="1" TZ="$TZ"
$TZ
нужно заменить на часовой пояс системы (например,Europe/Moscow
),$ORACLE_SID
— название основной БД Oracle (будет создана отдельно и, как правило, совпадает с названием компании).
После этого нужно перевыполнить вход в систему, чтобы переменные окружения обновились. - Red Hat Enterprise Linux
В файл/etc/environment
необходимо добавить следующее содержимое:ORACLE_BASE="/opt/oracle" ORACLE_HOME="/opt/oracle/product/11.2.0.2" ORACLE_SID="$ORACLE_SID" ORACLE_OWNER="oracle" TNS_ADMIN="/etc/oracle" NLS_LANG="AMERICAN_RUSSIA.AL32UTF8" DISABLE_HUGETLBFS="1" PATH="$PATH" TZ="$TZ"
$TZ
нужно заменить на часовой пояс системы (например,Europe/Moscow
),$ORACLE_SID
— название основной БД Oracle (будет создана отдельно и, как правило, совпадает с названием компании).
$PATH
нужно заменить результатом выполнения команды:После этого нужно перевыполнить вход в систему, чтобы переменные окружения обновились.# echo $PATH:/opt/oracle/product/11.2.0.2/bin
Инсталляция Oracle
В зависимости от дистрибутива необходимо произвести следующие дополнительные действия.
- Gentoo Linux (x64)
Нужно установить следующие пакеты:После выполнения вышеуказанных команд требуется создать необходимые символические ссылки:# emerge openmotif libXtst libaio rpm && \ emerge app-emulation/emul-linux-x86-baselibs app-emulation/emul-linux-x86-xlibs app-emulation/emul-linux-x86-compat && \ USE="pic" emerge glibc binutils
Также необходимо установить OpenSSH-сервер с USE-флагом "X", если это еще не сделано:# ln -s /usr/bin/rpm /bin/rpm && \ ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so
# USE="X" emerge openssh
- Debian Linux (x64)
Нужно установить следующие пакеты:После выполнения вышеуказанных действий требуется создать необходимые символические ссылки:# apt-get install gcc libaio1 libstdc++5 lesstif2 lesstif2-dev libc6-i386 && \ apt-get install libc6-dev-i386 lib32stdc++6 lib32z1 ia32-libs sysstat && \ apt-get install rlwrap unixodbc unixodbc-dev elfutils rpm
# ln -s /usr/bin/awk /bin/awk && \ ln -s /usr/bin/rpm /bin/rpm && \ ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so && \ ln -s /usr/bin/basename /bin/basename
- CentOs Linux (x64)
Нужно установить следующие пакеты:После выполнения вышеуказанных действий требуется создать символическую ссылку:# yum install setarch-2* make-3* glibc-2* libaio-0* && \ yum install compat-libstdc++-33-3* compat-gcc-34-3* compat-gcc-34-c++-3* gcc-4* libXp-1* && \ yum install openmotif-2* compat-db-4*
# ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so
Далее следует извлечь архив с Oracle 11.2.0.2 во временную директорию и выполнить ssh-вход в систему с использованием "X11Forwarding
". Пример команды:
$ ssh -X user@server
Для запуска инсталлятора СУБД необходимо запустить установщик следующей командой (для пользователя должна быть возможность запуска приложений под пользователем oracle):
$ chmod o+r ~/.Xauthority && \ sudo -u oracle -E ./database/runInstaller -ignoreSysPrereqs
Желательно установить Enterprise Edition и включить поддержку русского языка.
При установке не требуется создание БД (выбрать пункт Install database software only
на шаге выбора варианта установки), поддержку Oracle RAC включать не нужно (выбрать пункт Single instance database installation
на шаге настройки Oracle Grid).
Путь до Oracle Base — /opt/oracle
Путь инсталляции — /opt/oracle/product/11.2.0.2
Путь до Oracle Inventory — /opt/oracle/oraInventory
На замечания установщика о не пройденных проверках готовности системы можно не обращать внимания.
По окончании установки необходимо выполнить следующие 2 файла от пользователя root:
# /opt/oracle/oraInventory/orainstRoot.sh && \ /opt/oracle/product/11.2.0.2/root.sh
Также требуется создать директорию /var/oradata
для пользователя oracle, в которой в дальнейшем будут храниться БД Oracle:
# mkdir /var/oradata && \ chmod 750 /var/oradata && \ chown oracle:oinstall /var/oradata
Создание конфигурационных файлов Oracle
Необходимо создать каталог /etc/oracle
, в котором будут лежать конфигурационные файлы:
# mkdir /etc/oracle
Далее в этом каталоге требуется создать следующие файлы:
- Конфигурационный файл прослушивателя
listener.ora
LISTENER = ( ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) SID_LIST_LISTENER = ( SID_LIST = (SID_DESC = (SID_NAME = $ORACLE_SID)(ORACLE_HOME = /opt/oracle/product/11.2.0.2)) )
$ORACLE_SID
нужно заменить на название основной БД Oracle (обязательно в нижнем регистре!). После создания нужно убрать разрешение на чтение данного файла для всех пользователей:# chmod o-r /etc/oracle/listener.ora
- Конфигурационный файл дескрипторов соединений
tnsnames.ora
$ORACLE_SID = ( DESCRIPTION = ( ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = $ORACLE_SID)) )
$ORACLE_SID
нужно заменить на название основной БД Oracle (обязательно в нижнем регистре!).
После создания файлов нужно поменять владельца директории /etc/oracle
и файлов в ней:
# chown -R oracle:oinstall /etc/oracle
Настройка автозапуска Oracle
В зависимости от типа дистрибутива необходимо произвести следующие действия.
- Gentoo Linux
Нужно создать следующие 2 файла в/etc/init.d
с соответствующим содержимым:ora.database
— управление БД Oracle#!/sbin/runscript # АСР "Гидра". Инициализационный скрипт БД Oracle # Автор: Петров Н. В. # (C) ООО "Латера Софтвер" # www.latera.ru | info@latera.ru # Зависимости depend() { need net } # Инициализация окружения function init_environment { source /etc/profile } # Запуск start() { ebegin "Starting Oracle Database" # Инициализация окружения init_environment # Запуск БД su $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" # Выход с результатом запуска eend $? } # Остановка stop() { ebegin "Stopping Oracle Database" # Инициализация окружения init_environment # Остановка БД su $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME" # Выход с результатом остановки eend $? }
ora.listener
— управление прослушивателем СУБД OracleПосле создания файлов необходимо выдать разрешение на их запуск и произвести установку автозапуска:#!/sbin/runscript # АСР "Гидра". Инициализационный скрипт прослушивателя СУБД Oracle # Автор: Петров Н. В. # (C) ООО "Латера Софтвер" # www.latera.ru | info@latera.ru # Зависимости depend() { need net } # Инициализация окружения function init_environment { source /etc/profile } # Запуск start() { ebegin "Starting Oracle Database" # Инициализация окружения init_environment # Запуск прослушивателя su $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start LISTENER" # Выход с результатом запуска eend $? } # Остановка stop() { ebegin "Stopping Oracle Database" # Инициализация окружения init_environment # Остановка прослушивателя su $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop LISTENER" # Выход с результатом остановки eend $? }
# chmod +x /etc/init.d/ora.* && \ rc-update add ora.database default && \ rc-update add ora.listener default
- Ubuntu Linux, Debian Linux
Нужно создать следующие 2 файла в/etc/init.d
с соответствующим содержимым:ora.database
— управление БД Oracle#!/bin/bash # АСР "Гидра". Инициализационный скрипт БД Oracle # Автор: Петров Н. В. # (C) ООО "Латера Софтвер" # www.latera.ru | info@latera.ru ### BEGIN INIT INFO # Provides: ora.database # Required-Start: $network # Required-Stop: $network # Should-Start: network-manager # Should-Stop: network-manager # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Oracle database ### END INIT INFO # Коды возврата скрипта RET_OK="0" RET_BAD_USAGE="1" RET_FAILED_RUN="2" # Подключение инит-функций . /lib/lsb/init-functions # Запись в вывод ошибок function echo_err { echo $@ >&2 } # Инициализация окружения function init_environment { . /etc/environment export ORACLE_HOME export ORACLE_OWNER } # Выполнение команды function run_cmd { # Выполнение команды eval $@ # Если выполнение было неудачным if [ $? != "0" ]; then # Завершение выполнения скрипта log_end_msg $RET_FAILED_RUN exit $RET_FAILED_RUN fi } # Действие на основе первого параметра вызова скрипта case "$1" in # Запуск start) log_daemon_msg "Starting Oracle Database" # Инициализация окружения init_environment # Запуск БД run_cmd "su $ORACLE_OWNER -c \"$ORACLE_HOME/bin/dbstart $ORACLE_HOME\"" # Выход c успехом log_end_msg $RET_OK exit $RET_OK ;; # Остановка stop) log_daemon_msg "Stopping Oracle Database" # Инициализация окружения init_environment # Остановка БД run_cmd "su $ORACLE_OWNER -c \"$ORACLE_HOME/bin/dbshut $ORACLE_HOME\"" # Выход c успехом log_end_msg $RET_OK exit $RET_OK ;; # Перезапуск restart) # Остановка $0 stop # Запуск $0 start # Выход с успехом exit $RET_OK ;; # Любое другое действие *) # Вывод сообщения с вариантами использования echo_err "Usage: $0 (start|stop|restart)" # Выход с неудачей exit $RET_BAD_USAGE ;; esac
ora.listener
— управление прослушивателем СУБД OracleПосле создания файлов необходимо выдать разрешение на их запуск и произвести установку автозапуска:#!/bin/bash # АСР "Гидра". Инициализационный скрипт прослушивателя СУБД Oracle # Автор: Петров Н. В. # (C) ООО "Латера Софтвер" # www.latera.ru | info@latera.ru ### BEGIN INIT INFO # Provides: ora.listener # Required-Start: $network # Required-Stop: $network # Should-Start: network-manager ora.database # Should-Stop: network-manager ora.database # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Oracle listener ### END INIT INFO # Коды возврата скрипта RET_OK="0" RET_BAD_USAGE="1" RET_FAILED_RUN="2" # Подключение инит-функций . /lib/lsb/init-functions # Запись в вывод ошибок function echo_err { echo $@ >&2 } # Инициализация окружения function init_environment { . /etc/environment export ORACLE_HOME export ORACLE_OWNER } # Выполнение команды function run_cmd { # Выполнение команды eval $@ # Если выполнение было неудачным if [ $? != "0" ]; then # Завершение выполнения скрипта log_end_msg $RET_FAILED_RUN exit $RET_FAILED_RUN fi } # Действие на основе первого параметра вызова скрипта case "$1" in # Запуск start) log_daemon_msg "Starting Oracle listener" # Инициализация окружения init_environment # Запуск прослушивателя run_cmd "su $ORACLE_OWNER -c \"$ORACLE_HOME/bin/lsnrctl start LISTENER\"" # Выход c успехом log_end_msg $RET_OK exit $RET_OK ;; # Остановка stop) log_daemon_msg "Stopping Oracle listener" # Инициализация окружения init_environment # Остановка прослушивателя run_cmd "su $ORACLE_OWNER -c \"$ORACLE_HOME/bin/lsnrctl stop LISTENER\"" # Выход c успехом log_end_msg $RET_OK exit $RET_OK ;; # Перезапуск restart) # Остановка $0 stop # Запуск $0 start # Выход с успехом exit $RET_OK ;; # Любое другое действие *) # Вывод сообщения с вариантами использования echo_err "Usage: $0 (start|stop|restart)" # Выход с неудачей exit $RET_BAD_USAGE ;; esac
# chmod +x /etc/init.d/ora.* && \ update-rc.d ora.database defaults && \ update-rc.d ora.listener defaults
- Red Hat Enterprise Linux
Нужно создать следующие 2 файла в/etc/init.d
с соответствующим содержимым:ora.database
— управление БД Oracle#!/bin/bash # АСР "Гидра". Инициализационный скрипт БД Oracle # Автор: Петров Н. В. # (C) ООО "Латера Софтвер" # www.latera.ru | info@latera.ru # Коды возврата скрипта RET_OK="0" RET_BAD_USAGE="1" RET_FAILED_RUN="2" # Запись в вывод ошибок function echo_err { echo $@ >&2 } # Инициализация окружения function init_environment { . /etc/environment export ORACLE_HOME export ORACLE_OWNER } # Выполнение команды function run_cmd { # Выполнение команды eval $@ # Если выполнение было неудачным if [ $? != "0" ]; then # Завершение выполнения скрипта log_end_msg $RET_FAILED_RUN exit $RET_FAILED_RUN fi } # Действие на основе первого параметра вызова скрипта case "$1" in # Запуск start) echo "Starting Oracle Database..." # Инициализация окружения init_environment # Запуск БД run_cmd "su $ORACLE_OWNER -c \"$ORACLE_HOME/bin/dbstart $ORACLE_HOME\"" # Выход c успехом exit $RET_OK ;; # Остановка stop) echo "Stopping Oracle Database..." # Инициализация окружения init_environment # Остановка БД run_cmd "su $ORACLE_OWNER -c \"$ORACLE_HOME/bin/dbshut $ORACLE_HOME\"" # Выход c успехом exit $RET_OK ;; # Перезапуск restart) # Остановка $0 stop # Запуск $0 start # Выход с успехом exit $RET_OK ;; # Любое другое действие *) # Вывод сообщения с вариантами использования echo_err "Usage: $0 (start|stop|restart)" # Выход с неудачей exit $RET_BAD_USAGE ;; esac
ora.listener
— управление прослушивателем СУБД OracleПосле создания файлов необходимо выдать разрешение на их запуск и произвести установку автозапуска:#!/bin/bash # АСР "Гидра". Инициализационный скрипт прослушивателя СУБД Oracle # Автор: Петров Н. В. # (C) ООО "Латера Софтвер" # www.latera.ru | info@latera.ru # Коды возврата скрипта RET_OK="0" RET_BAD_USAGE="1" RET_FAILED_RUN="2" # Запись в вывод ошибок function echo_err { echo $@ >&2 } # Инициализация окружения function init_environment { . /etc/environment export ORACLE_HOME export ORACLE_OWNER } # Выполнение команды function run_cmd { # Выполнение команды eval $@ # Если выполнение было неудачным if [ $? != "0" ]; then # Завершение выполнения скрипта log_end_msg $RET_FAILED_RUN exit $RET_FAILED_RUN fi } # Действие на основе первого параметра вызова скрипта case "$1" in # Запуск start) echo "Starting Oracle listener..." # Инициализация окружения init_environment # Запуск прослушивателя run_cmd "su $ORACLE_OWNER -c \"$ORACLE_HOME/bin/lsnrctl start LISTENER\"" # Выход c успехом exit $RET_OK ;; # Остановка stop) echo "Stopping Oracle listener..." # Инициализация окружения init_environment # Остановка прослушивателя run_cmd "su $ORACLE_OWNER -c \"$ORACLE_HOME/bin/lsnrctl stop LISTENER\"" # Выход c успехом exit $RET_OK ;; # Перезапуск restart) # Остановка $0 stop # Запуск $0 start # Выход с успехом exit $RET_OK ;; # Любое другое действие *) # Вывод сообщения с вариантами использования echo_err "Usage: $0 (start|stop|restart)" # Выход с неудачей exit $RET_BAD_USAGE ;; esac
# chmod +x /etc/init.d/ora.* && \ update-rc.d ora.database defaults && \ update-rc.d ora.listener defaults
Запуск Oracle
Следует выполнить следующую команду по запуску СУБД Oracle:
# /etc/init.d/ora.listener start
Установка Oracle Instant Client
Библиотеки Oracle Instant Client необходимы для обеспечения связи приложений с СУБД Oracle. Архивы с Oracle Instant Client 11.2.0.2, Oracle Instant Client 11.2.0.2 SDK (используется при установке модулей Oracle для интерпретаторов) и Oracle Instant Client 11.2.0.2 SQL*Plus необходимо распаковать в директорию /opt/oracle
, например:
# unzip instantclient-basic-linux-x86-64-11.2.0.2.0.zip -d /opt/oracle && \ unzip instantclient-sdk-linux-x86-64-11.2.0.2.0.zip -d /opt/oracle && \ unzip instantclient-sqlplus-linux-x86-64-11.2.0.2.0.zip -d /opt/oracle
После разархивирования необходимо создать символические ссылки для libclntsh.so.11.1
и libocci.so.11.1
:
# cd /opt/oracle/instantclient_11_2 && \ ln -s libclntsh.so.11.1 libclntsh.so && \ ln -s libocci.so.11.1 libocci.so
Далее нужно изменить владельца файлов в директории /opt/oracle/instantclient_11_2
на пользователя oracle:
# chown -R oracle:oinstall /opt/oracle/instantclient_11_2
В завершение необходимо добавить файл с путем к Oracle Instant Client в /etc/ld.so.conf.d
и переконфигурировать привязки к динамическим библиотекам:
# echo /opt/oracle/instantclient_11_2 > /etc/ld.so.conf.d/oracle.conf && \ ldconfig
Завершающий этап
По завершении всех действий необходимо связаться с ответственным за внедрение сотрудником Latera Software, которому следует сообщить о готовности СУБД Oracle к созданию БД.