Установка кластера Oracle с нуля

Исходные данные и задача:
Есть две серверные машины с установленной Windows Server. Для них нарезаны и презентованы дополнительные дисковые емкости на внешней СХД. Кроме того уже решен вопрос по IP-адресам и именам в DNS
Необходимо установить двухнодовый кластер Oracle на Linux
Таким образом задача делится на следующие этапы:

1. Установка и настройка Linux
2.Установка GRID и Oracle, накат патчей

Первоначальная установка на обоих серверах абсолютно идентична в интерактивном режиме:

Подключаемся к компьютеру через ILOM и дальше в основном кликаем на next

  1. Заглавный экран
    1.jpg
  2. Выбираем язык
    2.jpg
  3. выбираем раскладку клавиатуры
    3.png
  4. Поскольку у нас машина серверная с собственным RAID-массивом, выбираем пункт специализированный дисковый массив
    4.png
  5. Выбираем наш RAID-массив
    5.png6.png
  6. Утверждаем что у нас новая установка, никакого upgrade’а
    7.png
  7. Определяем имя машины (belstat-sdb01 и belstat-sdb02) соответственно, тут же настраиваем IP-адреса, чтобы дальнейшие настройки делать не через ILOM, а через SSH
    8.png
  8. Выбираем часовой пояс
    9.png
  9. Назначаем root’овский пароль
    10.png
  10. Дальше Разбираемся с дисковым пространством на RAID’е локальной машины. Для начала определяем что мы хотим использовать все место на RAID
    11.png
  11. Linux предполагает примерно следующую разбивку места по умолчанию12.pngОднако мы с этим не согласны, слишком много места на Home да и ставить Oracle в раздел, который называется не «u01», вроде как не по фэншую,
    Существует куча документов, которые определяют наиболее кошерное распределение дискового места (периодически противоречащих один другому)
  12. поэтому приводим разбивку места к чему-то подобному
    13.png
  13. Соглашаемся с изменениями
    15.png
  14. Определяем где будет boot loader (в нашем случае без вариантов)
    16.png
  15. Выбираем базовый сервер, поскольку нам особо ничего от самого linux не нужно
    17.png
  16. Нажимаем кнопку next и мучительно ожидаем завершения процесса инсталляции
    18.png
  17. Все что нам осталось это перегрузить машину 14.pngПовторяем процесс на второй машине

Итак у нас есть две готовые машины на Linux, осталось их настроить. В процесс настройки входит:
1.Настройка сети.
2.Отключение SELinux
3.Отключение firewall
4.Настройка параметров системы
5.Создание групп, пользователей, папок и раздача прав
6.Настройка multipath

Все настройки делаем через SSH, через командную строку. Как правило настройки берутся из официальной документации, поэтому сильно пояснять не буду. на этом этапе все действия выполняются параллельно на двух серверах

Настройка сети:
Сначала настраиваем хост файл на машинах

# vi /etc/hosts

там как правило одна запись

127.0.0.1   localhost.localdomain localhost

добавляем в файл на каждой машине следующие записи

#public
172.16.248.10   belstat-sdb01.belstat.local     belstat-sdb01
172.16.248.11   belstat-sdb02.belstat.local     belstat-sdb02

#private
10.1.1.1        belstat-sdb01-priv.belstat.local        belstat-sdb01-priv
10.1.1.2        belstat-sdb02-priv.belstat.local        belstat-sdb02-priv

#VIP
172.16.258.51   belstat-sdb01-vip.belstat.local        belstat-sdb01-vip
172.16.258.52   belstat-sdb02-vip.belstat.local        belstat-sdb02-vip

проверяем настройки сетевых имен

# vi /etc/sysconfig/network

если там что-то вроде

 NETWORKING=yes
HOSTNAME=belstat-sdb01

то все ок, если нет то исправляем
после этого настраиваем параметры сетевых карт

