Настройка ОС для серверов СУБД Oracle — различия между версиями

Материал из VAAL-WIKI
Перейти к: навигация, поиск
 
(не показано 13 промежуточных версии этого же участника)
Строка 1: Строка 1:
В данной статье описывается процесс настройки параметров ядра CentOS/RHEL.
+
В данном разделе приведён сценарий действий, необходимый для настройки RHEL для серверов СУБД Oracle: создание пользователей и групп (в ОС), настройка параметров ядра и операционной системы.
<p style="text-align:center"><b >Настройка параметров ядра CentOS/RHEL.</b ></p>
+
<br />
Настройка параметров ядра требуется для корректной установки и работы хостов на которых разворачиваются БД – ''PostgreSQL 9.4'' и ''Oracle DB SE 11.2.0.4'', а также сервера с ППО ''Вектор-М''
+
== <p style="text-align:left"><span style="color:red"><b >Установка пакета rlwrap.</b ></span></p> ==
 +
''rlwrap'' – пакет, который позволяет хранить историю команд в SQL*PLUS и RMAN в Linux (его необходимо прописывать отдельной строкой в bash-профиле). Установив данный пакет, вы сможете использовать кнопки вверх, вниз для просмотра истории введенных команд, правильную работу клавиши backspace и др.
 +
Для установки пакета ''rlwrap'' необходимо от '''''root''''' выполнить следующие команды:
 +
<p style="text-align:left"><b > '''''# cd /tmp''''' </b ></p>
 +
<p style="text-align:left"><b > '''''# wget -t 25 https://github.com/hanslub42/rlwrap/releases/download/v0.43/rlwrap-0.43.tar.gz -O /tmp/rlwrap-0.43.tar.gz''''' </b ></p>
 +
<p style="text-align:left"><b > '''''# tar -zxvf rlwrap-0.43.tar.gz'''''</b ></p>
 +
<p style="text-align:left"><b > '''''# cd rlwrap-0.43'''''</b ></p>
 +
<p style="text-align:left"><b > '''''# ./configure'''''</b ></p>
 +
<p style="text-align:left"><b > '''''# make '''''</b ></p>
 +
<p style="text-align:left"><b > '''''# make check'''''</b ></p>
 +
<p style="text-align:left"><b > '''''# make install'''''</b ></p>
 +
Создать alias для использования '''rlwrap'''(из-под пользователя '''oracle'''):
 +
<p style="text-align:left"><b > '''''$ echo 'alias sqlplus="rlwrap sqlplus"' >> ~/.bashrc'''''</b ></p>
 +
 
 +
== <p style="text-align:left"><span style="color:red"><b >Создание пользователей и групп.</b ></span></p> ==
 +
Поочерёдно выполняем следующие команды:
 +
<p style="text-align:left"><b >'''''# groupadd oinstall'''''</b ></p>
 +
<p style="text-align:left"><b >'''''# groupadd dba'''''</b ></p>
 +
<p style="text-align:left"><b >'''''# groupadd oper'''''</b ></p>
 +
<p style="text-align:left"><b >'''''# groupadd asmadmin'''''</b ></p>
 +
Создаем пользователя oracle и задаём пароль для него, выполнив следующие команды:
 +
<p style="text-align:left"><b >'''''# useradd -g oinstall -G dba,oper,asmadmin oracle'''''</b ></p>
 +
<p style="text-align:left"><b >'''''# passwd oracle'''''</b ></p>
 +
<br />
 +
== <p style="text-align:left"><span style="color:red"><b >Настройка параметров ядра RHEL.</b ></span></p> ==
 +
Настройка параметров ядра требуется для корректной установки и работы хостов на которых разворачиваются СУБД – ''PostgreSQL 9.4'' и ''Oracle DB SE 11.2.0.4''.
 
Перед тем как вносить изменения в файлы конфигурации, следует предварительно создать их резервные копии следующими командами:
 
Перед тем как вносить изменения в файлы конфигурации, следует предварительно создать их резервные копии следующими командами:
 
<p style="text-align:left"><b > '''''# cp /etc/sysctl.conf /etc/sysctl.conf.bkp''''' </b ></p>
 
