Необходимые файлы
- Архив с дистрибутивом 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 oracle
|
В случае, если в системе не существует группы 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
для применения новых параметров необходимо выполнить следующую команду:
Установка системных ограничений для пользователя 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
|
После выполнения вышеуказанных команд требуется создать необходимые символические ссылки:
# ln -s /usr/bin/rpm /bin/rpm && \
ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so
|
Также необходимо установить OpenSSH-сервер с USE-флагом "X", если это еще не сделано:
- Ubuntu Linux (x64), Debian Linux (x64)
Нужно установить следующие пакеты:
# apt-get install gcc libaio1 libstdc++5 lesstif2 lesstif2-dev libc6-i686 && \
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/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
". Пример команды:
Для запуска инсталлятора СУБД необходимо запустить установщик следующей командой (для пользователя должна быть возможность запуска приложений под пользователем 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
, в котором будут лежать конфигурационные файлы:
Далее в этом каталоге требуется создать следующие файлы:
- Конфигурационный файл прослушивателя
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 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
— управление прослушивателем СУБД Oracle
#!/sbin/runscript
# АСР "Гидра". Инициализационный скрипт прослушивателя СУБД Oracle
# Автор: Петров Н. В.
# (C) ООО "Латера Софтвер"
# www.latera.ru | info@latera.ru
# Зависимости
depend() {
need net
}
# Запуск
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
|
- 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 к созданию БД.