Pages

Monday, February 18, 2019

Установка Oracle RAC 12c Release 1

Всем привет. Первая заметка данного блога будет посвящена установке и настройке Oracle RAC 12c Release 1. Основной целью является базовая настройка кластера, для того чтобы в дальнейшем проводить различные эксперименты, которые будут подробно описаны в других статьях.









Данную заметку можно разбить на следующие части:

  1. Настройка сетевых адаптеров в VMware
  2. Установка виртуальной машины для DNS сервера
  3. Установка виртуальных машин для Oracle RAC узлов
  4. Конфигурирование DNS сервера
  5. Добавление дисков на уровне VMware
  6. Подготовка кластерных узлов к установке
  7. Создание дисков для ASM
  8. Конфигурирование экземпляра ASM
  9. Конфигурирование экземпляра БД
  10. Проверка работоспособности системы

1. Настройка сетевых адаптеров в VMware

Прежде чем перейти к непосредственной установке системы – важно заранее сконфигурировать сетевые адаптеры, которые будут добавлены каждой из виртуальных машин.
Для Oracle RAC нужно иметь отдельную подсеть для внутрикластерного взаимодействия (private network) и еще одну (public network), которая будет использоваться для Node IP, Node VIP, SCAN.
Я использую VMware Workstation версии 11.1.0 build-2496824 и для добавления новой подсети нужно проделать следующие шаги:

Edit – Virtual Network Editor – Change Settings


Далее делаем следующее:

Add Network – Vmnet6

Указываем IP, который вам нужен. В моем случае следующая подсеть будет использоваться как Public:


Аналогичным способом создаем другую подстеть (VMnet7) , которая будет использована для внутрикластерного взаимподействия (Private):


Далее жмем Apply, чтобы изменения вступили в силу.
В итоге у меня получилась такая конфигурация виртуальных сетей в VMware:



2. Установка виртуальной машины для DNS сервера

В большинстве статей по установке Oracle RAC используется BIND как DNS сервер. DNS играет важную роль в системе, поскольку для корректного использования SCAN технологии не получится просто прописать необходимые IP адреса в файле /etc/hosts на каждом из узлов кластера, точнее получится, но по факту будет всегда использоваться один из SCAN VIP вместо трех. При использовани DNS сервера – SCAN-имя кластера будет каждый раз перенаправляться на новый SCAN VIP по принципу round robin.

В моем случае нашелся дистрибутив с Windows Server 2012, поэтому DNS сервер будем делать на этой ОС, за счет добавления роли DNS Server.

File – New Virtual Machine – Typical - Next


Указываем путь до .iso файла с дистрибутивом системы:

Далее VMware попросит ключ активации Windows, но это можно пропустить на данный момент и нажать Next:

Далее выбираем имя и папку, в которой будет физически располагаться наша виртуальная машина:


Далее все настройки оставляем по дефолту, которые предлагает сам VMware:

В конце жмем Finish:


Сразу добавлю немного оперативной памяти:


После чего запущу виртуальную машину и начнется стандартный процесс установки:



После установки отключим firewall. Есть несколько способов сделать это и самый простой это открыть PowerShell от имени администратора и выполнить следующую команду:

Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False




Далее, перед добавлением роли DNS сервера необходимо прописать статический IP адрес, который будет использоваться данным сервером:

Network – Properties – Change Adapter Settings – Properties – Use Following IP Address – Ok


Далее можно добавить DNS роль. Для этого необходимо открыть:


Server manager – Add roles and features - Next






 Выбираем роль:

DNS Server – Add Features – Next – Next – Next – Install


После завершения установки жмем Close:


Далее необходимо создать зону, в которой будет располагаться наша система. Для этого открываем:

Server Manager – Tools – DNS


Далее жмем правой кнопкой по Forward Lookup Zones – New Zone:


Next – Primary Zone (Next) – Zone Name (Next)




На данном этапе пока все. После того как будут созданы виртуальные машины для двух кластерных узлов и встроенный VMware DHCP сервер присвоит им IP адреса в тех подсетях, которые мы создали ранее, можно будет их прописать в данном DNS сервере.

3. Установка виртуальных машин для Oracle RAC узлов

ОС для установки будет Oracle Linux Server release 6.9.
Подробно останавливаться на каждом шаге не буду. Опишу лишь основные моменты:




