Архив с дистрибутивом Oracle 11.2.0.2 (например, database-linux-x86-64-11.2.0.2.zip
).
# groupadd -r oinstall && \ groupadd dba && \ useradd -r -g oinstall -G dba -s /bin/bash -d /opt/oracle -m oracle |
В случае, если в системе не существует группы nobody, ее необходимо создать:
# groupadd -r nobody |
Также нужно добавить в группу dba некоторых пользователей, чтобы у них было право выполнять команды под пользователем oracle:
# 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 && \ usermod -a -G dba tischenko && \ usermod -a -G dba netflash && \ usermod -a -G dba sda |
После этого необходимо добавить новый конфигурационный файл sudo /etc/sudoers.d/oracle
и выдать специальные права доступа к нему:
# echo "%dba ALL=(oracle) NOPASSWD: ALL" > /etc/sudoers.d/oracle && \ chmod 0440 /etc/sudoers.d/oracle |
root@hydra:~# aptitude install bc |
Для установки и сохранения необходимых параметров ядра следует воспользоваться следующей командой:
# setparam() { val=`cat /proc/sys/${1//.//}`; if [ "$1" = "kernel.sem" ] || [ "$2" -gt "$val" ]; then val="$2"; fi; echo "$1 = $val" >> /etc/sysctl.d/oracle.conf; } echo -n "Memory per DB [GB]: " && read DB_MEM && \ echo -n "DB count: " && read DB_COUNT && \ setparam "kernel.shmall" `echo "$(free -b|grep Mem|awk '{print$2}')/$(getconf PAGE_SIZE)"|bc` && \ setparam "kernel.shmmax" `echo "$DB_COUNT*$DB_MEM*1024*1024*1024*3/2"|bc` && \ setparam "kernel.shmmni" 4096 && \ setparam "kernel.sem" "250 32000 100 128" && \ setparam "fs.file-max" 6815744 && \ setparam "fs.aio-max-nr" 1048576 && \ setparam "net.core.rmem_default" 262144 && \ setparam "net.core.wmem_default" 4194304 && \ setparam "net.core.rmem_max" 1048576 && \ setparam "net.core.wmem_max" 1048576 && \ sysctl -p /etc/sysctl.d/oracle.conf |
В ходе выполнения команды выше будет запрошено количество памяти на одну БД (рекомендуемое значение — 4 Гб) и число устанавливаемых БД на сервере (в большинстве случаев — 1).
В файл /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:/opt/oracle/product/11.2.0.2/OPatch" ROOTPATH="/opt/oracle/product/11.2.0.2/bin" TZ="$TZ" |
$TZ
нужно заменить на часовой пояс системы (например, Europe/Moscow
), $ORACLE_SID
— название основной БД (будет создана отдельно и, как правило, совпадает с названием компании).
После этого нужно обновить системные переменные окружения следующей командой:
# 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
— название основной БД (будет создана отдельно и, как правило, совпадает с названием компании).
Также необходимо добавить в файл /etc/profile
перед строкой
export PATH |
следующее содержимое:
PATH="$PATH:/opt/oracle/product/11.2.0.2/bin:/opt/oracle/product/11.2.0.2/OPatch" |
После этого нужно перевыполнить вход в систему, чтобы переменные окружения обновились.
Ubuntu Linux
Необходимо изменить в файле /etc/environment
значение переменной PATH
, добавив в конец ее значения следующее содержимое:
:/opt/oracle/product/11.2.0.2/bin:/opt/oracle/product/11.2.0.2/OPatch |
Также дополнительно необходимо добавить в этот файл следующее содержимое:
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
— название основной БД (будет создана отдельно и, как правило, совпадает с названием компании).
После этого нужно перевыполнить вход в систему, чтобы переменные окружения обновились.
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
— название основной БД (будет создана отдельно и, как правило, совпадает с названием компании).
$PATH
нужно заменить результатом выполнения команды:
# echo $PATH:/opt/oracle/product/11.2.0.2/bin:/opt/oracle/product/11.2.0.2/OPatch |
После этого нужно перевыполнить вход в систему, чтобы переменные окружения обновились.
В зависимости от дистрибутива ОС необходимо произвести следующие дополнительные действия.
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 |
После выполнения вышеуказанных команд требуется создать необходимые символические ссылки:
# ln -s /usr/bin/rpm /bin/rpm && \ ln -s /usr/bin/arch /bin/arch && \ ln -s /usr/bin/sort /bin/sort && \ ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so |
Также необходимо установить OpenSSH-сервер с USE-флагом "X", если это еще не сделано:
# USE="X" emerge openssh |
Ubuntu Linux (x64), Debian Linux (x64) squeeze
Нужно установить следующие пакеты:
# 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 make g++ |
После выполнения вышеуказанных действий требуется создать необходимые символические ссылки:
# ln -s /usr/bin/awk /bin/awk && \ ln -s /usr/bin/arch /bin/arch && \ ln -s /usr/bin/sort /bin/sort && \ 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 |
Debian Linux (x64) wheeze
Нужно установить следующие пакеты:
# dpkg --add-architecture i386 ; aptitude update ; aptitude install libstdc++5 libstdc++5:i386 libc6-dev:i386 x11-utils libmotif4 libaio1 lesstif2 lesstif2-dev lib32stdc++6 lib32z1 sysstat rlwrap unixodbc unixodbc-dev elfutils rpm make g++ gcc |
Далее создать ссылки
# mkdir /usr/lib64 ; ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/libpthread_nonshared.a && \ ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/ && \ ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/ && \ ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib64/ && \ ln -s /usr/bin/awk /bin/awk && \ ln -s /usr/bin/rpm /bin/rpm && \ ln -s /usr/bin/arch /bin/arch && \ ln -s /usr/bin/sort /bin/sort && \ ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so && \ ln -s /usr/bin/basename /bin/basename |
и изменить файл /etc/fstab добавить строку и перезагрузить машину. Размер указать в половину оперативной памяти
# See "man tmpfs" and https://forums.oracle.com/forums/thread.jspa?messageID=9057494 none /dev/shm tmpfs defaults,size=16G 0 0 |
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
На замечания установщика о не пройденных проверках готовности системы можно не обращать внимания.
Замечание для Debian Wheezy:
при возникновении ошибки с agent nmhs решить ее как здесь https://cn.forums.oracle.com/forums/thread.jspa?threadID=1091616
при установке может возникнуть ощибка с установкой emagent. Нажимаем Continue.
По окончании установки необходимо выполнить следующие 2 файла от пользователя root:
# /opt/oracle/oraInventory/orainstRoot.sh && \ /opt/oracle/product/11.2.0.2/root.sh |
Также требуется создать директорию /var/oradata
для пользователя oracle, в которой в дальнейшем будут храниться БД Oracle:
# install -d -ooracle -goinstall -m750 /var/oradata |
Замечание для Debian Wheezy: после установки необходимо проделать следующие действия:
oracle$ cd $ORACLE_HOME/sysman/lib ; make -f ins_emagent.mk "agent" |
Будет ошибка, необходимо скопировать последнюю команду gcc и добавить в конец команды
-lnmemso -lcore11 -lnnz11 |
и выполнить последнюю команду заново.
Справочно: http://www.debian-administration.org/article/656/Installing_Oracle11_on_Debian_Squeeze_and_Lenny
Необходимо создать каталог /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
нужно заменить на название основной БД (обязательно в нижнем регистре!). После создания нужно убрать права на чтение данного файла для всех пользователей:
# chmod o-r /etc/oracle/listener.ora |
После создания файла нужно поменять владельца директории /etc/oracle
:
# chown -R oracle:oinstall /etc/oracle |
В зависимости от дистрибутива ОС необходимо произвести следующие действия:
/etc/init.d
с соответствующим содержимым:ora.database
— управление БД
#!/sbin/runscript # АСР "Гидра". Инициализационный скрипт БД Oracle # Автор: Петров Н. В. # (C) ООО "Латера Софтвер" # www.latera.ru | info@latera.ru # Зависимости depend() { need net logger hostname clock } # Запуск start() { ebegin "Starting Oracle Database" # Запуск БД su $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" # Выход с результатом запуска eend $? } # Остановка stop() { ebegin "Stopping Oracle Database" # Остановка БД su $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME" # Выход с результатом остановки eend $? } |
ora.listener
— управление прослушивателем СУБД
#!/sbin/runscript # АСР "Гидра". Инициализационный скрипт прослушивателя СУБД Oracle # Автор: Петров Н. В. # (C) ООО "Латера Софтвер" # www.latera.ru | info@latera.ru # Зависимости depend() { need net logger hostname clock after ora.database } # Запуск start() { ebegin "Starting Oracle listener" # Запуск прослушивателя su $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start LISTENER" # Выход с результатом запуска eend $? } # Остановка stop() { ebegin "Stopping Oracle listener" # Остановка прослушивателя 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 |
/etc/init.d
с соответствующим содержимым:ora.database
— управление БД
#!/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
— управление прослушивателем СУБД
#!/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 |
/etc/init.d
с соответствующим содержимым:ora.database
— управление БД
#!/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" # Запись в вывод ошибок 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
— управление прослушивателем СУБД
#!/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" # Запись в вывод ошибок 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.* && \ chkconfig --add ora.database \ chkconfig --add ora.listener |
Следует выполнить следующую команду по запуску прослушивателя СУБД:
# /etc/init.d/ora.listener start |
По завершении всех действий необходимо связаться с ответственным за внедрение сотрудником Latera Software, которому следует сообщить о готовности СУБД Oracle к созданию БД.