...
Создание пользователя oracle
Code Block |
---|
# groupadd -r oinstall && \
groupadd dba && \
useradd -r -g oinstall -G dba -s /bin/bash -d /opt/oracle -m oracle
|
В случае, если в системе не существует группы nobody, ее необходимо создать:
Code Block |
---|
# groupadd -r nobody
|
Также нужно добавить в группу dba некоторых пользователей, чтобы у них было право выполнять команды под пользователем oracle:
Code Block |
---|
# 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 sda |
После этого необходимо добавить новый конфигурационный файл sudo /etc/sudoers.d/oracle
и выдать специальные права доступа к нему:
Code Block |
---|
# echo "%dba ALL=(oracle) NOPASSWD: ALL" > /etc/sudoers.d/oracle && \
chmod 0440 /etc/sudoers.d/oracle
|
Конфигурирование ядра
Code Block |
---|
root@hydra:~# apt-get install bc
|
Для установки и сохранения необходимых параметров ядра следует воспользоваться следующей командой:
Code Block |
---|
# 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" 262144 && \
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
|
...
В файл /etc/security/limits.conf
необходимо добавить следующее содержимое:
Code Block |
---|
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 64000
|
В файл /etc/pam.d/login
необходимо добавить следующую строку (если ее там нет):
Code Block |
---|
session required pam_limits.so
|
...
В зависимости от дистрибутива необходимо произвести следующие действия.
Gentoo Linux
Необходимо создать файл/etc/env.d/99oracle
со следующим содержимым:Code Block 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
— название основной БД (будет создана отдельно и, как правило, совпадает с названием компании).
После этого нужно обновить системные переменные окружения следующей командой:Code Block # env-update && \ source /etc/profile
Debian Linux
Необходимо добавить в файл/etc/environment
следующее содержимое:Code Block 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
перед строкойCode Block export PATH
следующее содержимое:
Code Block PATH="$PATH:/opt/oracle/product/11.2.0.2/bin"
После этого нужно перевыполнить вход в систему, чтобы переменные окружения обновились.
Ubuntu Linux
Необходимо изменить в файле/etc/environment
значение переменнойPATH
, добавив в конец ее значения следующее содержимое:Code Block :/opt/oracle/product/11.2.0.2/bin
Также дополнительно необходимо добавить в этот файл следующее содержимое:
Code Block 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
необходимо добавить следующее содержимое:Code Block 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
нужно заменить результатом выполнения команды:Code Block # echo $PATH:/opt/oracle/product/11.2.0.2/bin
После этого нужно перевыполнить вход в систему, чтобы переменные окружения обновились.
Инсталляция Oracle
В зависимости от дистрибутива ОС необходимо произвести следующие дополнительные действия.
Gentoo Linux (x64)
Нужно установить следующие пакеты:Code Block # 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
После выполнения вышеуказанных команд требуется создать необходимые символические ссылки:
Code Block # ln -s /usr/bin/rpm /bin/rpm && \ ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so
Также необходимо установить OpenSSH-сервер с USE-флагом "X", если это еще не сделано:
Code Block # USE="X" emerge openssh
Ubuntu Linux (x64), Debian Linux (x64)
Нужно установить следующие пакеты:Code Block # 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++
После выполнения вышеуказанных действий требуется создать необходимые символические ссылки:
Code Block # 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)
Нужно установить следующие пакеты:Code Block # 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*
После выполнения вышеуказанных действий требуется создать символическую ссылку:
Code Block # ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so
Далее следует извлечь архив с Oracle 11.2.0.2 во временную директорию и выполнить ssh-вход в систему с использованием "X11Forwarding
". Пример команды:
Code Block |
---|
$ ssh -X user@server
|
Для запуска инсталлятора СУБД необходимо запустить установщик следующей командой (пользователю должно быть дано право выполнять команды от имени пользователя oracle):
Code Block |
---|
$ chmod o+r ~/.Xauthority && \
sudo -u oracle -E ./database/runInstaller -ignoreSysPrereqs
|
...
По окончании установки необходимо выполнить следующие 2 файла от пользователя root:
Code Block |
---|
# /opt/oracle/oraInventory/orainstRoot.sh && \
/opt/oracle/product/11.2.0.2/root.sh
|
Также требуется создать директорию /var/oradata
для пользователя oracle, в которой в дальнейшем будут храниться БД Oracle:
Code Block |
---|
# mkdir /var/oradata && \
chmod 750 /var/oradata && \
chown oracle:oinstall /var/oradata
|
...
Необходимо создать каталог /etc/oracle
, в котором будет лежать конфигурационный файл:
Code Block |
---|
# mkdir /etc/oracle
|
Далее в этом каталоге требуется создать конфигурационный файл прослушивателя listener.ora
Code Block |
---|
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
нужно заменить на название основной БД (обязательно в нижнем регистре!). После создания нужно убрать права на чтение данного файла для всех пользователей:
Code Block |
---|
# chmod o-r /etc/oracle/listener.ora
|
После создания файла нужно поменять владельца директории /etc/oracle
:
Code Block |
---|
# chown -R oracle:oinstall /etc/oracle
|
...
- Gentoo Linux
Нужно создать следующие 2 файла в/etc/init.d
с соответствующим содержимым:ora.database
— управление БДCode Block collapse true #!/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
— управление прослушивателем СУБДCode Block collapse true #!/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 $? }
После создания файлов необходимо выдать разрешение на их запуск и добавить в автозапуск:
Code Block # 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
— управление БДCode Block collapse true #!/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
— управление прослушивателем СУБДCode Block collapse true #!/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
После создания файлов необходимо выдать разрешение на их запуск и добавить в автозапуск:
Code Block # 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
— управление БДCode Block collapse true #!/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
— управление прослушивателем СУБДCode Block collapse true #!/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
После создания файлов необходимо выдать разрешение на их запуск и добавить в автозапуск:
Code Block # chmod +x /etc/init.d/ora.* && \ update-rc.d ora.database defaults && \ update-rc.d ora.listener defaults
...
Следует выполнить следующую команду по запуску прослушивателя СУБД:
Code Block |
---|
# /etc/init.d/ora.listener start
|
...