Расширил RAM до 5 GB и запустил виртуальную машину, чтобы начался процесс установки:











Из необходимых пакетов я обычно выбираю:

Servers – System administration tools – Select all optional packages



А так же ряд следующих пакетов, которые мне необходимы для комфортной работы с системой:
Desktops
Desktop
Desktop Platform
Fonts
General Purpose Desktop
Graphical Administration Tools
X Windows System

После выбора необходимых пакетов жмем Next и начинается установка операционной системы:



После установки и перезагрузки:









Далее устанавливаем "VMware Tools". Для этого в настройках VMware выбираем следующее:



После чего к виртуалке будет подмаунчен диск с установщиком. Нужно скопировать архив с необходимыми скриптами и запустить его как показано ниже. На все вопросы отвечаю дефолтно:


Далее добавляем сконфигрурированные ранее два сетевых адаптера. Для этого заходим в настройки виртуальной машины и выбираем добавить Network Adapter. В результате должно получиться следующее:



После включения виртуальной машины мы получим следующий результат:


Выполняем аналогичные действия по установке второй виртуальной машины, имя которой, в моем случае будет, head02, а hostname – head02.hydra.com.

4. Конфигурирование DNS сервера

Запускаем виртуальную машину с DNS сервером, если еще не запущена.
Заходим в:

Server Manager – Tools – DNS – Открываем вложение с нашей зоной – Жмем правой кнопкой – New Host (A or AAAA) …


Добавляем узлы следующим образом:


Аналогичным образом добавляем каждый IP-адрес, который будет использоваться в системе.
В итоге у меня получилась следующая картина:



Насколько мне известно, общепринятым является добавление в DNS всех IP адресов, за исключением тех, которые будут относиться к внутрикластерному взаимодействию (в моем случае : 192.168.27.10, 192.168.27.11), которые буду прописаны в файле /etc/hosts на каждом из узлов.

Теперь на каждом из Linux узлов нужно добавить IP этого DNS сервера в файл /etc/resolv.conf.

У меня получилась такая картина:

[root@head01 ~]# cat /etc/resolv.conf
search cerberus.com hydra.com

nameserver 192.168.197.153

[root@head02 ~]# cat /etc/resolv.conf
search cerberus.com hydra.com


nameserver 192.168.197.153


Для проверки того, что DNS сервер используется Linux серверами, достаточно сделать следующее:



Я также заметил, что если с одного сервера попробовать сделать ping второго, то имя расрешается быстро, а вот ответы приходят через несколько секунд. При этом, если пинговать по IP такой задержки нет. Оказалось, что для такого, чтобы избежать такого поведения – необходимо создать для каждого IP, определенного в DNS сервере - PTR запись:

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

1. Correct /etc/udev/rules.d/70-persistent-net.rules

update HWADDR accordinly for each eth --- (!!!) Здесь важно, чтобы буквенные символы мак адреса были нижнего регистра

2. Correct /etc/sysconfig/network-scripts/ifcfg-eth0 1 2

Example for eth0 WITH DNS1
+++++
DEVICE=eth0
NM_CONTROLLED=yes
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
HWADDR=00:0C:29:ED:56:E3
IPADDR=192.168.197.151
NETMASK=255.255.255.0
GATEWAY=192.168.197.2
DNS1=192.168.197.153
+++++

Example for eth1
+++++
DEVICE=eth1
NM_CONTROLLED=yes
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
HWADDR=00:0C:29:ED:56:ED
IPADDR=192.168.26.12
NETMASK=255.255.255.0
GATEWAY=192.168.26.1
+++++

Example for eth2:
+++++
DEVICE=eth2
NM_CONTROLLED=yes
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
HWADDR=00:0C:29:ED:56:F7
IPADDR=192.168.27.10
NETMASK=255.255.255.0
GATEWAY=192.168.27.1
+++++

Reboot here so VMware DHCP can assign provided IP addresses.

After reboot check if all is fine: ifconfig -a

3. Update Network Manager config to avoid /etc/resolv.conf override

cat /etc/NetworkManager/NetworkManager.conf
+++++
[main]
plugins=ifcfg-rh
dns=none
+++++

4. Correct resolv.conf with DNS ip address:

Example:
+++++
search cerberus.com hydra.com
nameserver 192.168.197.153
+++++