[root@belstat-sdb01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:22:64:F5:FE:BA
TYPE=Ethernet
UUID=31a46595-d393-441f-8dd9-e9d99132f5b0
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=172.16.248.10
PREFIX=22
GATEWAY=172.16.251.253
DNS1=172.16.248.3
DNS2=172.16.248.2
DNS3=194.158.196.137
DNS4=194.158.196.141
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=public
[root@belstat-sdb02 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:1C:C4:94:D3:78
TYPE=Ethernet
UUID=9cbc1d76-6da2-4fea-9c46-15510a875c19
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=172.16.248.11
PREFIX=22
GATEWAY=172.16.251.253
DNS1=172.16.248.3
DNS2=172.16.248.2
DNS3=194.158.196.137
DNS4=194.158.196.141
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=public
[root@belstat-sdb01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
HWADDR=00:22:64:F5:FE:B6
TYPE=Ethernet
UUID=720a0ebf-20cc-4739-9589-454cbb2bd8ce
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=10.1.1.1
PREFIX=30
GATEWAY=10.1.1.0
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=private
[root@belstat-sdb02 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
HWADDR=00:1C:C4:94:D3:7A
TYPE=Ethernet
UUID=c3061883-f1ec-4e5e-9bd1-237537112641
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=10.1.1.2
PREFIX=30
GATEWAY=10.1.1.0
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=private

ВАЖНО!!!! для того,чтобы избежать танцев с бубном при установке кластера имена у сетей должны совпадать, например на обеих машинах для public -интерфейс eth0, для private-eth1

после этого проверяем что все установилось как надо быть

[root@belstat-sdb02 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:1C:C4:94:D3:78
inet addr:172.16.248.11  Bcast:172.16.251.255  Mask:255.255.252.0
inet6 addr: fe80::21c:c4ff:fe94:d378/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:1018 errors:0 dropped:1 overruns:0 frame:0
TX packets:88 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:87196 (85.1 KiB)  TX bytes:12351 (12.0 KiB)

eth1 Link encap:Ethernet HWaddr 00:1C:C4:94:D3:7A
inet addr:10.1.1.2 Bcast:10.1.1.3 Mask:255.255.255.252
inet6 addr: fe80::21c:c4ff:fe94:d37a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:1060 (1.0 KiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
На второй машине картина должна быть примерно такая-же, но с учетом других ip и mac

Отключаем SELinux
в файле конфига

[root@belstat-sdb01 ~]# vi /etc/selinux/config

заменяем содержимое на следующее

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Отключаем firewall

# chkconfig ip6tables off
# chkconfig iptables off

Настраиваем параметры системы

# vi /etc/sysctl.conf

Добавляем в конце

#oracle
# oracle-rdbms-server-12cR1-preinstall setting for kernel.shmmni is 4096
kernel.shmmni = 4096

# oracle-rdbms-server-12cR1-preinstall setting for kernel.sem is '250 32000 100 128'
kernel.sem = 250 32000 100 128

# oracle-rdbms-server-12cR1-preinstall setting for fs.file-max is 6815744
fs.file-max = 6815744

# oracle-rdbms-server-12cR1-preinstall setting for fs.aio-max-nr is 1048576
fs.aio-max-nr = 1048576

# oracle-rdbms-server-12cR1-preinstall setting for net.ipv4.ip_local_port_range is 9000 65500
net.ipv4.ip_local_port_range = 9000 65500

# oracle-rdbms-server-12cR1-preinstall setting for net.core.rmem_default is 262144
net.core.rmem_default = 262144

# oracle-rdbms-server-12cR1-preinstall setting for net.core.wmem_default is 262144
net.core.wmem_default = 262144

net.core.rmem_max=4194304
net.core.wmem_max=1048576

# oracle-rdbms-server-12cR1-preinstall setting for kernel.panic_on_oops is 1 per Orabug 19642132
kernel.panic_on_oops = 1
# vi /etc/security/limits.conf

Добавляем в конце

oracle   soft   nofile    1024
oracle   hard   nofile    65536
oracle   soft   nproc    2047
oracle   hard   nproc    16384
oracle   soft   stack   1024
oracle  hard    stack   1024
oracle   soft   memlock 7387654
oracle   hard   memlock 7387654

Доставляем и запускаем пакет кэширования сетевых имен

# yum install nscd.x86_64
# service nscd start
# chkconfig --level 35 nscd on

Добавляем группы

# /usr/sbin/groupadd -g 54321 oinstall
# /usr/sbin/groupadd -g 54322 dba
# /usr/sbin/groupadd -g 54323 oper
# /usr/sbin/groupadd -g 54324 backupdba
# /usr/sbin/groupadd -g 54325 asmdba
# /usr/sbin/groupadd -g 54326 dgdba
# /usr/sbin/groupadd -g 54327 kmdba
# /usr/sbin/groupadd -g 54328 asmadmin
# /usr/sbin/groupadd -g 54329 asmoper

Добавляем новых пользователей

# /usr/sbin/useradd -u 54322 -g oinstall -G asmadmin,asmdba,asmoper grid
# /usr/sbin/useradd -u 54321 -g oinstall -G dba,backupdba,dgdba,kmdba,asmdba,asmoper,oper oracle

Задаем новым пользователям пароли

# passwd grid
# passwd oracle

Создаем папки и раздаем на них права

# mkdir -p /u01/app/12.1.0.2/grid
# mkdir -p /u01/app/grid
# mkdir -p /u01/app/oracle
# mkdir -p /u01/app/oraInventory
# chown grid:oinstall /u01/app/oraInventory/
# chown -R grid:oinstall /u01
# chown oracle:oinstall /u01/app/oracle
# chmod -R 775 /u01/

Настраиваем синхронизацию часов

# vi /etc/ntp.conf

поскольку у нас сервера работают исключительно во внутренней сети и не могут синхронизироваться с мировым временем, то коментим существующие сервера, добавляем сервер из внутренней сети. Блок серверов у меня теперь выглядит следующим образом

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.rhel.pool.ntp.org iburst
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
#server 3.rhel.pool.ntp.org iburst

server 172.16.248.2

После этого

]# vi /etc/sysconfig/ntpd

меняем на

# Drop root to id 'ntp:ntp' by default.
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid -g"

после этого стартуем сервис

# /etc/init.d/ntpd start
# chkconfig ntpd on

Для окончания настройки linux осталось настроить multipath, делаем это согласно документации

Для начала устанавливаем пакет

# yum install -y \
> device-mapper-multipath.x86_64 \
> device-mapper-multipath-libs.x86_64 \
> device-mapper-multipath-libs.i686

стартуем и раздаем права

# /sbin/mpathconf --enable
# service multipathd start
# chmod +r /etc/multipath.conf

Смотрим какие диски презентованы системе

# multipath -ll

тут для каждой ноды по своему, но в нашем случае было так

mpathe (360002ac00000000000000015000193f8) dm-7 3PARdata,VV
size=300G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 0:0:0:18 sdf        8:80   active ready running
  |- 1:0:0:18 sdaf       65:240 active ready running
  |- 0:0:1:18 sds        65:32  active ready running
  `- 1:0:1:18 sdas       66:192 active ready running
mpathd (360002ac00000000000000014000193f8) dm-6 3PARdata,VV
size=300G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 0:0:0:17 sde        8:64   active ready running
  |- 1:0:0:17 sdae       65:224 active ready running
  |- 0:0:1:17 sdr        65:16  active ready running
  `- 1:0:1:17 sdar       66:176 active ready running
mpathc (360002ac00000000000000011000193f8) dm-3 3PARdata,VV
size=200G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 0:0:0:14 sdb        8:16   active ready running
  |- 1:0:0:14 sdab       65:176 active ready running
  |- 0:0:1:14 sdo        8:224  active ready running
  `- 1:0:1:14 sdao       66:128 active ready running
mpathb (360002ac00000000000000010000193f8) dm-2 3PARdata,VV
size=200G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 0:0:0:13 sda        8:0    active ready running
  |- 1:0:0:13 sdaa       65:160 active ready running
  |- 0:0:1:13 sdn        8:208  active ready running
  `- 1:0:1:13 sdan       66:112 active ready running
mpathn (360002ac00000000000000018000193f8) dm-10 3PARdata,VV
size=10G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 0:0:0:21 sdi        8:128  active ready running
  |- 1:0:0:21 sdai       66:32  active ready running
  |- 0:0:1:21 sdv        65:80  active ready running
  `- 1:0:1:21 sdav       66:240 active ready running
mpathm (360002ac00000000000000012000193f8) dm-4 3PARdata,VV
size=200G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 0:0:0:15 sdc        8:32   active ready running
  |- 1:0:0:15 sdac       65:192 active ready running
  |- 0:0:1:15 sdp        8:240  active ready running
  `- 1:0:1:15 sdap       66:144 active ready running
mpathl (360002ac0000000000000000e000193f8) dm-14 3PARdata,VV
size=500G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 0:0:0:54 sdm        8:192  active ready running
  |- 1:0:0:54 sdam       66:96  active ready running
  |- 0:0:1:54 sdz        65:144 active ready running
  `- 1:0:1:54 sdaz       67:48  active ready running
mpathk (360002ac00000000000000019000193f8) dm-11 3PARdata,VV
size=10G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 0:0:0:22 sdj        8:144  active ready running
  |- 1:0:0:22 sdaj       66:48  active ready running
  |- 0:0:1:22 sdw        65:96  active ready running
  `- 1:0:1:22 sdaw       67:0   active ready running
mpathj (360002ac0000000000000000d000193f8) dm-13 3PARdata,VV
size=500G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 0:0:0:53 sdl        8:176  active ready running
  |- 1:0:0:53 sdal       66:80  active ready running
  |- 0:0:1:53 sdy        65:128 active ready running
  `- 1:0:1:53 sday       67:32  active ready running
mpathi (360002ac0000000000000001a000193f8) dm-12 3PARdata,VV
size=10G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 0:0:0:23 sdk        8:160  active ready running
  |- 1:0:0:23 sdak       66:64  active ready running
  |- 0:0:1:23 sdx        65:112 active ready running
  `- 1:0:1:23 sdax       67:16  active ready running
mpathh (360002ac00000000000000017000193f8) dm-9 3PARdata,VV
size=300G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 0:0:0:20 sdh        8:112  active ready running
  |- 1:0:0:20 sdah       66:16  active ready running
  |- 0:0:1:20 sdu        65:64  active ready running
  `- 1:0:1:20 sdau       66:224 active ready running
mpathg (360002ac00000000000000013000193f8) dm-5 3PARdata,VV
size=300G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 0:0:0:16 sdd        8:48   active ready running
  |- 1:0:0:16 sdad       65:208 active ready running
  |- 0:0:1:16 sdq        65:0   active ready running
  `- 1:0:1:16 sdaq       66:160 active ready running
mpathf (360002ac00000000000000016000193f8) dm-8 3PARdata,VV
size=300G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 0:0:0:19 sdg        8:96   active ready running
  |- 1:0:0:19 sdag       66:0   active ready running
  |- 0:0:1:19 sdt        65:48  active ready running
  `- 1:0:1:19 sdat       66:208 active ready running

Исходя из размеров и собственных предпочтений определяем какие диски для чего будем использовать и в соответсвии с этим заводим для них алиасы в файле multipath.conf
у меня получилось так:

multipaths {
    multipath {
        wwid "360002ac00000000000000018000193f8"
        alias ASM_OCRVOTE01
     }
    multipath {
        wwid "360002ac00000000000000019000193f8"
        alias ASM_OCRVOTE02
     }
    multipath {
        wwid "360002ac0000000000000001a000193f8"
        alias ASM_OCRVOTE02
     }
    multipath {
        wwid "360002ac00000000000000010000193f8"
        alias ASM_FRA01
     }
    multipath {
        wwid "360002ac00000000000000011000193f8"        
        alias ASM_FRA02
     }
    multipath {
        wwid "360002ac00000000000000012000193f8"
        alias ASM_FRA03
     }
    multipath {
        wwid "360002ac0000000000000000e000193f8"
        alias ASM_FRA04
     }
    multipath {
         wwid "360002ac00000000000000013000193f8"
        alias ASM_DATA01
     }
    multipath {
        wwid "360002ac00000000000000016000193f8"
        alias ASM_DATA02
     }
    multipath {
        wwid "360002ac00000000000000017000193f8"
        alias ASM_DATA03
     }
    multipath {
        wwid "360002ac0000000000000000d000193f8"
        alias ASM_DATA04
     }
}

Для всех используемых диском проверяем наличие win партиций если они есть убиваем для этого запускаем команду

# fdisk -l

В выводе ищем что-то типа

Disk /dev/sdaz: 536.9 GB, 536870912000 bytes
255 heads, 63 sectors/track, 65270 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 16384 bytes / 16777216 bytes
Disk identifier: 0x3489c3b6

    Device Boot      Start         End      Blocks   Id  System
/dev/sdaz1               1       65271   524285952    f  W95 Ext'd (LBA)
/dev/sdaz5               1       65271   524284928    6  FAT16

После того как нашлисначала убиваем все партиции на диске

# fdisk /dev/sdaz

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/sdaz: 536.9 GB, 536870912000 bytes
255 heads, 63 sectors/track, 65270 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 16384 bytes / 16777216 bytes
Disk identifier: 0x3489c3b6

    Device Boot      Start         End      Blocks   Id  System
/dev/sdaz1               1       65271   524285952    f  W95 Ext'd (LBA)
/dev/sdaz5               1       65271   524284928    6  FAT16

Command (m for help): d
Partition number (1-5): 5

Command (m for help): d
Selected partition 1

Command (m for help): p

Disk /dev/sdaz: 536.9 GB, 536870912000 bytes
255 heads, 63 sectors/track, 65270 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 16384 bytes / 16777216 bytes
Disk identifier: 0x3489c3b6

    Device Boot      Start         End      Blocks   Id  System

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

После этого создаем новые партиции

# fdisk /dev/sdaz

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/sdaz: 536.9 GB, 536870912000 bytes
255 heads, 63 sectors/track, 65270 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 16384 bytes / 16777216 bytes
Disk identifier: 0x3489c3b6

    Device Boot      Start         End      Blocks   Id  System

Command (m for help): u
Changing display/entry units to sectors

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First sector (63-1048575999, default 32768):
Using default value 32768
Last sector, +sectors or +size{K,M,G} (32768-1048575999, default 1048575999):
Using default value 1048575999

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Проверяем что получилось

# fdisk /dev/sdaz

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/sdaz: 536.9 GB, 536870912000 bytes
255 heads, 63 sectors/track, 65270 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 16384 bytes / 16777216 bytes
Disk identifier: 0x3489c3b6

    Device Boot      Start         End      Blocks   Id  System
/dev/sdaz1               3       65271   524271616   83  Linux

Command (m for help): q

После того как провели данную операцию с каждым диском отправляем сервер в ребут.
смотрим что получилось

]# ls -ls /dev/mapper/ASM_*

У меня картина следующая

0 lrwxrwxrwx 1 root root 7 Jun  8 17:27 /dev/mapper/ASM_DATA01 -> ../dm-5
0 lrwxrwxrwx 1 root root 8 Jun  8 17:27 /dev/mapper/ASM_DATA01p1 -> ../dm-17
0 lrwxrwxrwx 1 root root 7 Jun  8 17:27 /dev/mapper/ASM_DATA02 -> ../dm-8
0 lrwxrwxrwx 1 root root 8 Jun  8 17:27 /dev/mapper/ASM_DATA02p1 -> ../dm-20
0 lrwxrwxrwx 1 root root 7 Jun  8 17:27 /dev/mapper/ASM_DATA03 -> ../dm-9
0 lrwxrwxrwx 1 root root 8 Jun  8 17:27 /dev/mapper/ASM_DATA03p1 -> ../dm-22
0 lrwxrwxrwx 1 root root 8 Jun  8 17:27 /dev/mapper/ASM_DATA04 -> ../dm-16
0 lrwxrwxrwx 1 root root 8 Jun  8 17:27 /dev/mapper/ASM_DATA04p1 -> ../dm-25
0 lrwxrwxrwx 1 root root 7 Jun  8 17:27 /dev/mapper/ASM_FRA01 -> ../dm-2
0 lrwxrwxrwx 1 root root 8 Jun  8 17:27 /dev/mapper/ASM_FRA01p1 -> ../dm-14
0 lrwxrwxrwx 1 root root 7 Jun  8 17:27 /dev/mapper/ASM_FRA02 -> ../dm-3
0 lrwxrwxrwx 1 root root 8 Jun  8 17:27 /dev/mapper/ASM_FRA02p1 -> ../dm-13
0 lrwxrwxrwx 1 root root 7 Jun  8 17:27 /dev/mapper/ASM_FRA03 -> ../dm-4
0 lrwxrwxrwx 1 root root 8 Jun  8 17:27 /dev/mapper/ASM_FRA03p1 -> ../dm-15
0 lrwxrwxrwx 1 root root 8 Jun  8 17:27 /dev/mapper/ASM_FRA04 -> ../dm-18
0 lrwxrwxrwx 1 root root 8 Jun  8 17:27 /dev/mapper/ASM_FRA04p1 -> ../dm-27
0 lrwxrwxrwx 1 root root 8 Jun  8 17:27 /dev/mapper/ASM_OCRVOTE01 -> ../dm-10
0 lrwxrwxrwx 1 root root 8 Jun  8 17:27 /dev/mapper/ASM_OCRVOTE01p1 -> ../dm-23
0 lrwxrwxrwx 1 root root 8 Jun  8 17:27 /dev/mapper/ASM_OCRVOTE02 -> ../dm-11
0 lrwxrwxrwx 1 root root 8 Jun  8 17:27 /dev/mapper/ASM_OCRVOTE02p1 -> ../dm-24
0 lrwxrwxrwx 1 root root 8 Jun  8 17:27 /dev/mapper/ASM_OCRVOTE03 -> ../dm-12
0 lrwxrwxrwx 1 root root 8 Jun  8 17:27 /dev/mapper/ASM_OCRVOTE03p1 -> ../dm-26

Определяем права на диски

#  vi /etc/udev/rules.d/12-dm-asmdevices.rules
ENV{DM_NAME} =="ASM_FRA01p1", NAME:="asm/%E{DM_NAME}", OWNER:="grid", GROUP:="asmadmin", MODE:="0660"
ENV{DM_NAME} =="ASM_FRA02p1", NAME:="asm/%E{DM_NAME}", OWNER:="grid", GROUP:="asmadmin", MODE:="0660"
ENV{DM_NAME} =="ASM_FRA03p1", NAME:="asm/%E{DM_NAME}", OWNER:="grid", GROUP:="asmadmin", MODE:="0660"
ENV{DM_NAME} =="ASM_FRA04p1", NAME:="asm/%E{DM_NAME}", OWNER:="grid", GROUP:="asmadmin", MODE:="0660"
ENV{DM_NAME} =="ASM_DATA01p1", NAME:="asm/%E{DM_NAME}", OWNER:="grid", GROUP:="asmadmin", MODE:="0660"
ENV{DM_NAME} =="ASM_DATA02p1", NAME:="asm/%E{DM_NAME}", OWNER:="grid", GROUP:="asmadmin", MODE:="0660"
ENV{DM_NAME} =="ASM_DATA03p1", NAME:="asm/%E{DM_NAME}", OWNER:="grid", GROUP:="asmadmin", MODE:="0660"
ENV{DM_NAME} =="ASM_DATA04p1", NAME:="asm/%E{DM_NAME}", OWNER:="grid", GROUP:="asmadmin", MODE:="0660"
ENV{DM_NAME} =="ASM_OCRVOTE01p1", NAME:="asm/%E{DM_NAME}", OWNER:="grid", GROUP:="asmadmin", MODE:="0660"
ENV{DM_NAME} =="ASM_OCRVOTE02p1", NAME:="asm/%E{DM_NAME}", OWNER:="grid", GROUP:="asmadmin", MODE:="0660"
ENV{DM_NAME} =="ASM_OCRVOTE03p1", NAME:="asm/%E{DM_NAME}", OWNER:="grid", GROUP:="asmadmin", MODE:="0660"

Осталось только перезапустить сервис

# service multipathd restart
ok
Stopping multipathd daemon:                                [  OK  ]
Starting multipathd daemon:                                [  OK  ]

Настройка Linux Завершена

Приступаем к установке грида, для этого заходим под учеткой grid

$ /tmp/install/grid/runInstaller

и далее по принципу next->next->next
Выбираем установку OracleGrid
30.png
Выбираем стандартный кластер
31.png
утверждаем что мы что-то о системе знаем и не будем все ставить по default’у
32.png
Из языков нам достаточно только английского
33.png
Определяем название кластера и скан адресов. !!!Важно. Мы же помним что к этому моменту это все должно быть прописано в DNS сети?
34.png
Определяем имена для public и VIP сетей. !!!Важно. см. предыдущий пункт.
35.png
Определяем сетевые интерфейсы для private и public подсетей 36.png
Указываем что будем использовать стандартный ASM37.png
Выбираем дисковую группу для грида38.png

Но поскольку у нас Multipathи диски лежат отдельно то мы их не видим, поэтому меняем путь к дискам
39.png
и о чудо у нас на выбор куча дисков
40.png
Выбираем отведенные под OCR
41.png
Определяем пароль
42.png
Утверждаем что ничего умнее себя использовать не будем
43.png
EM-ки у нас пока нету
44.png
Выбираем группы пользователей
45.png
определяем пути установки
46.png
Утверждаем что мы и сами можем запустить скрипты на нодах от имени root’а47.png
Нажимаем next и молимся. В идеале добиться чтобы у нас небыло даже warning’ов, но в случае наличия error’ов процесс лучше даже не продолжать, а курить google с целью снятия порчи48.png
После того как у нас все получилось нам показывают обзор, как последний шанс остановится и не допустить взрыв сверхновой49.png
В процессе установки oracle grid попросит у нас выполнить скрипты от имени root — выполняем
50_1.png
50_2.png

Вот и все! установка grid завершена

51.png

Устанавливаем Oracle, тут тоже все просто- запускаем инсталлятор от имени пользователя oracle. У нас внутренняя сеть, поэтому почту получать мы не можем даже теоретически
71.png
Базу поднимать мы будем из бэкапа, поэтому кроме ПО ничего нам ставить не нужно
72.png

Да у нас будет GRID
73.png
Определяем public имена нод
74.png
вводим имена пользователей для коннекта по SSH (И ДА, нам не нужно устанавливать ПО на обеих машинах, грид сам разнесет ПО по нодам)
75.png
Проверяем доступ
76.png

Выбираем язык77.png

Выбираем версию
78.png
Определяем пути для установки79.png

Определяем группы 80.png

Проверка можно ли ставится(как правило все проблемы устраняются еще на моменте установки GRID’а)
81.png
Поскольку у нас есть warning’и от которых нам не удалось отбиться и мы сказали их игнорить, Oracle переспрашивает уверены ли мы
83.png
если мы уверены, то начинается установка, и где-то в самом конце (процентах этак на 95) oracle попросит нас от имени root’а выполнить на нодах скрипт- выпоняем
84.png
И вот оно счастье
85.png

Остались пустяки патчим Oracle

Качаем нужные патчи с support.oracle.com к каждому патчу смотрим какая версия OPatch ему нужна, если у нас меньшая — качаем новый OPatch и просто перезаписываем файлики на двух нодах
после этого последовательность действий проста как грабли

Смотрим версию Opatch и какие патчи у нас уже установлены

[oracle@belstat-sdb01 install]$ /u01/app/oracle/product/12.1.0.2/dbhome_1/OPatch/opatch lsinventory

Распаковываем архив с патчем

[oracle@belstat-sdb01 install]$ unzip p23615308_121020_Linux-x86-64.zip -d ora12_psu

Заходим в папку с распакованным патчем

[oracle@belstat-sdb01 install]$ cd ora12_psu/23054327/

устанавливаем переменные окружения

[oracle@belstat-sdb01 23054327]$ export PATH=/u01/app/oracle/product/12.1.0.2/dbhome_1/OPatch/:$PATH

[oracle@belstat-sdb01 23054327]$ export ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/dbhome_1

проверяем условия установки патча

[oracle@belstat-sdb01 23054327]$ opatch prereq CheckConflictAgainstOHWithDetail -ph ./
Oracle Interim Patch Installer version 12.2.0.1.5
Copyright (c) 2017, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle Home       : /u01/app/oracle/product/12.1.0.2/dbhome_1
Central Inventory : /u01/app/oraInventory
   from           : /u01/app/oracle/product/12.1.0.2/dbhome_1/oraInst.loc
OPatch version    : 12.2.0.1.5
OUI version       : 12.1.0.2.0
Log file location : /u01/app/oracle/product/12.1.0.2/dbhome_1/cfgtoollogs/opatch/opatch2017-06-15_10-27-21AM_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

если все хорошо устанавливаем патч

[oracle@belstat-sdb01 23054327]$ opatch apply

Осталось мало добавить в кластер дисковые группы. для этого заходим с учетной записью grid

[grid@belstat-sdb01 ~]$ . oraenv
ORACLE_SID = [grid] ? +ASM1
The Oracle base has been set to /u01/app/grid

смотрим какие файловые группы уже подключены

[grid@belstat-sdb01 ~]$ asmcmd
ASMCMD> ls
GRID/
ASMCMD> lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  1048576     30717    26234                0           26234              0             Y  GRID/

смотрим какие диски презентованы для asm

[grid@belstat-sdb01 ~]$ ls -la /dev/asm
total 0
drwxr-xr-x  2 root root         260 Jun 16 09:32 .
drwxr-xr-x 22 root root        7360 Jun 16 09:32 ..
brw-rw----  1 grid asmadmin 249, 16 Jun 16 09:36 ASM_DATA01p1
brw-rw----  1 grid asmadmin 249, 21 Jun 16 09:36 ASM_DATA02p1
brw-rw----  1 grid asmadmin 249, 22 Jun 16 09:36 ASM_DATA03p1
brw-rw----  1 grid asmadmin 249, 26 Jun 16 09:36 ASM_DATA04p1
brw-rw----  1 grid asmadmin 249, 11 Jun 16 09:36 ASM_FRA01p1
brw-rw----  1 grid asmadmin 249, 13 Jun 16 09:36 ASM_FRA02p1
brw-rw----  1 grid asmadmin 249, 15 Jun 16 09:36 ASM_FRA03p1
brw-rw----  1 grid asmadmin 249, 27 Jun 16 09:36 ASM_FRA04p1
brw-rw----  1 grid asmadmin 249, 23 Jun 16 09:50 ASM_OCRVOTE01p1
brw-rw----  1 grid asmadmin 249, 24 Jun 16 09:50 ASM_OCRVOTE02p1
brw-rw----  1 grid asmadmin 249, 25 Jun 16 09:50 ASM_OCRVOTE03p1

и какие из них уже подключены

[grid@belstat-sdb01 ~]$ asmcmd lsdsk
Path
/dev/asm/ASM_OCRVOTE01p1
/dev/asm/ASM_OCRVOTE02p1
/dev/asm/ASM_OCRVOTE03p1

Теперь из sqlplus создаем файловые группы и добавляем в них диски

[grid@belstat-sdb01 ~]$ sqlplus / as sysasm

SQL*Plus: Release 12.1.0.2.0 Production on Fri Jun 16 09:51:15 2017

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL> CREATE DISKGROUP DATA EXTERNAL REDUNDANCY DISK '/dev/asm/ASM_DATA*';

Diskgroup created.

SQL>  CREATE DISKGROUP FRA EXTERNAL REDUNDANCY DISK '/dev/asm/ASM_FRA*';

Diskgroup created.

SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options
[grid@belstat-sdb01 ~]$

смотрим что видит asm

[grid@belstat-sdb01 ~]$ asmcmd lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  1048576   1433536  1433470                0         1433470              0             N  DATA/
MOUNTED  EXTERN  N         512   4096  1048576   1126336  1126273                0         1126273              0             N  FRA/
MOUNTED  EXTERN  N         512   4096  1048576     30717    26234                0           26234              0             Y  GRID/

Ок нас это устраивает
переходим на вторую ноду и смотрим что видно там

[grid@belstat-sdb02 ~]$ asmcmd lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  1048576     30717    26234                0           26234              0             Y  GRID/

через sqlplus подключаем дисковые группы

[grid@belstat-sdb02 ~]$ sqlplus / as sysasm

SQL*Plus: Release 12.1.0.2.0 Production on Fri Jun 16 09:57:13 2017

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL> ALTER DISKGROUP DATA MOUNT;

Diskgroup altered.

SQL> ALTER DISKGROUP FRA MOUNT;

Diskgroup altered.

SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

смотрим все ли подключилось

[grid@belstat-sdb02 ~]$ asmcmd lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  1048576   1433536  1433427                0         1433427              0             N  DATA/
MOUNTED  EXTERN  N         512   4096  1048576   1126336  1126230                0         1126230              0             N  FRA/
MOUNTED  EXTERN  N         512   4096  1048576     30717    26234                0           26234              0             Y  GRID/

все Ок. Можно восстанавливать базу

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *