ORACLE 19C RAC KURULUMU (19C RAC INSTALLATION)

Oracle RAC Kurulumu için En az 2 adet node (Oracle Linux makinesi) sonrasında ise, eger Rac  2 nodlu ise bu 2 nodunda gorebilceği bir storage yapısının olması gerekmektedir. Kabataslak olarak mimariyi resmedecek olursak;

Bizim Kuracağımız yapı için 2 adet node bir adet storage server (openfiler) olacak ve Network IP yapılandırmamız da aşağıdaki gibi yapılandırılacaktır.

(Openfiler kurulumu için /https://www.farukcevik.com.tr/openfiler-kurulumu/)

  • Public IP Block 150.150.100.X Mask /24
  • Private IP Blok 120.120.100.X Mask /24
  • Storage Server (Open Filer) 150.150.100.50
  • Rac1   150.150.100.10     rac1.frkcvk.com               rac1
  •             120.120.100.151  rac1-priv.frkcvk.com      rac1-priv             
  •             150.150.100.12   rac1-vip.frkcvk.com       rac1-vip
  • Rac2   150.150.100.11     rac2.frkcvk.com               rac2
  •             120.120.100.152  rac2-priv.frkcvk.com      rac2-priv
  •             150.150.100.13     rac2-vip.frkcvk.com         rac2-vip
  • SCAN
  • 150.150.100.14                  scan-frkcvk.com              scan-frkcvk
  • 150.150.100.15                  scan-frkcvk.com              scan-frkcvk
  • 150.150.100.16                  scan-frkcvk.com              scan-frkcvk

İki adet Oracle Linux 7.4 Kurulumu yapıldı

rac1 nodu için ayarlamaları yapıyoruz daha sonra aynı konfigurasyonu rac2 nodu içinde yapacağız.

rac1 nodumuzu kuruluma hazılayalım, öncelikle IP ayarlarının doğru yapıldığını varsayarak devam ediyorum.

preinstall paketimi yüklüyorum bu paket oracle kullanıcı, group ayarlarını, rpm paketlerini kernel parametrelerini ve Dependency leri benim için ayarlayacak.

yum install -y oracle-database-preinstall-19c
yum update -y 

Eger internetimiz yok ise bu işlemleri el ile bizim ayarlamamız gerekmektedir.

Oracle user password ayarını yapıyoruz.

passwd oracle

Host dosyamızı ayarlıyoruz.

vi /etc/hosts
150.150.100.10  rac1.frkcvk.com rac1
120.120.100.151 rac1-priv.frkcvk.com    rac1-priv
150.150.100.12  rac1-vip.frkcvk.com     rac1-vip

150.150.100.11  rac2.frkcvk.com rac2
120.120.100.152 rac2-priv.frkcvk.com    rac2-priv
150.150.100.13  rac2-vip.frkcvk.com      rac2-vip

150.150.100.14  scan-frkcvk.com scan-frkcvk
150.150.100.15  scan-frkcvk.com scan-frkcvk
150.150.100.16  scan-frkcvk.com scan-frkcvk

Selinux u disabled yapıyoruz

vi /etc/selinux/config
....
SELINUX=disabled
....

Firewallı kapatyoruz

systemctl stop firewalld
systemctl disable firewalld

Bir Oracle RAC veritabanı oluşturmak için paylaşılan depolama ve SCAN adresleri için bir DNS sunucusu gerekir. Bunun için birkaç yöntem kullanılabilir bir DNS serverimiz yok o yüzden çok kötü bir yol olsada her noda dnsmaq kullanarak bu sorunun üzerinden geleceğiz.

yum install dnsmasq

systemctl start dnsmasq

systemctl status dnsmasq
● dnsmasq.service - DNS caching server.
   Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; disabled; vendor preset: dis                             abled)
   Active: failed (Result: exit-code) since Sat 2020-10-17 19:55:10 +03; 7s ago
  Process: 24514 ExecStart=/usr/sbin/dnsmasq -k (code=exited, status=2)
 Main PID: 24514 (code=exited, status=2)

Oct 17 19:55:10 rac1.frkcvk.com systemd[1]: Started DNS caching server..
Oct 17 19:55:10 rac1.frkcvk.com systemd[1]: Starting DNS caching server....
Oct 17 19:55:10 rac1.frkcvk.com dnsmasq[24514]: dnsmasq: failed to create listening ...e
Oct 17 19:55:10 rac1.frkcvk.com systemd[1]: dnsmasq.service: main process exited, c...NT
Oct 17 19:55:10 rac1.frkcvk.com systemd[1]: Unit dnsmasq.service entered failed state.
Oct 17 19:55:10 rac1.frkcvk.com systemd[1]: dnsmasq.service failed.
Hint: Some lines were ellipsized, use -l to show in full.

