Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
# echo "%dba        ALL=(oracle)    NOPASSWD: ALL" > /etc/sudoers.d/oracle && \
  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 = 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 помощью команды:

Code Block

echo# 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

$SHMMAX — максимальное значение разделяемой области памяти в байтах. Рекомендуется устанавливать его в размере 1,5*N*SGA, где N — количество БД (инстансов) Oracle на сервере, SGA — размер области SGA-памяти на БД (4 Гб = 4294967296 байт).

Если значения каких-либо параметров кроме SHMALL в системе больше указанных, изменять их не требуется. Для проверки текущих значений параметров следует использовать вывод команды sysctl -a. Например, для проверки значения параметра kernel.shmall команда проверки будет выглядеть следующим образом:

Code Block

# sysctl -a | grep kernel.shmall

Те параметры, чьи текущие значения в системе меньше минимальных необходимо добавить в файл /etc/sysctl.conf. После изменения файла /etc/sysctl.conf для применения новых параметров необходимо выполнить следующую команду:

Code Block

# sysctl -p
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

В ходе выполнения команды выше будет запрошено количество памяти на одну БД (рекомендуемое значение — 4 Гб) и число устанавливаемых БД на сервере (в большинстве случаев — 1).

Установка системных ограничений для пользователя oracle

...