...
Создание пользователя 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 lodkintischenko && \ usermod -a -G dba tischenko netflash && \ usermod -a -G dba sda && \ usermod -a -G dba matsak && \ usermod -a -G dba chornobay |
После этого необходимо добавить новый конфигурационный файл 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-getaptitude 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" 2621441048576 && \ setparam "net.core.rmem_default" 262144 && \ setparam "net.core.wmem_default" 4194304262144 && \ setparam "net.core.rmem_max" 10485764194304 && \ setparam "net.core.wmem_max" 1048576 && \ sysctl -p /etc/sysctl.d/oracle.conf |
...
В файл /etc/security/limits.conf
необходимо добавить следующее содержимое:
Code Block |
---|
oracle soft nproc 20474096 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 64000 65536 oracle soft stack 10240 |
В файл /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"
profile$TZ
нужно заменить на часовой пояс системы (например,Europe/Moscow
),$ORACLE_SID
— название основной БД (будет создана отдельно и, как правило, совпадает с названием компании).
Также необходимо добавить в файл/etc/
profile
перед строкойCode Block export PATH
следующее содержимое:
Code Block PATH="$PATH:/opt/oracle/product/11.2.0.2/bin:/opt/oracle/product/11.2.0.2/OPatch"
После этого нужно перевыполнить вход в систему, чтобы переменные окружения обновились.
Ubuntu Linux
Необходимо изменить в файле/etc/environment
значение переменнойPATH
, добавив в конец ее значения следующее содержимое:Code Block :/opt/oracle/product/11.2.0.2/bin:/opt/oracle/product/11.2.0.2/OPatch
Также дополнительно необходимо добавить в этот файл следующее содержимое:
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:/opt/oracle/product/11.2.0.2/OPatch
После этого нужно перевыполнить вход в систему, чтобы переменные окружения обновились.
Инсталляция Oracle
В зависимости от дистрибутива ОС необходимо произвести следующие дополнительные действия.
- Gentoo
Ubuntu Linux (x64), Debian Linux (x64) squeeze
Нужно установить следующие пакеты:Code Block # emergeapt-get openmotifinstall libXtstgcc libaio rpm libaio1 libstdc++5 lesstif2 lesstif2-dev libc6-i386 && \ emerge app-emulation/emul-linux-x86-baselibs app-emulation/emul-linux-x86-xlibs app-emulation/emul-linux-x86-compat apt-get install libc6-dev-i386 lib32stdc++6 lib32z1 ia32-libs sysstat && \ USE="pic" emerge glibc binutils apt-get install rlwrap unixodbc unixodbc-dev elfutils rpm make g++
После выполнения вышеуказанных
команддействий требуется создать необходимые символические ссылки:
Также необходимо установить OpenSSH-сервер с USE-флагом "X", если это еще не сделано:Code Block # 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
Ubuntu Linux (x64),Code Block # USE="X" emerge openssh
&& \ ln -s /usr/bin/basename /bin/basename
Debian Linux (x64) wheeze
Нужно установить следующие пакеты:Code Block # apt-getaptitude install gcc libaio1 libstdc++5 x11-utils libmotif4 libaio1 lesstif2 lesstif2-dev libc6-i386 && \ apt-get install libc6-dev-i386 lib32stdc++6 lib32z1 ia32-libs sysstat lib32stdc++6 lib32z1 sysstat rlwrap unixodbc unixodbc-dev elfutils rpm make g++ gcc
Далее создать ссылки
После выполнения вышеуказанных действий требуется создать необходимые символические ссылки:Code Block # mkdir /usr/lib64 ; ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/libpthread_nonshared.a && \ ln apt-get install rlwrap unixodbc unixodbc-dev elfutils rpm make g++
Code Block # -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 добавить строку и перезагрузить машину. Размер указать в половину оперативной памяти
Code Block # 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)
Нужно установить следующие пакеты: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
|
...
На замечания установщика о не пройденных проверках готовности системы можно не обращать внимания.
Замечание для Debian Wheezy:
при возникновении ошибки с agent nmhs решить ее как описано ниже (Замечание для Debian Wheezy). Подробнее тут: https://community.oracle.com/message/4396359#4396359
при установке может возникнуть ощибка с установкой emagent. Нажимаем Continue.
По окончании установки необходимо выполнить следующие 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 install -d -ooracle -goinstall -m750 /var/oradata && \ chmod 750 /var/oradata && \ chown oracle:oinstall /var/oradata |
Замечание для Debian Wheezy: после установки необходимо проделать следующие действия:
Code Block |
---|
oracle$ cd $ORACLE_HOME/sysman/lib ;
make -f ins_emagent.mk "agent" |
Будет ошибка, необходимо скопировать последнюю команду gcc и добавить в конец команды
Code Block |
---|
-lnmemso -lcore11 -lnnz11 |
и выполнить последнюю команду заново.
Справочно: http://www.debian-administration.org/article/656/Installing_Oracle11_on_Debian_Squeeze_and_Lenny
Создание конфигурационного файла Oracle
Необходимо создать каталог /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
- Ubuntu Linux, Debian Linux
#!/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 ### 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#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 ### 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
После создания файлов необходимо выдать разрешение на их запуск и добавить в автозапуск:
Code Block
~]# chmod +x /etc/init.d/ora.* && \ chkconfig
update-rc.d--add ora.database
defaults && \ chkconfig
update-rc.d--add ora.listener
defaults
Запуск Oracle
Следует выполнить следующую команду по запуску прослушивателя СУБД:
Code Block |
---|
# /etc/init.d/ora.listener start
|
Завершающий этап
По завершении всех действий необходимо связаться с ответственным за внедрение сотрудником Latera Software, которому следует сообщить о готовности СУБД Oracle к созданию БД.