Направление Oracle  
  Подготовка сервера на RHEL7. Клонирование софта СУБД  


Эти материалы являются объектом авторского права и защищены законами РФ и международными соглашениями о защите авторских прав. Перед использованием материалов вы обязаны принять условия лицензионного договора на использование этих материалов, или же вы не имеете права использовать настоящие материалы

Авторская площадка "Наши орбиты" состоит из ряда тематических подразделов, являющихся моими лабораторными дневниками, содержащими записи за разное, иногда продолжительно отличающееся, время. Эти материалы призваны рассказать о прошедшем опыте, они никого ни к чему не призывают и совершенно не обязательно могут быть применимы кем-то ещё. Это только лишь истории о прошлом

Начальные слова

Это заметки для подготовки сервера не полное руководство, обычно сейчас отрабатывают пакет подготовки, соответствующий версии, например "yum -y install oracle-rdbms-server-11gR2-preinstall". Но можно сконфигурировать сервер и внучную. Если используется пакет конфигурирования, можно проверить корректность после запуска. Я отрабатывал такую проверку, и получил следующие результаты

  • пакеты rpm стоят без 32bit, описано, что с 11.2.0.2 не нужны кроме gcc, но gcc — в перечне 32bit и не нужен,
  • лимиты в /etc/security добавлены
  • параметры в /etc/sysctl.conf добавлены
  • пользователи и группы созданы (не все, но нам хватит)
  • переносимые HugePages в конфигурации grub выключены и добавлен некий numa=off
  • selinux не выключен, но это требование не обязательное
  • HugePages не сконфигурированы — при необходимости конфигурировать руками
  • shm также не ресайзится автоматически, только руками при необходимости

Ручная подготовка сервера к развёртыванию некластерной СУБД

--- Требования к пакетам

Для установки пакетов необходимо настроить источник, которым может быть сетевой репозитарий или инсталляционный DVD. Для использования DVD можно, например, создать в каталоге /etc/yum.repos.d файл с именем cdrom.repo, указывающий на смонтированный образ

[rh_srv_media]
name=Rhel-$releasever - Media
# ниже полный путь к смонитрованному носителю
baseurl=file:///media/RHEL_6.x_i686_64_DVD/Server
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
prioritet = 1

--- 1. проверить Hardware

1.1 RAM > 1 Gb # grep MemTotal /proc/meminfo
1.2 SWAP = (<2Gb->1.5xRAM size,<=16Gb->RAM size,>16Gb->16Gb) # grep SwapTotal /proc/meminfo
# free
1.3 for AMM only /dev/shm > MEMORY_MAX_TARGET and MEMORY_TARGET (disabled when LOCK_SGA or HugePages) - change in /etc/fstab size=xxx
1.4 disk space
1.4.1 /tmp (free) > 1Gb
1.4.2 for rdbms > 4.7Gb free space

--- 2. проверить OS & версия kernel

2.1 for Oracle RDBMS 11.2.0.4 (not less!, 11.2.0.3 no valid) sertified RHEL/Oracle 7 and 6
2.2 kernel
2.2.1 On Oracle Linux 7 3.8.13-33.el7uek.x86_64 or later
2.2.2 On Red Hat Enterprise Linux 7 3.10.0-54.0.1.el7.x86_64 or later

--- 3. установить пакеты RPM for (Oracle Linux 7 and RHEL 7)