dnsmasq alışmıyor araştırmam sonucu /etc/dnsmasq.conf içerisine aşağıdaki iki satırı eklememiz gerekiyor.

except-interface=virbr0
bind-interfaces
systemctl restart dnsmasq
systemctl status dnsmasq
● dnsmasq.service - DNS caching server.
   Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-10-17 20:56:47 +03; 5s ago
 Main PID: 25311 (dnsmasq)
   CGroup: /system.slice/dnsmasq.service
           └─25311 /usr/sbin/dnsmasq -k

Oct 17 20:56:47 rac1.frkcvk.com dnsmasq[25311]: listening on lo(#1): ::1
Oct 17 20:56:47 rac1.frkcvk.com dnsmasq[25311]: started, version 2.76 cachesize 150
.........

dnsmasq.conf dosyasına bizim oluştıuracağımız bir dosyayı işaret edecek şekilde ayarlayacağız ve SCAN name lerimizin çözümlenmesini sağlayacağız. Bunun için /etc/racdns dosyasını oluşturuyoruz içerisine SCAN IP ve isimlerini yazıyoruz.

vi /etc/racdns
#SCAN
150.150.100.14  scan-frkcvk.com scan-frkcvk
150.150.100.15  scan-frkcvk.com scan-frkcvk
150.150.100.16  scan-frkcvk.com scan-frkcvk

Şimdi /etc/dnsmasq.conf dosyasını /etc/racdns dosyasını işaret etmesi için /etc/dnsmasq.conf içerisine aşağıdaki satırı ekliyoruz.

addn-hosts=/etc/racdns

Sonrasında ise /etc/resolc.conf dosyası ile ilgili problemi çözeceğiz.

 cat /etc/resolv.conf
# Generated by NetworkManager
search frkcvk.com
nameserver 8.8.8.8

Bu dosyayı aşağıdaki gibi düzenliyoruz.

# Generated by NetworkManager
nameserver 127.0.0.1
search frkcvk.com
nameserver 8.8.8.8

Network her başlatılıdığında veya makine reboot olduğunda yeniden oluşturuyor, bu nedenle dosyayı yazma kormalı yapıyoruz.

chattr +i /etc/resolv.conf
[root@rac1 ~]# nslookup scan-frkcvk.com
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   scan-frkcvk.com
Address: 150.150.100.16
Name:   scan-frkcvk.com
Address: 150.150.100.14
Name:   scan-frkcvk.com
Address: 150.150.100.15

[root@rac1 ~]# nslookup scan-frkcvk
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   scan-frkcvk
Address: 150.150.100.16
Name:   scan-frkcvk
Address: 150.150.100.14
Name:   scan-frkcvk
Address: 150.150.100.15

DNS problemi bu node için çözüldü. Şimdi directorlerimizi oluşturuyoruz.

mkdir -p /u01/app/oracle/product/19.3.0.0/db
mkdir -p /u01/app/19.3.0.0/grid
chown -R oracle:oinstall /u01
chmod -R 775 /u01
su - oracle

Ortam değişkenlerini set ediyoruz.

vi .setEnv
export TMP=/tmp
export TMPDIR=$TMP

export ORACLE_HOSTNAME=rac1.frkcvk.com
export ORACLE_UNQNAME=racdb
export ORACLE_BASE=/u01/app/oracle
export GRID_HOME=/u01/app/19.3.0.0/grid
export DB_HOME=$ORACLE_BASE/product/19.3.0.0/db
export ORACLE_HOME=$DB_HOME
export ORACLE_SID=racdb1
export ORACLE_TERM=xterm
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

alias grid_env='. /home/oracle/grid_env'
alias db_env='. /home/oracle/db_env'
vi .db_env
export ORACLE_SID=racdb1
export ORACLE_HOME=$DB_HOME
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
vi .grid_env
export ORACLE_SID=+ASM1
export ORACLE_HOME=$GRID_HOME
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

Stroge server tarafından disk yapılandırması için çok güvenilir olmasada burada test için openfiler kullandım openfiler dan iscsi disk yapılandırması yazımızı uyguluyoruz https://www.farukcevik.com.tr/oracle-linux-iscsi-disk-ekleme-openfiler/

Aynı adımları node2 içinde tekrarlıyorum.

Bundan sonraki disk yapılandırmamızı sadece tek bir nodda yapıyoruz.

rpm -ivh oracleasm*

disklerimiz

lsblk
NAME             MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                8:0    0  100G  0 disk
├─sda1             8:1    0    1G  0 part /boot
└─sda2             8:2    0   99G  0 part
  ├─ol_rac1-root 249:0    0 91.1G  0 lvm  /
  └─ol_rac1-swap 249:1    0  7.9G  0 lvm  [SWAP]
sdb                8:16   0   16G  0 disk
sdc                8:32   0   16G  0 disk
sr0               11:0    1 1024M  0 rom

sdb ve sdc diskleri ISCSI ile baglı ortak ASM diskleri olacak, onları biçimlendiriyoruz.

[root@rac1 tmp]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x51f67548.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-33554431, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-33554431, default 33554431):
Using default value 33554431
Partition 1 of type Linux and of size 16 GiB is set

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

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