<p style="text-align:left"><b > '''''# cp /etc/sysctl.conf /etc/sysctl.conf.bkp''''' </b ></p>
Строка 8: Строка 33:
 
<p style="text-align:left"><b > '''''# cp /etc/profile /etc/profile.bkp''''' </b ></p>
 
<p style="text-align:left"><b > '''''# cp /etc/profile /etc/profile.bkp''''' </b ></p>
 
<br />
 
<br />
<p style="text-align:left"><span style="color:red"><b >Настройка параметров ядра для инсталляции ''DB Oracle 11.2.0.4''.</b ></span></p>
+
== <p style="text-align:left"><span style="color:red"><b >Настройка параметров ядра для инсталляции ''DB Oracle 11.2.0.4''.</b ></span></p> ==
 
Отредактируйте файл /etc/sysctl.conf:
 
Отредактируйте файл /etc/sysctl.conf:
 
<p style="text-align:left"><b > '''''# vim /etc/sysctl.conf''''' </b ></p>
 
<p style="text-align:left"><b > '''''# vim /etc/sysctl.conf''''' </b ></p>
Строка 80: Строка 105:
 
<p style="text-align:left">'''''# echo 'net.core.wmem_default = 262144' >>  /etc/sysctl.conf'''''</p>
 
<p style="text-align:left">'''''# echo 'net.core.wmem_default = 262144' >>  /etc/sysctl.conf'''''</p>
 
<p style="text-align:left">'''''# echo 'net.core.wmem_max = 1048586' >>  /etc/sysctl.conf'''''</p>
 
<p style="text-align:left">'''''# echo 'net.core.wmem_max = 1048586' >>  /etc/sysctl.conf'''''</p>
 +
<span style="color:green">'''6) Различная системная конфигурация:'''</span>
 +
*Вам может понадобиться увеличить следующие конфигурационные параметры, если они слишком малы:
 +
: <span style="color:green">Максимальное количество открытых файлов:</span>
 +
Oracle рекомендует значение ''6815744'' как минимум. Проверьте значение на вашей системе, в случае необходимости изменения значения выполните в терминале команду<br />
 +
'''''# echo 'fs.file-max = 6815744' >>  /etc/sysctl.conf'''''
 +
: <span style="color:green">Максимальное количество конкурентных асинхронных запросов ввода/вывода:</span>
 +
Oracle рекомендует увеличить это значение до значения ''1048576''. Выполните в терминале команду <br />
 +
'''''# echo 'fs.aio-max-nr = 1048576' >>  /etc/sysctl.conf'''''
 +
<br ><br />
 +
 +
== <p style="text-align:left"><span style="color:red"><b >Ограничения оболочки для пользователя Oracle.</b ></span></p> ==
 +
Во время обычной работы аккаунт Oracle запускает много процессов, открывает большое количество файлов и требует больше ресурсов, чем обычный пользователь. В то же время, пределы (hard limits) на аккаунте предотвратит в некоторых случаях зависание процессов (resource starvation). Конфигурация PAM по умолчанию (в /etc/pam.d/system-auth) загружает модули (session required pam_limits.so) которые устанавливают и приводят в действие эти пределы.<br />
 +
Как администратор '''''root''''' добавьте следующие строчки в ''/etc/security/limits.conf'':<br />
 +
<pre>
 +
oracle&#9;&#9;soft&#9;&#9;nproc&#9;&#9;2047
 +
oracle&#9;&#9;hard&#9;&#9;nproc&#9;&#9;16384
 +
oracle&#9;&#9;soft&#9;&#9;nofile&#9;&#9;1024
 +
oracle&#9;&#9;hard&#9;&#9;nofile&#9;&#9;65536
 +
oracle&#9;&#9;soft&#9;&#9;stack&#9;&#9;10240
 +
oracle&#9;&#9;hard&#9;&#9;stack&#9;&#9;32768
 +
</pre>
 +
Отредактируйте файл ''/etc/pam.d/login'', добавив в него строку ''session required pam_limits.so''
 +
Отредактируйте файл ''/etc/profile'' добавив перед:
 +
:''unset i''
 +
:''unset pathmunge''
 +
Текст со следующим содержанием:
 +
:''if [ $USER = "oracle" ]; then''
 +
:'' ulimit -u 16384 -n 65536''
 +
:''fi''
 +
Создаём необходимые для установки Oracle каталоги, выставляем на них соответствующие права и владельцев:
 +
<p style="text-align:left">'''''# mkdir -p /u01/app/oracle/product/11.2.0/dbhome_1'''''</p>
 +
<p style="text-align:left">'''''# chown -R oracle:oinstall /u01'''''</p>
 +
<p style="text-align:left">'''''# chmod -R 775 /u01'''''</p>
 +
<p style="text-align:left">'''''# mkdir -p /u02/oradata'''''</p>
 +
<p style="text-align:left">'''''# chown -R oracle:oinstall /u02'''''</p>
 +
<p style="text-align:left">'''''# chmod -R 775 /u02/oradata'''''</p>
 +
 +
Для серверов БД логинимся в системе как пользователь oracle и добавляем в ''.bash_profile'' следующую информацию:
 +
: umask 022
 +
: TMP=/tmp; export TMP
 +
: TMPDIR=$TMP; export TMPDIR
 +
: ORACLE_HOSTNAME=<span style="color:red">''$(hostname)''</span>; export ORACLE_HOSTNAME
 +
: ORACLE_UNQNAME=<u><NAME></u>; export ORACLE_UNQNAME
 +
: ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
 +
: export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
 +
: export ORACLE_SID=<u><NAME></u>
 +
: export NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251
 +
: export ORACLE_HOME_LISTNER=$ORACLE_HOME
 +
: PATH=$ORACLE_HOME/bin:$PATH
 +
: export PATH
 +
: alias sqlplus='rlwrap sqlplus'
 +
: alias rman='rlwrap rman'
 +
<!-- <span style="color:red">''hostname''</span> необходимо заменить на имя хоста, на котором производится установка, затем перегружаем .bash_profile командой:!-->
 +
Затем перегружаем .bash_profile командой:<br />
 +
<p style="text-align:left">'''''# source ~/.bash_profile'''''</p>
 +
<br />
 +
Настройка ОС для серверов буферных хранилищ Oracle выполнена. Далее необходимо произвести установку СУБД Oracle, руководствоваться необходимо [[Установка СУБД Oracle 11g]]
 +
== <p style="text-align:left"><span style="color:red"><b >Ссылки</b ></span></p> ==
 +
[https://oracle-base.com/articles/linux/rlwrap#manual-installation Ручная установка rlwrap]<br />
 +
[https://github.com/hanslub42/rlwrap/tree/v0.43 rlwrap]

Текущая версия на 21:23, 13 апреля 2019

В данном разделе приведён сценарий действий, необходимый для настройки RHEL для серверов СУБД Oracle: создание пользователей и групп (в ОС), настройка параметров ядра и операционной системы.

Установка пакета rlwrap.

rlwrap – пакет, который позволяет хранить историю команд в SQL*PLUS и RMAN в Linux (его необходимо прописывать отдельной строкой в bash-профиле). Установив данный пакет, вы сможете использовать кнопки вверх, вниз для просмотра истории введенных команд, правильную работу клавиши backspace и др. Для установки пакета rlwrap необходимо от root выполнить следующие команды:

# cd /tmp

# wget -t 25 https://github.com/hanslub42/rlwrap/releases/download/v0.43/rlwrap-0.43.tar.gz -O /tmp/rlwrap-0.43.tar.gz

# tar -zxvf rlwrap-0.43.tar.gz

# cd rlwrap-0.43

# ./configure

# make

# make check

# make install

Создать alias для использования rlwrap(из-под пользователя oracle):

$ echo 'alias sqlplus="rlwrap sqlplus"' >> ~/.bashrc

Создание пользователей и групп.

Поочерёдно выполняем следующие команды:

# groupadd oinstall

# groupadd dba

# groupadd oper

# groupadd asmadmin

Создаем пользователя oracle и задаём пароль для него, выполнив следующие команды:

# useradd -g oinstall -G dba,oper,asmadmin oracle

# passwd oracle


Настройка параметров ядра RHEL.

Настройка параметров ядра требуется для корректной установки и работы хостов на которых разворачиваются СУБД – PostgreSQL 9.4 и Oracle DB SE 11.2.0.4. Перед тем как вносить изменения в файлы конфигурации, следует предварительно создать их резервные копии следующими командами:

# cp /etc/sysctl.conf /etc/sysctl.conf.bkp

# cp /etc/security/limits.conf /etc/security/limits.conf.bkp

# cp /etc/pam.d/login /etc/pam.d/login.bkp

# cp /etc/profile /etc/profile.bkp


Настройка параметров ядра для инсталляции DB Oracle 11.2.0.4.

Отредактируйте файл /etc/sysctl.conf:

# vim /etc/sysctl.conf

Рекомендуется закомментировать имеющиеся параметры kernel.shmmax и kernel.shmall. Далее они будут добавлены в качестве параметров вместе с остальными параметрами Oracle.
1) Параметры виртуальной памяти:
Добавьте в конец файла /etc/sysctl.conf следующие строки:
vm.dirty_expire_centisecs=500
vm.dirty_writeback_centisecs=100
vm.swappiness=0
vm.dirty_background_ratio=3
vm.dirty_ratio=15
Или выполните в терминале следующие команды(от root):

# echo '#### New Oracle Kernel Parameters ####' >> /etc/sysctl.conf

# echo '#These parameters a recommended to control the rate at which virtual memory is reclaimed' >> /etc/sysctl.conf

# echo 'vm.swappiness=0' >> /etc/sysctl.conf

# echo 'vm.dirty_background_ratio=3' >> /etc/sysctl.conf

# echo 'vm.dirty_ratio=15' >> /etc/sysctl.conf

# echo 'vm.dirty_expire_centisecs=500' >> /etc/sysctl.conf

# echo 'vm.dirty_writeback_centisecs=100' >> /etc/sysctl.conf

# echo >> /etc/sysctl.conf

# sysctl -p

2) Параметры общей памяти(kernel.shmmni, kernel.shmmax и kernel.shmall):
Параметры kernel.shmmax и kernel.shmall зависят от количества RAM, установленной на сервере. Параметр kernel.shmmax указывается в байтах, а kernel. shmall в страницах. Для определения максимума общей памяти (параметр ядра shmall) в элементах размера страницы памяти, необходимо получить размер страницы в операционной системе (выполняем в терминале команду):

#getconf PAGE_SIZE


Максимальный размер общего сегмента shmmax должен равняться, по меньшей мере, половине общего объема памяти.SHMMAX не может превышать размер RAM минус один байт, но должен быть больше чем сумма всех SGA на данном хосте. Минимальное значение 536870912. Oracle рекомендует установить максимальное количество сегментов общей памяти shmmni равным 4096. Текущее значение этих параметров можно узнать, выполнив команды:

# cat /proc/sys/kernel/shmmax

# cat /proc/sys/kernel/shmall

# cat /proc/sys/kernel/shmmni

Параметр kernel.shmmax вычисляется следующим образом:
kernel.shmmax = RAM (в байтах) / 2,
Например:
33568968704/2=16784484352
Количество байт оперативной памяти можно узнать, введя в терминале команду free -b.
Минимальное значение для kernel.shmmax равняется 536870912.
Параметр kernel.shmall вычисляется следующим образом:
kernel.shmall = RAM (в байтах) / 4096,
Например:
33568968704/4096=8195549
Количество байт оперативной памяти можно узнать, введя в терминале команду free -b.
Минимальное значение для kernel.shmall равняется 2097152.
В случае, если shmall или shmmax по вычислениям меньше минимально рекомендованного, то необходимо присвоить этим параметрам рекомендованные значения.
Ниже приводится пример расчёта параметров shmall и shmmax для сервера с количеством оперативной памяти равной 32 ГБ:

Выполните следующие команды в терминале, которые обновят содержимое etc/sysctl.conf: # echo '## The following values are for 32 GB of RAM' >> /etc/sysctl.conf

# echo 'kernel.shmmax = 16784484352' >> /etc/sysctl.conf

# echo 'kernel.shmall = 8195549' >> /etc/sysctl.conf

# echo '# do not scale this parameter with RAM' >> /etc/sysctl.conf

# echo 'kernel.shmmni = 4096' >> /etc/sysctl.conf

# echo >> /etc/sysctl.conf

# sysctl -p

