...
- Архив с дистрибутивом Oracle 1011.2.0.12 (например,
10201_database_-linux_-x86_-64-11.cpio.gz2.0.2.zip
); - Архив с патчем библиотеками Oracle 10Instant Client 11.2.0.42 (например,
p6810189_10204_Linux-instantclient-basic-linux-x86-64-11.2.0.2.0.zip
); - Архив с библиотеками заголовками для разработки Oracle Instant Client 1011.2.0.52 SDK (например,
basic-10instantclient-sdk-linux-x86-64-11.2.0.52.0-linux-x64.zip
); - Архив с заголовками для разработки приложением sqlplus Oracle Instant Client 1011.2.0.5 SDK2 SQL*Plus (например,
sdk-10instantclient-sqlplus-linux-x86-64-11.2.0.52.0-linux-x64.zip
).
Создание пользователя oracle
...
После этого необходимо добавить в новый конфигурационный файл sudo /etc/sudoers
(редактируется с помощью команды visudo
) следующую строку.d/oracle
со следующим содержимым:
Code Block |
---|
%dba ALL=(oracle) NOPASSWD: ALL |
После добавления файла /etc/sudoers.d/oracle
следует изменить права доступа к нему:
Code Block |
---|
# chmod 0440 /etc/sudoers.d/oracle
|
Конфигурирование ядра
Необходимо установить следующие значения параметров ядра.
Code Block |
---|
kernel.shmall = $SHMALL kernel.shmmax = $SHMMAX kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 655366815744 net.core.rmem_default = 262144 net.core.wmem_default = 262144 net.core.rmem_max = 2621444194304 net.core.wmem_max = 262144 1048576 fs.aio-max-nr = 1048576 |
$SHMALL
— количество страниц памяти. Оно равно размеру оперативной памяти, деленной на размер страницы памяти в системе. Получить это значение можно c помощью команды:
...
$SHMMAX
— максимальное значение разделяемой области памяти в байтах. Рекомендуется устанавливать его в размере 1,5*N*SGA
, где N
— количество БД (инстансов) Oracle на сервере, SGA
— размер области SGA-памяти на инстанс БД (4 Гб = 4294967296 байт).
...
В файл /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/1011.2.0.42" ORACLE_SID="$ORACLE_SID" ORACLE_OWNER="oracle" TNS_ADMIN="/etc/oracle" NLS_LANG="AMERICAN_RUSSIA.AL32UTF8" DISABLE_HUGETLBFS="1" PATH="/opt/oracle/product/1011.2.0.42/bin" ROOTPATH="/opt/oracle/product/1011.2.0.42/bin" TZ="$TZ"
$TZ
нужно заменить на часовой пояс системы (например,Europe/Moscow
),$ORACLE_SID
— на идентификатор основного инстанса (БД) название основной БД Oracle (будет создан создана отдельно и, как правило, совпадает с названием компании).
После этого нужно обновить системные переменные окружения следующей командой:Code Block # env-update && \ source /etc/profile
- Debian Linux
Необходимо добавить в этот файл следующее содержимое: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
— название основной БД Oracle (будет создана отдельно и, как правило, совпадает с названием компании).
После этого нужно перевыполнить вход в систему, чтобы переменные окружения обновились. - Ubuntu Linux
Необходимо изменить в файле/etc/environment
значение переменнойPATH
, добавив в конец ее значения следующее содержимое:
Также дополнительно необходимо добавить в этот файл следующее содержимое:Code Block :/opt/oracle/product/1011.2.0.42/bin
Code Block ORACLE_BASE="/opt/oracle" ORACLE_HOME="/opt/oracle/product/1011.2.0.42" 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
необходимо добавить следующее содержимое:Code Block ORACLE_BASE="/opt/oracle" ORACLE_HOME="/opt/oracle/product/1011.2.0.42" 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
нужно заменить результатом выполнения команды:
После этого нужно перевыполнить вход в систему, чтобы переменные окружения обновились.Code Block # echo $PATH:/opt/oracle/product/1011.2.0.42/bin
...
- 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
Также необходимо установить OpenSSH-сервер с USE-флагом "X", если это еще не сделано:Code Block # ln -s /usr/bin/rpm /bin/rpm && \ ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so
Code Block # USE="X" emerge openssh
- Ubuntu Debian Linux (x64)
Нужно установить следующие пакеты:
Также необходимо установить пакет libstdc++5 с помощью, например, следующей команды: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
После выполнения вышеуказанных действий требуется создать необходимые символические ссылки:Code Block # dpkg -i libstdc++5_3.3.6-18_amd64.deb
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 1011.2.0.12 во временную директорию и выполнить ssh-вход в систему с использованием "X11Forwarding
". Пример команды:
...
Для запуска инсталлятора СУБД необходимо запустить установщик следующей командой (для пользователя должна быть запись в файле sudoers
о возможности возможность запуска приложений под пользователем oracle):
Code Block |
---|
$ chmod o+r ~/.Xauthority && \
sudo -u oracle -E ./database/runInstaller -ignoreSysPrereqs
|
Желательно установить Enterprise Edition и включить поддержку русского языка (добавляется на этапе выбора типа установки).
Название инсталляции — OraDb10gR2
Путь инсталляции — /opt/oracle/product/10.2.0.4
При установке не требуется создание БД (выбрать пункт Install database Software software only
на шаге выбора конфигурационных опций). На факт того, что установщик не может произвести необходимые проверки системы можно не обращать внимания. При установке допускается следующая ошибка (в диалоговом окне ошибки нажать «Continue»):
...
варианта установки), поддержку 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:
Code Block |
---|
# /opt/oracle/oraInventory/orainstRoot.sh && \ /opt/oracle/product/1011.2.0.42/root.sh |
Также требуется создать директорию /var/oradata
для пользователя oracle, в которой в дальнейшем будут храниться инстансы ( БД ) Oracle:
Code Block |
---|
# mkdir /var/oradata && \ chmod 750 /var/oradata && \ chown oracle:oinstall /var/oradata |
Установка патча Oracle 10.2.0.4
Аналогично установке Oracle 10.2.0.1 следует извлечь архив с Oracle 10.2.0.4 во временную директорию и при помощи ssh-соединения с "X11Forwarding
" под пользователем oracle необходимо запустить установщик следующей командой:
Code Block |
---|
$ chmod o+r ~/.Xauthority && \
sudo -u oracle ./Disk1/runInstaller -ignoreSysPrereqs
|
Название инсталляции — OraDb10gR2
Путь инсталляции — /opt/oracle/product/10.2.0.4
На факт того, что установщик не может произвести необходимые проверки системы можно не обращать внимания. По окончании установки необходимо выполнить файл root.sh
от пользователя root:
Code Block |
---|
# /opt/oracle/product/10.2.0.4/root.sh
|
Создание конфигурационных файлов 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/1011.2.0.42)) )
$ORACLE_SID
нужно заменить на идентификатор основного инстанса (БД) название основной БД Oracle (обязательно в нижнем регистре!). После создания нужно убрать разрешение на чтение данного файла для всех пользователей:Code Block # chmod o-r /etc/oracle/listener.ora
- Конфигурационный файл дескрипторов соединений
tnsnames.ora
Code Block $ORACLE_SID = ( DESCRIPTION = ( ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = $ORACLE_SID)) )
$ORACLE_SID
нужно заменить на идентификатор основного инстанса (БД) название основной БД Oracle (обязательно в нижнем регистре!).
...
- Gentoo Linux
Нужно создать следующие 2 файла в/etc/init.d
с соответствующим содержимым:ora.database
Code Block bash bash #!/sbin/runscript # ---------------------------------------------------------------------- # File: /etc/init.d/ora.database # Purpose: Startup Oracle Database(s) defined in /etc/oratab # ---------------------------------------------------------------------- depend() { need net logger hostname clock } start() { source /etc/profile if [ ! -f $ORACLE_HOME/bin/dbstart ] ; then echo "Oracle not started (no dbstart script)" return 1 fi ebegin "Starting Oracle" /bin/su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" eend $? "Failed to start Oracle" } stop() { source /etc/profile if [ ! -f $ORACLE_HOME/bin/dbshut ] ; then echo "Oracle not stopped (no dbshut script)" return 1 fi ebegin "Stopping Oracle" /bin/su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME" eend $? "Failed to stop Oracle" }
ora.listener
После создания файлов необходимо выдать разрешение на их запуск и произвести установку автозапуска:Code Block bash bash #!/sbin/runscript #---------------------------------------------------------------------- # File: /etc/init.d/ora.listener # Purpose: Startup Oracle Listeners # ---------------------------------------------------------------------- depend() { need net after ora.database } start() { source /etc/profile if [ ! -f $ORACLE_HOME/bin/lsnrctl ] ; then echo "Oracle Listeners not started (no lsnrctl script)" return 1 fi ebegin "Starting Oracle Listeners" /bin/su $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start LISTENER" eend $? "Failed to start Oracle Listeners" } stop() { source /etc/profile if [ ! -f $ORACLE_HOME/bin/lsnrctl ] ; then echo "Oracle Listeners not stopped (no lsnrctl script)" return 1 fi ebegin "Stopping Oracle Listeners" /bin/su $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop LISTENER" eend $? "Failed to stop Oracle Listeners" }
Code Block # chmod +x /etc/init.d/ora.* && \ rc-update add ora.database default && \ rc-update add ora.listener default
- Ubuntu Debian Linux, Red Hat Enterprise Linux
Нужно создать следующие 2 файла в/etc/init.d
с соответствующим содержимым:ora.database
Code Block bash bash #!/bin/bash # ---------------------------------------------------------------------- # File: /etc/init.d/ora.database # Purpose: Startup Oracle Database(s) defined in /etc/oratab # ---------------------------------------------------------------------- case "$1" in start) . /etc/environment export ORACLE_HOME export ORACLE_OWNER export ORACLE_BASE export TNS_ADMIN export NLS_LANG export DISABLE_HUGETLBFS export TZ if [ ! -f $ORACLE_HOME/bin/dbstart ] ; then echo "Oracle not started (no dbstart script)" exit 1 fi echo "Starting Oracle..." /bin/su $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" exit $? ;; stop) . /etc/environment export ORACLE_HOME export ORACLE_OWNER export ORACLE_BASE export TNS_ADMIN export NLS_LANG export DISABLE_HUGETLBFS export TZ if [ ! -f $ORACLE_HOME/bin/dbshut ] ; then echo "Oracle not stopped (no dbshut script)" exit 1 fi echo "Stopping Oracle..." /bin/su $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME" exit $? ;; restart) $0 stop $0 start exit $? ;; *) echo "Usage: $0 (start|stop|restart)" exit 2 ;; esac
ora.listener
После создания файлов необходимо выдать разрешение на их запуск и произвести установку автозапуска:Code Block bash bash #!/bin/bash # ---------------------------------------------------------------------- # File: /etc/init.d/ora.listener # Purpose: Startup Oracle Listeners # ---------------------------------------------------------------------- case "$1" in start) . /etc/environment export ORACLE_HOME export ORACLE_OWNER export ORACLE_BASE export TNS_ADMIN export NLS_LANG export DISABLE_HUGETLBFS export TZ if [ ! -f $ORACLE_HOME/bin/lsnrctl ] ; then echo "Oracle Listeners not started (no lsnrctl script)" exit 1 fi echo "Starting Oracle Listeners..." /bin/su $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start LISTENER" exit $? ;; stop) . /etc/environment export ORACLE_HOME export ORACLE_OWNER export ORACLE_BASE export TNS_ADMIN export NLS_LANG export DISABLE_HUGETLBFS export TZ if [ ! -f $ORACLE_HOME/bin/lsnrctl ] ; then echo "Oracle Listeners not stopped (no lsnrctl script)" exit 1 fi echo "Stopping Oracle Listeners..." /bin/su $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop LISTENER" exit $? ;; restart) $0 stop $0 start exit $? ;; *) echo "Usage: $0 (start|stop|restart)" exit 2 ;; esac
Code Block # chmod +x /etc/init.d/ora.* && \ update-rc.d ora.database defaults && \ update-rc.d ora.listener defaults
...
Библиотеки Oracle Instant Client необходимы для обеспечения связи приложений с СУБД Oracle. Архив Архивы с Oracle Instant Client 1011.2.0.5 и 2, Oracle Instant Client 1011.2.0.5 2 SDK (используется при установке модулей Oracle для интерпретаторов) и Oracle Instant Client 11.2.0.2 SQL*Plus необходимо распаковать в директорию /opt/oracle
, например:
Code Block |
---|
# unzip instantclient-basic-10linux-x86-64-11.2.0.52.0-linux-x64.zip -d /opt/oracle && \ unzip instantclient-sdk-10linux-x86-64-11.2.0.52.0.zip -linux-x64.d /opt/oracle && \ unzip instantclient-sqlplus-linux-x86-64-11.2.0.2.0.zip -d /opt/oracle |
После разархивирования необходимо создать символические ссылки для libclntsh.so.1011.1
и libocci.so.1011.1
:
Code Block |
---|
# cd /opt/oracle/instantclient_1011_2 && \ ln -s libclntsh.so.1011.1 libclntsh.so && \ ln -s libocci.so.1011.1 libocci.so |
Далее нужно изменить владельца файлов в директории /opt/oracle/instantclient_1011_2
на пользователя oracle:
Code Block |
---|
# chown -R oracle:oinstall /opt/oracle/instantclient_1011_2 |
В завершении завершение необходимо добавить файл с путем к Oracle Instant Client в /etc/ld.so.conf.d
и переконфигурировать привязки к динамическим библиотекам:
Code Block |
---|
# echo /opt/oracle/instantclient_1011_2 > /etc/ld.so.conf.d/oracle.conf && \ ldconfig |
...
По завершении всех действий необходимо связаться с ответственным за внедрение сотрудником Latera Software, которому следует сообщить о готовности СУБД Oracle к созданию инстанса ( БД).