Если этого не сделать, тогда адрес будет присваиваться встроенным DHCP сервером VMware, но основное неудобство в том, что файл /etc/resolv.conf будет перезаписан после каждой перезагрузки сервера. Если же определить использование статичного IP, тогда такой проблемы не будет и в /etc/resolv.conf будет уже прописан нужный нам DNS сервер.

Итоговый вывод ifconfig на примере первой ноды:

[root@head01 ~]# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:0C:29:ED:56:E3
          inet addr:192.168.197.151  Bcast:192.168.197.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feed:56e3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:262 errors:0 dropped:0 overruns:0 frame:0
          TX packets:275 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:23359 (22.8 KiB)  TX bytes:23026 (22.4 KiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:ED:56:ED
          inet addr:192.168.26.12  Bcast:192.168.26.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feed:56ed/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:38 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:5626 (5.4 KiB)  TX bytes:1237 (1.2 KiB)

eth2      Link encap:Ethernet  HWaddr 00:0C:29:ED:56:F7
          inet addr:192.168.27.10  Bcast:192.168.27.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feed:56f7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:98 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:16126 (15.7 KiB)  TX bytes:1237 (1.2 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:152 errors:0 dropped:0 overruns:0 frame:0
          TX packets:152 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:14502 (14.1 KiB)  TX bytes:14502 (14.1 KiB)

pan0      Link encap:Ethernet  HWaddr 42:03:1A:95:A8:D7
          BROADCAST MULTICAST  MTU:1500  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)


Для удобства, всю основную сетевую топологию, необходимую для установки Oracle RAC, можно изобразить ввиде след. таблицы:

Public
Private
Name
Node IP
Name
IP
head01.hydra.com
192.168.26.12
head01-riv.hydra.com
192.168.27.10
head02.hydra.com
192.168.26.13
head02-riv.hydra.com
192.168.27.11
Name
Node VIP


head01-vip-hydra.com
192.168.26.14


head02-vip-hydra.com
192.168.26.15


Name
SCAN / SCAN VIP


hydra-scan.hydra.com
192.168.26.16


hydra-scan.hydra.com
192.168.26.17


hydra-scan.hydra.com
192.168.26.18




5. Добавление дисков на уровне VMware

1. В меню виртуальной машины "head01" заходим в настройки "Settings".

2. Нажимаем "Add" – выбираем "Hard Disk" – "Next".

3. Выбираем тип диска "SCSI (Recommended)", режим "Indepenent" – "Persistent" – "Next".

4. "Create a new virtual disk" – "Next"

5. Далее я поставил галочку на "Allocate all disk space now", а размер указал 10 GB.

6. На следующем шаге я присвоил ему имя "disk01.vmdk" – для удобства.

7. Finish.

8. Аналогичным образом я создал еще 3 диска: disk02, disk03, disk04.

Итак, диски созданы, теперь нужно сделать следующее:

9. Переместить созданные диски на другой SCSI device. Для того чтобы избежать всех проблем, которые могут возникнуть в нашем кластерном окружении нам нужно расместить расшаренные диски на другой SCSI контроллер.

Открываем настройки виртуальной машины "head01".

Выбираем первый диск и заходим во вкладку “Advanced”.

10. Меню "Hard Disk Advanced Settings" позволяет модифицировать "Virtual device node". По дефолту там будет выставлено "SCSI 0:1", но нам нужно выставить в "SCSI 1:0". За счет этого новый диск переместится на SCSI controller 1, device 0 (это для disk01). Для остальных дисков нужно будет выбрать "SCSI 2:0", "SCSI 3:0", "SCSI 4:0" соответственно.

11. В настройках виртуальной машины "head02" добавляем те же самые диски, как уже существующие.

12. Далее нужно подкорректировать конфигурационные файлы самых виртуальных машин.

Это необходимо сделать, поскольку, по дефолту VMware Workstation не поддерживает использование общих дисков между виртуальными машинами. Однако, если подкорректировать настройки, то можно добиться необходимого нам результата, чтобы все работало в учебных целях ...

Заходим в папку с файлами виртуальной машины: "D:\VM\head01".
Открываем файл "head01.vmx" текстовым редактором и добавляем в конец следующие параметры:

 disk.locking = "FALSE"
 diskLib.dataCacheMaxSize = "0"
 diskLib.dataCacheMaxReadAheadSize = "0" 
 diskLib.dataCacheMinReadAheadSize = "0" 
 diskLib.dataCachePageSize = "4096" 
 diskLib.maxUnsyncedWrites = "0" 
 scsi1.sharedBus = "virtual"

Предварительно сделать бекап данного файла, на всякий случай.

13. Аналогичные изменения с конфигурационным файлом второй вирт. машины (head02).

6. Подготовка кластерных узлов к установке

Запускаем head01 и приступаем к настройке.

Для автоматической настройки всех необходимых параметров (ядра и т.п.) необходимо выполнить следующее:

$ yum install oracle-rdbms-server-12cR1-preinstall -y

Устанавливаем необходимые пакеты:

{
yum install binutils -y
yum install compat-libcap1 -y
yum install compat-libstdc++-33 -y
yum install compat-libstdc++-33.i686 -y
yum install gcc -y
yum install gcc-c++ -y
yum install glibc -y
yum install glibc.i686 -y
yum install glibc-devel -y
yum install glibc-devel.i686 -y
yum install ksh -y
yum install libgcc -y
yum install libgcc.i686 -y
yum install libstdc++ -y
yum install libstdc++.i686 -y
yum install libstdc++-devel -y
yum install libstdc++-devel.i686 -y
yum install libaio -y
yum install libaio.i686 -y
yum install libaio-devel -y
yum install libaio-devel.i686 -y
yum install libXext -y
yum install libXext.i686 -y
yum install libXtst -y
yum install libXtst.i686 -y
yum install libX11 -y
yum install libX11.i686 -y
yum install libXau -y
yum install libXau.i686 -y
yum install libxcb -y
yum install libxcb.i686 -y
yum install libXi -y
yum install libXi.i686 -y
yum install make -y
yum install sysstat -y
yum install unixODBC -y
yum install unixODBC-devel -y
}

Так же необходимо установить след. пакеты нужные для ASM:

$ rpm -Uvh kmod-oracleasm-2.0.8-15.el6_9.x86_64.rpm
$ rpm -Uvh oracleasmlib-2.0.12-1.el6.x86_64.rpm
$ rpm -Uvh oracleasm-support-2.1.8-1.el6.x86_64.rpm


Создаем группы, пользователей, директорий:

Для хранения Database и Grid Homes я добавил отдельный виртуальный диск к каждой из виртуальных машин, размером 40 GB. Все остальные настройки, касающиеся добавления диска, остались по дефолту.
После добавления на каждой из виртуальных машин необходимо создать партицию и директорию, в которую партиция будет примонтирована.

$ mkdir -p /u01
$ fdisk /dev/sdf

p
n
1
<<<enter>>>
<<<enter>>>
t
83
w

$ mkfs.ext4 /dev/sdf1
$ mount /dev/sdf1 /u01
$ df -h
-----
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_head01-lv_root
                       26G  5.2G   20G  21% /
tmpfs                 2.4G   68K  2.4G   1% /dev/shm
/dev/sda1             477M  124M  329M  28% /boot
.host:/               931G  632G  300G  68% /mnt/hgfs
/dev/sdf1              40G   48M   38G   1% /u01
-----

После этого – нужно добавить следущие строки в файл /etc/fstab, чтобы монтирование происходило автоматически, после каждого рестарта системы:

$ cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sun Feb 10 13:31:58 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_head01-lv_root /                       ext4    defaults        1 1
UUID=b95cd02b-fcef-4819-91f3-bbe13f57ec28 /boot                   ext4    defaults        1 2
/dev/mapper/vg_head01-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0


#device        mountpoint             fstype    options  dump   fsck
/dev/sdf1      /u01                   ext4      defaults 0      1

Создаем необходимые группы

$ groupadd dba
$ groupadd oinstall
$ groupadd oper
$ groupadd asmadmin
$ groupadd asmdba
$ groupadd asmoper

Создаем пользователей

$ useradd -g oinstall -G dba,asmadmin,asmdba,asmoper -d /home/grid grid
$ useradd -g oinstall -G dba,oper,asmadmin -d /home/oracle oracle
$ usermod -a -G oper,asmadmin,asmdba,dba oracle
$ passwd oracle
$ passwd grid

Создаем необходимые директории

$ mkdir -p /u01/app/oracle
$ mkdir -p /u01/app/grid
$ mkdir -p /u01/app/oracle/product/12.1.0.2/db
$ chown -R oracle:oinstall /u01/app/oracle/product/12.1.0.2/db
$ chown -R oracle:oinstall /u01/app/oracle
$ mkdir -p /u01/app/12.1.0.2/grid
$ chown -R grid:oinstall /u01/app/12.1.0.2
$ chown grid:oinstall /u01/app/grid
$ chmod -R 775 /u01
$ chown root:oinstall /u01/app/


Подкорректировать /etc/hosts:

$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6


### Private Network ###

192.168.27.10 head01-priv.hydra.com head01-priv
192.168.27.11 head02-priv.hydra.com head02-priv

### Node IP ###

192.168.26.12 head01.hydra.com head01
192.168.26.13 head02.hydra.com head02

### Node VIP ###

### 192.168.26.14 head01-vip-hydra.com head01-vip
### 192.168.26.15 head02-vip-hydra.com head02-vip

### SCAN ###

### 192.168.26.16 hydra-scan.hydra.com hydra-scan
### 192.168.26.17 hydra-scan.hydra.com hydra-scan
### 192.168.26.18 hydra-scan.hydra.com hydra-scan

Строки, относящиеся к SCAN и Node VIP закомментировал, поскольку запросы к ним буду обрабатываться через DNS.

Устанавливаем SELINUX=permissive

$ cat /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=permissive
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Отключение FireWall:

$ service iptables stop
$ chkconfig iptables off

Отключаем NTP:

В данной установке я не буду конфигурировать NTP, вместо него синхронизировать время между узлами будет оракловый cssd демон. Поэтому отелючаем NTP:

$ service ntpd stop
Shutting down ntpd:                                        [  OK  ]
$ chkconfig ntpd off
$ mv /etc/ntp.conf /etc/ntp.conf.orig
$ rm /var/run/ntpd.pid

Создание файлов окурежния для каждого пользователя:

oracle@head01 ~]$ cat HYDRA01.env
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=head01.hydra.com
export ORACLE_UNQNAME=HYDRA
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0.2/db
export ORACLE_SID=HYDRA1
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export PS1='\[\033[0;32m\]$ORACLE_SID> \[\033[0;33m\]\u@\h\[\033[00m\] [\t] \w]\$ '

grid@head01 [08:25:48] ~]$ cat *env
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=head01.hydra.com
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/12.1.0.2/grid
export ORACLE_SID=+ASM1
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export PS1='\[\033[0;32m\]$ORACLE_SID> \[\033[0;33m\]\u@\h\[\033[00m\] [\t] \w]\$ '

Аналогичные действия выполнил для виртуальной машины head02.


7. Создание дисков для ASM

Теперь те диски, которые мы добавили на одном из предыдущих этапов необходимо раметить средствами ОС. В последствие, эти диски, а точнее парции каждого диска, будут «отданы» ASM и использованы для создания дисковых групп:

$ root@head01
fdisk -l
$ fdisk /dev/sdc
$ fdisk /dev/sdd
$ fdisk /dev/sde
$ fdisk /dev/sdf

Пример для одного из дисков:
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> 
[root@head01 ~]# fdisk /dev/sdc
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xd3aceac5.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

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):
Command (m for help): p

Disk /dev/sdc: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd3aceac5

   Device Boot      Start         End      Blocks   Id  System

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

Command (m for help): p

Disk /dev/sdc: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd3aceac5

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1        1305    10482381   83  Linux

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 83

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

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

{
chown grid:asmadmin /dev/sdc1
chown grid:asmadmin /dev/sdd1
chown grid:asmadmin /dev/sde1
chown grid:asmadmin /dev/sdf1
chmod 660 /dev/sdc1
chmod 660 /dev/sdd1
chmod 660 /dev/sde1
chmod 660 /dev/sdf1
}

Для того чтобы изменения были "видны" на втором узле необходимо сделать следующее:

Пример для одного из дисков (необходимо выполнить для всех четырех)
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
[root@head02 ~]# fdisk /dev/sdc

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/sdc: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb5f00090

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1        1305    10482381   83  Linux

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

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

{
chown grid:asmadmin /dev/sdc1
chown grid:asmadmin /dev/sdd1
chown grid:asmadmin /dev/sde1
chown grid:asmadmin /dev/sdf1
chmod 660 /dev/sdc1
chmod 660 /dev/sdd1
chmod 660 /dev/sde1
chmod 660 /dev/sdf1
}

Далее подготовим диски выше для ASM следующим образом:

>>> root@head01

$ /etc/init.d/oracleasm configure

Answers for questions:
<><><><><> 
Default user to own the driver interface []: grid
Default group to own the driver interface []: asmadmin
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver:                     [  OK  ]
Scanning the system for Oracle ASMLib disks:               [  OK  ]
<><><><><> 

$ /etc/init.d/oracleasm createdisk DATA01 /dev/sdc1
$ /etc/init.d/oracleasm createdisk DATA02 /dev/sdd1
$ /etc/init.d/oracleasm createdisk ARCH01 /dev/sde1
$ /etc/init.d/oracleasm createdisk ARCH02 /dev/sdf1

