Исходные данные и задача:
Есть две серверные машины с установленной Windows Server. Для них нарезаны и презентованы дополнительные дисковые емкости на внешней СХД. Кроме того уже решен вопрос по IP-адресам и именам в DNS
Необходимо установить двухнодовый кластер Oracle на Linux
Таким образом задача делится на следующие этапы:
1. Установка и настройка Linux
2.Установка GRID и Oracle, накат патчей
Первоначальная установка на обоих серверах абсолютно идентична в интерактивном режиме:
Подключаемся к компьютеру через ILOM и дальше в основном кликаем на next
- Заглавный экран
- Выбираем язык
- выбираем раскладку клавиатуры
- Поскольку у нас машина серверная с собственным RAID-массивом, выбираем пункт специализированный дисковый массив
- Выбираем наш RAID-массив
- Утверждаем что у нас новая установка, никакого upgrade’а
- Определяем имя машины (belstat-sdb01 и belstat-sdb02) соответственно, тут же настраиваем IP-адреса, чтобы дальнейшие настройки делать не через ILOM, а через SSH
- Выбираем часовой пояс
- Назначаем root’овский пароль
- Дальше Разбираемся с дисковым пространством на RAID’е локальной машины. Для начала определяем что мы хотим использовать все место на RAID
- Linux предполагает примерно следующую разбивку места по умолчанию
Однако мы с этим не согласны, слишком много места на Home да и ставить Oracle в раздел, который называется не «u01», вроде как не по фэншую,
Существует куча документов, которые определяют наиболее кошерное распределение дискового места (периодически противоречащих один другому) - поэтому приводим разбивку места к чему-то подобному
- Соглашаемся с изменениями
- Определяем где будет boot loader (в нашем случае без вариантов)
- Выбираем базовый сервер, поскольку нам особо ничего от самого linux не нужно
- Нажимаем кнопку next и мучительно ожидаем завершения процесса инсталляции
- Все что нам осталось это перегрузить машину
Повторяем процесс на второй машине
Итак у нас есть две готовые машины на 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
Выбираем стандартный кластер
утверждаем что мы что-то о системе знаем и не будем все ставить по default’у
Из языков нам достаточно только английского
Определяем название кластера и скан адресов. !!!Важно. Мы же помним что к этому моменту это все должно быть прописано в DNS сети?
Определяем имена для public и VIP сетей. !!!Важно. см. предыдущий пункт.
Определяем сетевые интерфейсы для private и public подсетей
Указываем что будем использовать стандартный ASM
Выбираем дисковую группу для грида
Но поскольку у нас Multipathи диски лежат отдельно то мы их не видим, поэтому меняем путь к дискам
и о чудо у нас на выбор куча дисков
Выбираем отведенные под OCR
Определяем пароль
Утверждаем что ничего умнее себя использовать не будем
EM-ки у нас пока нету
Выбираем группы пользователей
определяем пути установки
Утверждаем что мы и сами можем запустить скрипты на нодах от имени root’а
Нажимаем next и молимся. В идеале добиться чтобы у нас небыло даже warning’ов, но в случае наличия error’ов процесс лучше даже не продолжать, а курить google с целью снятия порчи
После того как у нас все получилось нам показывают обзор, как последний шанс остановится и не допустить взрыв сверхновой
В процессе установки oracle grid попросит у нас выполнить скрипты от имени root — выполняем
Вот и все! установка grid завершена
Устанавливаем Oracle, тут тоже все просто- запускаем инсталлятор от имени пользователя oracle. У нас внутренняя сеть, поэтому почту получать мы не можем даже теоретически
Базу поднимать мы будем из бэкапа, поэтому кроме ПО ничего нам ставить не нужно
Да у нас будет GRID
Определяем public имена нод
вводим имена пользователей для коннекта по SSH (И ДА, нам не нужно устанавливать ПО на обеих машинах, грид сам разнесет ПО по нодам)
Проверяем доступ
Выбираем язык
Выбираем версию
Определяем пути для установки
Определяем группы
Проверка можно ли ставится(как правило все проблемы устраняются еще на моменте установки GRID’а)
Поскольку у нас есть warning’и от которых нам не удалось отбиться и мы сказали их игнорить, Oracle переспрашивает уверены ли мы
если мы уверены, то начинается установка, и где-то в самом конце (процентах этак на 95) oracle попросит нас от имени root’а выполнить на нодах скрипт- выпоняем
И вот оно счастье
Остались пустяки патчим 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/
все Ок. Можно восстанавливать базу