- перечень пакетов (как ставить - ниже)
binutils-2.23.52.0.1-12.el7.x86_64.
compat-libcap1-1.10-3.el7.x86_64.
compat-libstdc++-33-3.2.3-71.el7.i686
compat-libstdc++-33-3.2.3-71.el7.x86_64
gcc-4.8.2-3.el7.x86_64.
gcc-c++-4.8.2-3.el7.x86_64.
glibc-2.17-36.el7.i686.
glibc-2.17-36.el7.x86_64.
glibc-devel-2.17-36.el7.i686.
glibc-devel-2.17-36.el7.x86_64.
ksh
libaio-0.3.109-9.el7.i686.
libaio-0.3.109-9.el7.x86_64.
libaio-devel-0.3.109-9.el7.i686.
libaio-devel-0.3.109-9.el7.x86_64.
libgcc-4.8.2-3.el7.i686.
libgcc-4.8.2-3.el7.x86_64.
libstdc++-4.8.2-3.el7.i686.
libstdc++-4.8.2-3.el7.x86_64.
libstdc++-devel-4.8.2-3.el7.i686.
libstdc++-devel-4.8.2-3.el7.x86_64.
libXi-1.7.2-1.el7.i686.
libXi-1.7.2-1.el7.x86_64.
libXtst-1.2.2-1.el7.i686.
libXtst-1.2.2-1.el7.x86_64
make-3.82-19.el7.x86_64.
sysstat-10.1.5-1.el7.x86_64.
-- также нужно
mc
xauth

Установить требуемые пакеты. Т.к. есть двухархитектурные пакеты, ставим так:

yum install binutils compat-libcap1 gcc gcc-c++ ksh make sysstat mc xorg-x11-xauth\
    xorg-x11-utils bind-utils nfs-utils
yum install `yum list | egrep -E "^compat-libstdc\+\+-33\.|^glibc\.|^glibc-devel\.|\
    ^libgcc|^libstdc\+\+\.|^libstdc\+\+-devel\.|^libaio\.|^libaio-devel\.|^libXtst\.|\
    ^libXi\." | sort | cut -d " " -f 1`

--- 4. Конфигурирование операционной системы

--- 4.1 изменить параметры ядра в /etc/sysctl.conf (Не трогать, если какие-то определены и больше)

как смотреть
---------------
/sbin/sysctl -a | egrep "sem|shm|file-max|ip_local_port_range|rmem_default|\
 rmem_max|wmem_default|wmem_max|aio-max-nr|tcp_wmem|tcp_rmem" | sort

что добавлять, не не меньше текущих
------------------------------------

### for Oracle RDBMS ###################################################################
# если текущие значения больше - не переопределять
# обычно этот параметр уже стоит после установки ОС и существенно больше рекомендуемого
# shmall - physical RAM size / pagesize For most systems, this will be the value 2097152.
# See Note 301830.1 for more information.
kernel.shmall = 2097152
# shmmax - 1/2 of physical RAM. This would be the value 2147483648 for a system with 4GB
# of physical RAM. See Note:567506.1 for more information.
# реально SHM перемонтируют в ядре на увеличение, здесь учитывать
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
# file-max - 512 x processes (for example 6815744 for 13312 processes)
fs.file-max = 6815744
#######################################################################################

Как подхватить без перезагрузки
--------------------------------
sysctl –p

--- 4.2 системные лимиты для пользователя - владельца. В /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
# значения блокировки памяти подставить реальные (80% от 32Гб = 26843545,6)
# и согласовать в HugePages
oracle soft memlock 26843547
oracle hard memlock 26843547

проверяется под пользователем oracle командами
$ ulimit -Sn
1024
$ ulimit -Hn
65536
$ ulimit -Su
2047
$ ulimit -Hu
16384
$ ulimit -Ss
10240
$ ulimit -Hs
32768

--- 4.3 SHMFS. Например, для 80% от 32Gb RAM в /etc/fstab заносим

shmfs /dev/shm tmpfs size=27g 0 0

опционально + pfile:USE_INDIRECT_DATA_BUFFERS=TRUE

--- 4.4 сконфигурировать HugePages
4.4.1 disable Transparent Huge Pages - in grub.conf - transparent_hugepage=never
4.4.2 enable Huge Pages
- посмотреть размер страницы grep Hugepagesize /proc/meminfo
- разделить размер SGA на размер страницы и округлить до большего целого
- добавить в /etc/sysctl.conf (для 80% от 32Гб ~27Гб при размере страницы 2Гб = 14155776)
vm.nr_hugepages = 14155776
после sysctl –p подхватывает сразу
4.4.3 сконфигурировать лимит блокировки памяти (в п. 4.2)