$ /etc/init.d/oracleasm snandisks
$ /etc/init.d/oracleasm listdisks
-----
ARCH01
ARCH02
DATA01
DATA02
-----

>>> root@head02

$ /etc/init.d/oracleasm configure
$ /etc/init.d/oracleasm snandisks
$ /etc/init.d/oracleasm listdisks
-----
ARCH01
ARCH02
DATA01
DATA02
-----

8. Конфигурирование экземпляра ASM

Наконец-то приступаем к установке софта. Первым делом необходимо установить Grid.
Скачиваем архивы с сайта Oracle, распаковываем и переходим к установке.

>>> grid@head01/head02

unzip linuxamd64_12102_grid_1of2.zip
unzip linuxamd64_12102_grid_2of2.zip
cd grid
./runInstaller






















9. Конфигурирование экземпляра БД

Настало время перейти к установке Oracle Database.
Скачиваем архивы с сайта Oracle, распаковываем и переходим к установке.

>>> oracle@head01/head02

unzip linuxamd64_12102_database_1of2.zip
unzip linuxamd64_12102_database_2of2.zip
cd database/
./runInstaller


























10. Проверка работоспособности системы

>>> oracle

$ srvctl status database -d HYDRA
Instance HYDRA1 is running on node head01
Instance HYDRA2 is running on node head02

$ srvctl config database -d HYDRA
Database unique name: HYDRA
Database name: HYDRA
Oracle home: /u01/app/oracle/product/12.1.0.2/db
Oracle user: oracle
Spfile: +DATA/HYDRA/PARAMETERFILE/spfile.288.1000279357
Password file: +DATA/HYDRA/PASSWORD/pwdhydra.276.1000278689
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools:
Disk Groups: DATA
Mount point paths:
Services:
Type: RAC
Start concurrency:
Stop concurrency:
OSDBA group: dba
OSOPER group: oper
Database instances: HYDRA1,HYDRA2
Configured nodes: head01,head02
Database is administrator managed

$ sqlplus / as sysdba

SQL> select instance_name, status from gv$instance;

INSTANCE_NAME    STATUS
---------------- ------------
HYDRA2           OPEN
HYDRA1           OPEN

>>> root

$ crsctl status res -t

--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
               ONLINE  ONLINE       head01                   STABLE
               ONLINE  ONLINE       head02                   STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       head01                   STABLE
               ONLINE  ONLINE       head02                   STABLE
ora.asm
               ONLINE  ONLINE       head01                   Started,STABLE
               ONLINE  ONLINE       head02                   Started,STABLE
ora.net1.network
               ONLINE  ONLINE       head01                   STABLE
               ONLINE  ONLINE       head02                   STABLE
ora.ons
               ONLINE  ONLINE       head01                   STABLE
               ONLINE  ONLINE       head02                   STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       head02                   STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       head01                   STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       head01                   STABLE
ora.MGMTLSNR
      1        OFFLINE OFFLINE                               169.254.190.102 192.
                                                             168.27.10,STABLE
ora.cvu
      1        OFFLINE OFFLINE                               STABLE
ora.head01.vip
      1        ONLINE  ONLINE       head01                   STABLE
ora.head02.vip
      1        ONLINE  ONLINE       head02                   STABLE
ora.hydra.db
      1        ONLINE  ONLINE       head01                   Open,STABLE
      2        ONLINE  ONLINE       head02                   Open,STABLE
ora.mgmtdb
      1        OFFLINE OFFLINE                               Instance Shutdown,ST
                                                             ABLE
ora.oc4j
      1        OFFLINE OFFLINE                               STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       head02                   STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       head01                   STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       head01                   STABLE

--------------------------------------------------------------------------------