Tekrak bakıyoruz disklerimiz paritionlı hale geldimi

[root@rac1 tmp]# lsblk
NAME             MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                8:0    0  100G  0 disk
├─sda1             8:1    0    1G  0 part /boot
└─sda2             8:2    0   99G  0 part
  ├─ol_rac1-root 249:0    0 91.1G  0 lvm  /
  └─ol_rac1-swap 249:1    0  7.9G  0 lvm  [SWAP]
sdb                8:16   0   16G  0 disk
└─sdb1             8:17   0   16G  0 part
sdc                8:32   0   16G  0 disk
└─sdc1             8:33   0   16G  0 part
sr0               11:0    1 1024M  0 rom

Oracleasm , yapılandırıp disklerimizi oraclasm ile damgalayacağız.

[root@rac1 tmp]# oracleasm configure -i
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver.  The following questions will determine whether the driver is
loaded on boot and what permissions it will have.  The current values
will be shown in brackets ('[]').  Hitting <ENTER> without typing an
answer will keep that current value.  Ctrl-C will abort.

Default user to own the driver interface []: oracle
Default group to own the driver interface []: dba
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
[root@rac1 tmp]# oracleasm init

oracleasm disklerimizi oluşturuyoruz

oracleasm createdisk DATA1 /dev/sdb1

oracleasm createdisk DATA2 /dev/sdc1

kontrol edelim;

 ll /dev/oracleasm/disks/
total 0
brw-rw----. 1 oracle dba 8, 17 Oct 17 22:35 DATA1
brw-rw----. 1 oracle dba 8, 33 Oct 17 22:35 DATA2

Şimdi grid yazılımının kurulumuna geçebiliriz.

/u01/app/19.0.0.0/grid
./gridSetup.sh

add diyerek diğer nodu ekliyoruz,

ssh connectivity kısmından şifremizi girip setup diyoruz ve test ediyoruz.

Buradaki Hataları Ignore edip geçiyorum .

Ok ve next ile devam ediyoruz.

Cluster çalışıyor mu? kontrol edelim.

ora.LISTENER.lsnr
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.chad
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.net1.network
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.ons
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.proxy_advm
               OFFLINE OFFLINE      rac1                     STABLE
               OFFLINE OFFLINE      rac2                     STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       rac2                     STABLE
      2        ONLINE  ONLINE       rac1                     STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       rac1                     STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       rac2                     STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       rac2                     STABLE
ora.OCR.dg(ora.asmgroup)
      1        ONLINE  ONLINE       rac2                     STABLE
      2        ONLINE  ONLINE       rac1                     STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       rac2                     Started,STABLE
      2        ONLINE  ONLINE       rac1                     Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       rac2                     STABLE
      2        ONLINE  ONLINE       rac1                     STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       rac2                     STABLE
ora.qosmserver
      1        ONLINE  ONLINE       rac2                     STABLE
ora.rac1.vip
      1        ONLINE  ONLINE       rac1                     STABLE
ora.rac2.vip
      1        ONLINE  ONLINE       rac2                     STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       rac1                     STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       rac2                     STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       rac2                     STABLE
crsctl check cluster -all
**************************************************************
rac1:
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
**************************************************************
rac2:
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
srvctl status nodeapps
VIP 150.150.100.12 is enabled
VIP 150.150.100.12 is running on node: rac1
VIP 150.150.100.13 is enabled
VIP 150.150.100.13 is running on node: rac2
Network is enabled
Network is running on node: rac2
Network is running on node: rac1
ONS is enabled
ONS daemon is running on node: rac2
ONS daemon is running on node: rac1
[oracle@rac1 ~]$
 ocrcheck
Status of Oracle Cluster Registry is as follows :
         Version                  :          4
         Total space (kbytes)     :     491684
         Used space (kbytes)      :      84348
         Available space (kbytes) :     407336
         ID                       :  218152433
         Device/File Name         :       +OCR
                                    Device/File integrity check succeeded

                                    Device/File not configured

                                    Device/File not configured

                                    Device/File not configured

                                    Device/File not configured

         Cluster registry integrity check succeeded

         Logical corruption check bypassed due to non-privileged user

Şimdi database yazılımı kurup ardından, dbca ile database kurlumunu yapacağız.

/u01/app/oracle/product/19.3.0.0/db
./runInstaller

Ve kurulum başarı ile tamamlandı, simdi asmca komutu ile databasede kullanılacak disklerimizi yapılandıracağız.

asmca

şimdi dbca ile atabase oluşturalım.

. .setEnv
. .db_env
dbca