#Restrictions for HugePages Configurations. Following are the limitations of using
# HugePages: Automatic Memory Management (AMM) and HugePages are not compatible.
# When you use AMM, the entire SGA memory is allocated by creating files under /dev/shm.
# When Oracle Database allocates SGA with AMM, HugePages are not reserved. To use
# HugePages on Oracle Database 12c, You must disable AMM. If you are using VLM in a
# 32-bit environment, then you cannot use HugePages for the Database Buffer cache. You
# can use HugePages for other parts of the SGA, such as shared_pool, large_pool, and so on.
# Memory allocation for VLM (buffer cache) is done using shared memory file systems
# (ramfs/tmpfs/shmfs).  Memory file systems do not reserve or use HugePages. HugePages are
# not subject to allocation or release after system startup, unless a system administrator
# changes the HugePages configuration, either by modifying the number of pages available,
# or by modifying the pool size. If the space required is not reserved in memory during
# system startup, then HugePages allocation fails.

--- 4.5 disable SE Linux. Требования к SELinux - самый беспроблемный путь отключить его полностью. В прошлых версиях документации по установке об этом говорилось явно, сейчас заявлена совместимость с SELinux, однако выключенная опция представляется более надёжным выбором. Для отключения SELinux выставить в файле конфигурации /etc/selinux/config параметр SELINUX = disabled, и в /boot/grub.conf добавить в строчку памаметров ядра выражение " selinux=0 "

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

cd /usr/sbin
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
groupadd -g 54324 backupdba
groupadd -g 54325 dgdba
groupadd -g 54326 kmdba
groupadd -g 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54329 asmadmin
useradd -u 54321 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba oracle
usermod -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,oper oracle
# или для упрощённой конфигурации - когда владелец ASM и СУБД один - пользователь oracle
usermod -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,oper,asmoper,asmadmin oracle

--- 4.7 перед графической установкой снять переменные среды

unset ORACLE_HOME
unset ORACLE_BASE
unset ORACLE_SID
unset TNS_ADMIN

--- 4.8 разное

Post.
chopt [ enable | disable] db_option
(опционально в БД)
FILESYSTEMIO_OPTIONS = setall

# При графической установке СУБД с пробросом X по SSH напоролись на
# нечитаемые латинские символы, помог мой эмпирический вариант

yum install xorg-x11-font-utils.x86_64 xorg-x11-fonts-100dpi.noarch \
    xorg-x11-fonts-75dpi.noarch xorg-x11-fonts-ISO8859-1-100dpi.noarch \
    xorg-x11-fonts-ISO8859-1-75dpi.noarch xorg-x11-fonts-ISO8859-14-100dpi.noarch \
    xorg-x11-fonts-ISO8859-14-75dpi.noarch xorg-x11-fonts-ISO8859-15-100dpi.noarch \
    xorg-x11-fonts-ISO8859-15-75dpi.noarch xorg-x11-fonts-ISO8859-2-100dpi.noarch \
    xorg-x11-fonts-ISO8859-2-75dpi.noarch xorg-x11-fonts-ISO8859-9-100dpi.noarch \
    xorg-x11-fonts-ISO8859-9-75dpi.noarch xorg-x11-fonts-Type1.noarch \
    xorg-x11-fonts-cyrillic.noarch xorg-x11-fonts-ISO8859-1-75dpi.noarch \
    xorg-x11-fonts-ISO8859-14-100dpi.noarch xorg-x11-fonts-ISO8859-14-75dpi.noarch \
    xorg-x11-fonts-ISO8859-15-100dpi.noarch xorg-x11-fonts-ISO8859-15-75dpi.noarch \
    xorg-x11-fonts-ISO8859-2-100dpi.noarch xorg-x11-fonts-ISO8859-2-75dpi.noarch \
    xorg-x11-fonts-ISO8859-9-100dpi.noarch xorg-x11-fonts-ISO8859-9-75dpi.noarch \
    xorg-x11-fonts-Type1.noarch xorg-x11-fonts-cyrillic.noarch \
    xorg-x11-fonts-ethiopic.noarch xorg-x11-fonts-misc.noarch \
    xorg-x11-server-common.x86_64 xorg-x11-server-utils.x86_64 \
    xorg-x11-util-macros.noarch xorg-x11-xbitmaps.noarch \
    xorg-x11-xkb-extras.x86_64 xorg-x11-xkb-utils.x86_64