3) Семафоры:
Linux предоставляет семафоры для передачи небольшого количества информации между процессами. Семафоры — это числа-счётчики или on/off значения, которые организуются в группы. СУБД Oracle необходимо больше групп, больше комнат в каждой группе и больше счётчиков, чем предоставляется операционной системой по умолчанию. Измените параметр kernel.sem, определяющий необходимое количество семафоров, выполнив следующую команду:

# echo 'kernel.sem = 250 32000 100 128'>> /etc/sysctl.conf

4) Сетевые порты:
Измените параметр net.ipv4.ip_local_port_range в /etc/sysctl.conf для модификации диапазона ip портов для автоматического назначения клиентам исходящих портов, выполнив в терминале команду:

# echo 'net.ipv4.ip_local_port_range = 9000 65500'>> /etc/sysctl.conf

5) Оптимизация сетевых настроек (TCP/IP):
Oracle и Oracle Universal Installer рекомендуют установить постоянные размеры для буфера максимальный и по умолчанию для сокетов приложений в Database 11g Release 2. Их рекомендованные значения – разумная точка для начала. Выполните в терминале следующие команды:

# echo 'net.core.rmem_default = 262144' >> /etc/sysctl.conf

# echo 'net.core.rmem_max = 4194304' >> /etc/sysctl.conf

# echo 'net.core.wmem_default = 262144' >> /etc/sysctl.conf

# echo 'net.core.wmem_max = 1048586' >> /etc/sysctl.conf

6) Различная системная конфигурация:

  • Вам может понадобиться увеличить следующие конфигурационные параметры, если они слишком малы:
Максимальное количество открытых файлов:

Oracle рекомендует значение 6815744 как минимум. Проверьте значение на вашей системе, в случае необходимости изменения значения выполните в терминале команду
# echo 'fs.file-max = 6815744' >> /etc/sysctl.conf

Максимальное количество конкурентных асинхронных запросов ввода/вывода:

Oracle рекомендует увеличить это значение до значения 1048576. Выполните в терминале команду
# echo 'fs.aio-max-nr = 1048576' >> /etc/sysctl.conf

Ограничения оболочки для пользователя Oracle.

Во время обычной работы аккаунт Oracle запускает много процессов, открывает большое количество файлов и требует больше ресурсов, чем обычный пользователь. В то же время, пределы (hard limits) на аккаунте предотвратит в некоторых случаях зависание процессов (resource starvation). Конфигурация PAM по умолчанию (в /etc/pam.d/system-auth) загружает модули (session required pam_limits.so) которые устанавливают и приводят в действие эти пределы.
Как администратор root добавьте следующие строчки в /etc/security/limits.conf:

oracle		soft		nproc		2047
oracle		hard		nproc		16384
oracle		soft		nofile		1024
oracle		hard		nofile		65536
oracle		soft		stack		10240
oracle		hard		stack		32768

Отредактируйте файл /etc/pam.d/login, добавив в него строку session required pam_limits.so Отредактируйте файл /etc/profile добавив перед:

unset i
unset pathmunge

Текст со следующим содержанием:

if [ $USER = "oracle" ]; then
ulimit -u 16384 -n 65536
fi

Создаём необходимые для установки Oracle каталоги, выставляем на них соответствующие права и владельцев:

# mkdir -p /u01/app/oracle/product/11.2.0/dbhome_1

# chown -R oracle:oinstall /u01

# chmod -R 775 /u01

# mkdir -p /u02/oradata

# chown -R oracle:oinstall /u02

# chmod -R 775 /u02/oradata

Для серверов БД логинимся в системе как пользователь oracle и добавляем в .bash_profile следующую информацию:

umask 022
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_HOSTNAME=$(hostname); export ORACLE_HOSTNAME
ORACLE_UNQNAME=<NAME>; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=<NAME>
export NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251
export ORACLE_HOME_LISTNER=$ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH
export PATH
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'

Затем перегружаем .bash_profile командой:

# source ~/.bash_profile


Настройка ОС для серверов буферных хранилищ Oracle выполнена. Далее необходимо произвести установку СУБД Oracle, руководствоваться необходимо Установка СУБД Oracle 11g

Ссылки

Ручная установка rlwrap
rlwrap