# для ifconfig ставим net-tools, для корректного проброса и теста X — xorg-x11-xauth,
# xorg-x11-apps, также - mc, также rlwrap - этот из репозитария Epel
yum install net-tools xorg-x11-xauth xorg-x11-apps mc rlwrap at nfs-utils setup ntsysv

# Отключить сетевой фильтр командой: 
service firewalld stop ;
# и выключить его из автогзагрузки командой
setup->system_services (снять звёздочку напротив имени службы firewalld )

Клонирование каталогов с софтом

Предваорительно - про oraInventory. В случае, когда oraInventory на сервере нет, для использования правильного пути необходимо положить файл /etc/oraInst.loc с корректным путём, иначе будет использоваться дефолтный /u01/oracle/oraInventory. Если есть - предварительно затарить резервную копию Inventory

Клонирование при наличии копий, которые у нас есть, позволяет сохранить все патчи на софт. Операция клонирования для каждой версии расписана в книге по установке СУБД в приложениях. Процедура, на примере 11 версии СУБД, такова:

2.1 Под пользователем root разворачиваем копии ORACLE_HOME на новом сервере. Используем tar - он корректно восстанавливает владельца и группы под пользователем root

# готовим структуру каталогов (под пользователем root)
BASEDIR=/u01 (точка_монтирования_софтового_раздела)
for i in oracle oraarch; do
     [ ! -d $i ] && mkdir $BASEDIR/$i && chown oracle:oinstall $BASEDIR/$i;
     ln -s $BASEDIR/$i  /$i ; chown oracle:oinstall $BASEDIR/$i ;
     done ;
[ ! -d /oracle/soft ] && mkdir /oracle/soft && chown oracle:oinstall /oracle/soft;
[ ! -d /oracle/admin ] && mkdir /oracle/admin && chown oracle:oinstall /oracle/admin;

# разворачиваем копию ORACLE_HOME
cd /oracle ; tar -xvzf путь_к_бэкапу.tar.gz

mv /oracle/oracle/product/ora11204 /oracle/soft/rdbms_11204
cp –p /oracle/soft/rdbms_11204/oraInst.loc /etc/oraInst.loc
# опционально удалить остатки восстановленного бэкапа /oracle/oracle

2.2 для исключения ошибки линковки (для 12 версии - не нужно) agent nmhs в файле
 /oracle/soft/rdbms_11204/sysman/lib/ins_emagent.mk добавляем опции -lnnz11:

$(SYSMANBIN)emdctl:
        $(MK_EMAGENT_NMECTL)
на
$(SYSMANBIN)emdctl:
        $(MK_EMAGENT_NMECTL) -lnnz11

2.3 проводим клонирование командой (под пользователем oracle):

$ORACLE_HOME/perl/bin/perl clone.pl ORACLE_BASE="путь_к_новому_ORACLE_BASE"\
 ORACLE_HOME="путь_к_новому_ORACLE_HOME" OSDBA_GROUP=dba OSOPER_GROUP=oper -defaultHomeName

Примеры:
cd /oracle/soft/rdbms_11204/clone/bin
/oracle/soft/rdbms_11204/perl/bin/perl clone.pl ORACLE_BASE="/oracle"\
 ORACLE_HOME="/oracle/soft/rdbms_11204" OSDBA_GROUP=dba OSOPER_GROUP=dba -defaultHomeName

Белонин С.С. (С), июль 2016 года

(даты последующих модификаций не фиксируются)


 
        
   
    Нравится     

(C) Белонин С.С., 2000-2024. Дата последней модификации страницы:2023-03-25 16:58:06