Oracle 11g R2 RAC Kurulumu

Önceki Makalelerimizde Oracle Database'i Tek bir node üzerine kurmuş konfigürasyonlarını yapmıştık. Bu paylaşımda ise Oracle Rac kurulumunu Bir sanal makine yaratma adımından itibaren anlatacağım. Bu konuda Türkçe kaynakların sınırlı sayıda olması ve kurulumunun biraz daha kompleks olmasından dolayı adım adım ve herşeyi açıklayarak gitmeye çalışacağım. Umarım Faydalı bir makale olur.
Öncelikler Oracle RAC mimarisinden biraz bahsedelim ki kullanacağımız kavramlar havada kalmasın.
Birden fazla bilgisayarın grid yazılımı ve Oracle Database yazılımını kullanarak Tek bir veritabanı üzerinden işlem yapmasını sağlayan yapı diyebeliriz basitçe. Şöyle ki kurulumunu yaptığımız oracle Database single node üzerindeydi. kurulum yaptığım database sunucusu herhangi bir sebepten dolayı erişilemez duruma geldiği anda veritabanımız devre dışı kalıyordu. RAC mimarisinde ise birden fazla node bulunmaktadır. Sunuculardan bir tanesi çöktüğü zaman onun iş yükü de diğer sunucu tarafından üstlenilir ve veritabanımıza bağlanan kullanıcılar bunu hissetmeden kesintisiz hizmet almaya devam ederler. Her sunucu kendine at bir instance üzerinden işlemleri gerçeleştirmektedir.Ancak Cache fusion Teknoloji sayesinde oracle database sanki Tek bir instance tarafından yönetiliyormuş gibi davranır. Oracle RAC paylaşımlı depolama alanı (shared Storage ) yapısını kullanır. Çünkü dosyalar ve instance arasında 1'e 1 ilişki yoktur. 2node'lu bir yapımız olduğunu düşünürsek; 2 sunucunun da veri dosyalarına erişme imkanı bu şekilde sağlanmaktadır. Oracle RAC mimarisinin bize faydalarını şu şekilde özetleyebiliriz.

* Erişebilirlik (Fault Tolerance) : Kaynaklar ve uygulamalar birden fazla sunucu üzerinde çalışacağı için, bir sunucumuzdaki arıza veya hata sistemin hizmet vermesine engel olmayacaktır. Dolayısıyla kesintisiz hizmet vermeye devam edecektir sistemimiz.

*Yük Dağıtma (Load Balancing) : Kullanıcı istekler donde'lar arasında paylaştırılır. Sistem yükü dengeli bir şekilde dağıtılmış olur.

*Ölçeklenirlik (Scalability) : Sistem çalışırken hizmet kesintisi olmadan yeni node ekleyip çıkarabiliriz yapımıza.

Mantık olarak düşünürsek zaten bir tane süper sunucumuz olmasındansa bu özellikleri 3 4 farklı sunucuya dağıtıp totalde aynı donanım kaynaklarına sahip olarak RAC yapısını kullanmak daha mantıklıdır. Çünkü Tek sunucumuz olduğunda bir arıza yüzünden veritabanımıza erişim kesilicekken diğer türlü bir sunucumuzun arıza durumunda dahi diğer üç tanesi hizmet vermeye devam edecek ve hizmet kesintimiz olmayacaktır.. Yeri geldikçe bu mimarinin sahip olduğu spesifik özellikler hakkında açıklamalarda buluncağım . Şimdi kurulum öncesi gereksinimlerimize ve senaryomuza bir göz atalım.

RAC Kurulum Öncesi Gereksinimler Ve Kurulum Senaryomuz

Kurulum için Virtualbox üzerinde iki Sanal Makine yaratacağız. RAC yapımız 2node üzerinden çalışacaktır.
Donanım : 
- Grid mimarisi en az 1,5GB, ORACLE RAC ise enaz 1GB RAM ihtiyacı duyuyor. Yani oluşturacağımız sanal makineler 3 GB ram'e sahip olmalıdır performanslı bir kurulum için.
- Swap Değerleri Oracle Database kurulumundaki gibi belirleniyor.
- Temp Alanımız Grid için en az 1GB ve Grid Home Dizini için de en az 4,5 GB disk alanına ihtiyaç duyuluyor.
Network gereksinimleri:
- Her düğümde en az iki adet network kartı bulunmalıdır. Kurulum politikanıza göre bu değişebilir. Ben 3adet network kartı tanımlayım 2'sinde bond işlemi uygulayacağım.Public ve private ağlar iççin kullanacağız bu network kartlarını. Eğer Depolama işlemini de network üzerinde bulunan (NAS) bir storage aracılığı ile yapacaksak bir network kartı daha tanımlamalıyız. Network interfacelerin isimleri ik düğümde de aynı olmalıdır. Eğer Node1'de public network için Eth0'ı kullandıysak; Node2'de de böyle olmalıdır.
IP gereksinimleri
- iki düğüm için Public IP adresleri
- iki düğüm için Virtual IP adresleri
- SCAN IP adresleri
- Private network adresleri
Yeri gelmişken Single Client Access Name kavramına bir göz atalım

SCAN nedir?
İstemcilerin Cluster'a erişimini sağlayan sanal bir network arayüz yöneticisidir. SCAN farklı 3 adet IP adresine sahip olmakla birlikte 3ününde adı aynıdır ve cluster ismimizle aynıdır. Scan listener ve local listenerlar farklı kavramlardır. İstemciler bir bağlantı talebinde bulunur; Bu istemciye vekaleten SCAN ıp adres üzerinden dinlemede olan scan listener tarafından bu talep karşılanmaktadır. 


Yani Clusterware ortamında SCAN ismiyle sanal IP ler oluşturulur ve nodelar üzerine atanır.Load balancing ve Failover ayarlarına göre node'lar üzerinde gerektiği zaman yer değiştirebilir SCAN listenerlar.İstemciler bu IPleri kullanarak veritabanına bağlanırlar. Cluster içindeki tüm servisler SCAN listenera kayıtlıdır. İstemciye vekalet eden scan bu bağlantı talebini yükü en az olan node'a iletir.SCAN IP ler Cluster ortamında hizmet verir ancak Virtual IP ile tamamen farklıdır birbirinden. VIP adresi ; SCAN sonucu sağlanan cluster servisleri aracılığı ile istemcinin o düğümde açtığı oturumu sağlayan ve yöneten Public IP adresidir. Ve aslında local listeneri işaret etmketedir. Düğümlerde yer alan listener.ora dosyasında HOST parametresi olduğunu hatırlayalım. VIP adresi burda kullanılmaktadır işte.

Şimdi VirtualBox Üzerinde Sanal Makinelerimizi Oluşturmaya başlayarak RAC kurulumumuza ilk adımı atalım.

1) VirtualBox Üzerinde Sanal Sunucunun Oluşturulması

VirtualBox üzerinde bir sanal sunucu oluşturduktan sonra üzerine oracle Enterprise Linux kuracağız.

VirtualBox'da new sekmesine tıklayarak yeni bir sanal sunucu oluşturuyoruz. Makinemizin Adını İşletim sistemimizi ve versiyonunu seçtikten sonra next ile ilerliyoruz.

Bir sonraki adımda makinemizin memory değerini belirliyoruz. 2,5GB oracle ve gridin çalışması için gereken minimum ram miktarıdır. Biz bundan fazla bir ram atayarak devam ediyoruz
Bu adımda Makinemiz için sabit disk ayarlarını yapmamızı istiyor bizden.virtual harddisk oluşturup makinemize attach edeceğiz.Bu harddisk sadece işletim sistemi için kullanacağımız disk olacak. Oracle RAC için kullanacağımız diskleri sonradan ekleyeceğiz.Create'e tıklayıp gelen sonraki adımda harddisk tipini vdi olarak seçip dynamical allocate olarak belirliyoruz.


Bu adımda eklediğimiz sanal harddiskin boyutunu belirliyoruz. 40 GB işimizi görebilecek büyüklükte bir harddisk olacaktır.Create diyoruz ve artık makinemiz hazır. Bir sonraki adımda virtualboxta makinemiz üzerine tıklayıp settings'e tıklayarak network ayarlarını yapacağız.

Şekildeki gibi 4 network adapter'i de aktif hale getiriyorum. Networkumun dış dunyadan bağımsız olmasını istediğim için host-only seçiyorum. Yani makinemiz dış networku görmeyecek. Local kurulum senaryoma göre böyle olmasını uygun buluyorum.
Bu aşamadan sonra sanal makinemizi start ettiğimizda artık üzerine Oracle Enterprise Linux'u kurmalıyız. Ben kurulum işlemini daha önceden anlattığım için tekrar anlatmıyorum Bu linkten Linux kurulumunu nasıl yaptığımızı görebilirsiniz.

2)Linux işletim sisteminin RAC kurulumu için Hazır hale getirilmesi

# vi /etc/sysctl.conf

komutu ile dosyamızı açıp aşağıdaki parametre değerlerini set ediyoruz

fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500

 #vi /etc/security/limits.conf

 komutuyla dosyamızı açıp aşağıdaki oracle limit değerlerini set ediyoruz.

 oracle   soft   nofile    1024

 oracle   hard   nofile    65536

 oracle   soft   nproc    2047

 oracle   hard   nproc    16384

 oracle   soft   stack    10240

 oracle   hard   stack    32768

 #vi /etc/pam.d/login

 Dosyasına

 session required pam_limits.so

 Değerini ekliyoruz.

Gerekli olan Rpm paketlerimizi kuruyoruz.

# cd /media/cdrom/OEL/Server

komutuyla paketlerin bulunduğu dizine gidiyoruz.

rpm -Uvh binutils-2.*

rpm -Uvh compat-libstdc++-33*

rpm -Uvh elfutils-libelf-0.*

rpm -Uvh elfutils-libelf-devel-*

rpm -Uvh gcc-4.*

rpm -Uvh gcc-c++-4.*

rpm -Uvh glibc-2.*

rpm -Uvh glibc-common-2.*

rpm -Uvh glibc-devel-2.*

rpm -Uvh glibc-headers-2.*

rpm -Uvh ksh-2*

rpm -Uvh libaio-0.*

rpm -Uvh libaio-devel-0.*

rpm -Uvh libgcc-4.*

rpm -Uvh libstdc++-4.*

rpm -Uvh libstdc++-devel-4.*

rpm -Uvh make-3.*

rpm -Uvh sysstat-7.*

rpm -Uvh unixODBC-2.*

rpm -Uvh unixODBC-devel-2.*


Grup ve Kullanıcılarımızı oluşturacağız ve kurulum dizinlerini oluşturacağız.
# groupadd -g 501 oinstall
# groupadd -g 502 dba
# useradd -u 502 -g oinstall -G dba,asmdba,oper oracle
# passwd oracle
# mkdir -p /u01/app/11.2.0.3/grid
# mkdir -p /u01/app/oracle/product/11.2.0.3/db
# chmod -R 775 /u01/
# chown -R oracle:oinstall /u01/

# vi /etc/hosts

dosyamızı açıyoruz. Bu dosyaya ıp kayıtlarımızı gireceğiz. Bu aşamada IP gereksinimlerini hatırlatıyorum. Ve hangi IP'yi ne için kullandığımı yorum olarak yazıyorum


# Local 

127.0.0.1               localhost.localdomain.com       localhost

# Public sunucularımızın public networkle haberleşmesi icin

192.168.56.110           racnode1.veys.com             racnode1

192.168.56.111           racnode2.veys.com             racnode2

# Virtual vip IP kullanımını yukarıda acıklamıstık

192.168.56.131           racnode1-vip.veys.com         racnode1-vip

192.168.56.132           racnode2-vip.veys.com         racnode2-vip

# Private sunucuların kendiaralarında haberlesmeleri icin

192.168.10.141         racnode1-priv.veys.com        racnode1-priv

192.168.10.142         racnode2-priv.veys.com        racnode2-priv


Burada dikkatimizi çekmesi gereken nokta SCAN IP'lerin hosts dosyasına yazılmayışıdır. Scan ip'ler için DNS kaydı oluşturmamız gerekiyor. Round-robin DNS sunucumuzu kendi localimizde nasıl konfigure edeceğimizi anatacağım. Kurulum senaryomuza göre Bir DNS server'ımız olacak ve Scan kayıtları bu DNS server'ımızdan okunacak. O halde şimdi bir linux işletim sistemini DNS olarak nasıl konfigure edebiliriz bu adımda onu inceleyelim.

ORACLE Linux'un DNS Server olarak konfigüre edilmesi:

İlk olarak gerekli paketlerimizi yüklemeliyiz. Root kullanıcısı ile login oluyoruz ve şu paketleri yüklüyoruz.
# cd /media/OEL/Server
# rpm -Uvh bind-9.3.3-7.el5.i386.rpm
# rpm -Uvh bind-chroot-9.3.3-7.el5.i386.rpm
# rpm -Uvh bind-devel-9.3.3-7.el5.i386.rpm
# rpm -Uvh bind-libbind-devel-9.3.3-7.el5.i386.rpm
# rpm -Uvh bind-libs-9.3.3-7.el5.i386.rpm
# rpm -Uvh bind-sdb-9.3.3-7.el5.i386.rpm
# rpm -Uvh system-config-bind-4.0.3-2.el5.noarch.rpm
# rpm -Uvh caching-nameserver-9.3.3-7.el5.i386.rpm
# rpm -Uvh postgresql-libs-8.1.4-1.1.i386.rpm

Sunucumuza veridiğimiz IP'yi kontrol ediyoruz.
# ifconfig
Ben Public IP'mi 192.168.56.110 olarak belirlemiştim

Daha sonra konfigüre etmek zorunda olduğumuz 4 Adet dosyamız var.

named.conf dosyasını sample named.caching-nameserver.conf dosyasından oluşturuyoruz.
# cd /var/named/chroot/etc/
# ls
localtime named.caching-nameserver.conf  named.rfc1912.zones rndc.key
# cp named.caching-nameserver.conf named.conf

 Daha sonra named.conf dosyasını açarak sistemimize göre konfigüre ediyoruz.

 options {
 listen-on port 53 { 192.168.56.110; };
 # listen-on-v6 port 53 { ::1; };
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        // Those options should be used carefully because they disable port
        // randomization
        // query-source port 53;
        // query-source-v6 port 53;
        allow-query { any; };
        allow-query-cache { localhost; };
        };
 logging {
        channel default_debug {
        file "data/named.run";
        severity dynamic;
        };
 };
 view localhost_resolver {
        match-clients { any; };
        match-destinations {  192.168.56.110; };
        recursion yes;
        include "/etc/named.rfc1912.zones";
 };

Bir sonraki adımda named.rfc1912 dosyamızı konfigüre ediyoruz.
zone "." IN {
              type hint;
              file "named.ca";
};
zone "veys.com" IN {
                 type master;
                 file "forward.zone";
                 allow-update { none; };
};
zone "localhost" IN {
                 type master;
                 file "localhost.zone";
                 allow-update { none; };
};
zone "56.168.192.in-addr.arpa" IN {
                 type master;
                 file "reverse.zone";
                 allow-update { none; };
};
..
Dosya içeriklerinde kırmızı ve bold olarak işaretlediğim yerleri kendi sisteminizin özelliklerine göre değiştirmelisiniz. IP adresiniz ve domain name'iniz önemlidir bu noktada.

Dosyalarımızın izinlerini değiştiriyoruz.
# chgrp named named.conf
# chgrp named named.rfc1912
Daha sonra
# cd /var/named/chroot/var/named
# cp localdomain.zone forward.zone
# cp named.local reverse.zone

forward.zone dosyamızı aşağıdaki gibi düzenliyoruz.
# vi forward.zone
$TTL 86400
@          IN     SOA    racnode1.veys.com.  root.racnode1.veys.com. (
                         42 ; serial (d. adams)
                         3H ; refresh
                        15M ; retry
                         1W ; expiry
                         1D ) ; minimum
                   IN   NS     racnode1.veys.com.
racnode1       IN   A     192.168.56.110
racnode2       IN   A     192.168.56.111
racnode1-vip       IN   A     192.168.56.131
racnode2-vip       IN   A     192.168.56.132
rac-scan       IN   A     192.168.56.166
rac-scan       IN   A     192.168.56.167
rac-scan       IN   A     192.168.56.168


reverse.zone dosyamızı aşağıdaki gibi konfigure ediyoruz.


$TTL 86400
@        IN     SOA    racnode1.veys.com.    root.racnode1.veys.com. (
                       1997022700 ; Serial
                            28800 ; Refresh
                            14400 ; Retry
                          3600000 ; Expire
                          86400 ) ; Minimum
           IN   NS   racnode1.veys.com.
110      IN   PTR  racnode1.veys.com.
111      IN   PTR  racnode2.veys.com.
131      IN   PTR  racnode1-vip.veys.com.
132      IN   PTR  racnode2-vip.veys.com.
166      IN   PTR  rac-scan.veys.com.
167      IN   PTR  rac-scan.veys.com.
168      IN   PTR  rac-scan.veys.com.

Dosyaların izinlerini değiştiriyoruz
# chgrp named reverse.zone
# chgrp named forward.zone

# vi /etc/resolve.conf dosyamızı açıp içeriğini
search veys.com
namedserver 192.168.56.110

olarak değiştiriyoruz.

# service named start
komutuyla named servisini başlatıyoruz .
#chkconfig named on
açılış esanısında servisin başlamasını istiyoruz.
# nslookup rac-scan
komutuyla dns serverın hizmet verip vermediğini kontrol ediyoruz. Sorunsuz şekilde konfigure ettiysek
kayıtlarımızdak scan ip değerlerini bize döndürmesi lazım bu komutun.

NTP'nin devre dışı bırakılması
Oracle RAC üye node'lar arasında senkronize çalışması önemli bir ayrıntıdır. Yani tarih ve saatler senkron olmalıdır. Bunu iki türlü sağlayabiliyoruz. Ya ntp'yi konfigüre edip zaman bilgisini network üzerinden alırız. Ya da ntp'yi Devre dışı bırakıp senkron işlemini Oracle Cluster Time Synchronization Service'e bırakmak(ctssd).
Biz ntp yi devre dışı bırakıyoruz. Bunun için

# /sbin/service ntpd stop
# chkconfig ntpd off
# rm /etc/ntp.conf

Network arayüzlerine IP'lerin verilmesi ve Linux üzerinde bond işlemi.

Üyeler üzerindeki network kartlarına aşağıda listelediğim IP'leri set edeceğim
Üye 1

Public Interface (Bond0)
IP Adresi : 192.168.56.110
Alt Ağ Maskesi : 255.255.255.0
Varsayılan Ağ Geçidi : 192.168.56.1

Virtual Interface (Bond0 üzerine otomatik bind edilecek)
IP Adresi : 192.168.56.131

Private Interface 1 (eth2 )
IP Adresi : 192.168.10.141
Alt Ağ Maskesi : 255.255.255.0



Üye 2

Public Interface (Bond0)
IP Adresi : 192.168.56.111
Alt Ağ Maskesi : 255.255.255.0
Varsayılan Ağ Geçidi : 192.168.56.1

Virtual Interface (Bond0 üzerine otomatik bind edilecek)
IP Adresi : 192.168.56.132

Private Interface 1 (eth2 )
IP Adresi : 192.168.10.142
Alt Ağ Maskesi : 255.255.255.0


Oracle SCAN IP (Aynı isimle 3 farklı IP adresi DNS Sunucumuza kayıt edilecek)
DNS Kayıt İsmi : kryrac-scan
IP Adresi : 192.168.56.166

DNS Kayıt İsmi : kryrac-scan
IP Adresi : 192.168.56.167

DNS Kayıt İsmi : kryrac-scan
IP Adresi : 192.168.56.168

racnode1'de 

Bond işlemini yapmak için
# vi /etc/sysconfig/network-scripts/ifcfg-bond0

dosyamızı oluşturuyoruz ve aşağıdaki gibi düzenliyoruz.

DEVICE="bond0"
IPADDR=192.168.56.110
NETMASK=255.255.255.0
GATEWAY=192.168.56.1
DNS1=192.168.56.110
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
BONDING_OPTS="mode=6 miimon=100"

eth0'ın içeriğini düzenliyoruz.
# vi /etc/sysconfig/network-scripts/ifcfg-eth0

HWADDR=XX:XX:XX:XX:XX:XX // buraya mac adresimizi yazmalıyız,zaten yazılı gelmeli
DEVICE="eth0"
ONBOOT=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no

eth1'ın içeriğini düzenliyoruz.
# vi /etc/sysconfig/network-scripts/ifcfg-eth1


HWADDR=XX:XX:XX:XX:XX:XX
DEVICE="eth1"
ONBOOT=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no

eth2'ın içeriğini düzenliyoruz.
# vi /etc/sysconfig/network-scripts/ifcfg-eth2

HWADDR=XX:XX:XX:XX:XX:XX
DEVICE="eth2"
IPADDR=192.168.10.141
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
DEFROUTE=no


# vi /etc/modprobe.d/bonding.conf  Dosyasını acarak aşağıdaki satırları ekliyoruz

alias bond0 bonding
alias netdev-bond0 bonding

# vim /etc/rc.d/rc.local  dosyamızı açarak gateway adresimizi ekliyoruz

/sbin/route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.56.1

# modprobe bonding
# service network restart
# shutdown -r now

Şimdi ise sunucumuza oracleasm paketlerini yükleyip asm konfigürasyonunu gerçekleştireceğiz.

# cd /media/cdrom/OEL/Server Rpmpaketlerinin bulunduğu dizine gidiyoruz.

oracleasm-support-2.1.7-1.el5.i386.rpm
oracleasmlib-2.0.4-1.el5.i386.rpm
oracleasm-[your-kernel-version].rpm

paketlerini yüklememiz gerekiyor.Kernel versiyonumuza uygun paketi Bu linkten download edebiliriz.

Bu aşamaya kadar dikkat ettiyseniz tüm işlemleri tek node üzerinde yaptık. Kurulum için bize bir sunucu daha lazım, buraya kadar yaptığımız işlemler iki sunucuda ortak işlemlerdi. O yüzden sanal makinemizin bir kopyasını alıp ikinci node olarak konfigüre etmek mantıklı ve kolay olacaktır. ASM konfigürasyonu sırasında yapılacak işlemlerden bazıları tek node üzerinde gerçekleştirilmelidir.Aksi takdirde kurulum sırasında hata alacağız.

O yuzden racnode1 sanal makinemizi kapatıp Virtualbox'ta üzerine sağ tıklayarak clone'unu alıyoruz.

Paylaşımlı disklerin (Shared Storage) oluşturulması
Bu işlemi windows ortamında komut satırından  yapacağız. 2adet paylaşımlı disk oluşturacağız,bir tanesi veri dosyalarımız için diğeri de log dosyalarımız için. Disk sayısını ve boyutunu ihtiyacınıza göre belirleyebilirsiniz ben örnek olması açısından 2disk oluşturuyorum.

Disklerim için bir klasör oluşturuyorum.Ve bu dizine gidiyorum

mkdir VirtualBoxStorage

cd VirtualBoxStorage

mkdir sharedStorage

cd sharedStorage

Daha sonra VBoxManage aracını kullanarak asm1 ve asm2 adında iki tane disk yaratıyorum

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" createhd --filename asm1.vdi --size 10000 --format VDI --variant Fixed

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" createhd --filename asm2.vdi --size 10000 --format VDI --variant Fixed

Oluşturmuş olduğum ikitane Shared storage'i NODE1OELs makineme bağlıyorum.

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" storageattach "NODE1OELs" --storagectl "SATA" --port 1 --device 0 --type hdd --medium asm1.vdi --mtype shareable

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" storageattach "NODE1OELs" --storagectl "SATA" --port 2 --device 0 --type hdd --medium asm2.vdi --mtype shareable

Bu işlemleri 2.sunucumuz içinde yapacağız ancak Disklerimizi partitionlara ayırıp daha sonra 2.sunucumuza attach edeceğim. Şimdilik sadece 1.sunucumuza bağlıyoruz.

1.sunucumuzda terminal ekrana bağlanıyoruz ve aşğıdaki komutla disklerimizi kontrol  ediyoruz.
Disklerimizi görüp görmediğini kontrol ediyoruz.

# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdc

sda işletim sisteminin kurulu olduğu disk , sdb ve sdc sonradan attach ettiğim shared-storage diskler.

disklerimiz fdisk komutuyla formatlayarak partition oluşturacağız.

# fdisk  /dev/sdb komutundan sonra sırasıyla aşağıdaki komutları giriyoruz.
n
p
1
[enter]
[enter]
w

n - new partition 
p- primary partition
1-partition number
w- read partition table

Aynı işlemi /dev/sdc için de yapıyoruz.

Daha sonra oracleasm'yi node 1 için konfigüre ediyoruz.
Bunun için;

[root@racnode1 ~]# /etc/init.d/oracleasm configure -I  komutunu çalıştırıyoruz.

Gelen değişkenleri şekildeki gibi dolduruyoruz,driver için kullanıcı ve grup bilgilerini girmiş oluyoruz bu aşamada.
Daha sonra oluşturduğumuz partitionları ASM diski olarak işaretleyeceğiz ve böylece ASM disklerimiz oluşmuş olacaktır.
(Yukarıdaki Disk partition ve şimdi yapacağım ASM disk oluşturma işlemlerin Sadece 1 node'da yapacağımı unutmayalım.)

daha sonra sistemin asm diskleri tekrar scan etmesi için 
# oracleasm scandisks komutunu giriyorum 
#oracleasm listdisks dediğim zaman ASM diskleri listelenecektir.

Bu adıma kadar Tüm işlemlerimizi ROOT kullanıcısı ile gerçekleştirdik. şimdi ise oracle kullanıcısı ile login olup .bash_profile dosyasını düzenleyelim ve bu adımla birlikte 1.Sunucumuz kuruluma hazır olacak .
#vi .bash_profile ile dosyamızı açıyoruz ve aşağıdaki içerği kopyalayıp yapıştırıyoruz.

TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

ORACLE_HOSTNAME=racnode1.veys.com; export ORACLE_HOSTNAME
ORACLE_UNQNAME=rac; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
GRID_HOME=/u01/app/11.2.0.3/grid; export GRID_HOME
DB_HOME=$ORACLE_BASE/product/11.2.0.3/db; export DB_HOME
ORACLE_HOME=$DB_HOME; export ORACLE_HOME
ORACLE_SID=rac1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
BASE_PATH=/usr/sbin:$PATH; export BASE_PATH
PATH=$ORACLE_HOME/bin:$PATH:$ORACLE_HOME/OPatch:$BASE_PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi
fi

alias grid='. /home/oracle/.grid'
alias db='. /home/oracle/.db'


Dosyamızı kaydedip çıktıktan sonra Grid degiskenleri için asagidaki dosyamizi olusturuyoruz.
# vi /home/oracle/.grid

ORACLE_SID=+ASM1; export ORACLE_SID
ORACLE_HOME=$GRID_HOME; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

Database degiskenleri için asagidaki dosyamizi olusturuyoruz.

# vi /home/oracle/.db

ORACLE_SID=rac1; export ORACLE_SID
ORACLE_HOME=$DB_HOME; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

Racnode1 sunucusu oracle Rac kurulumu için hazır hale geldi. Şimdi 2.sunucumuza bakalım. Hatırlarsanız asm konfigurasyonu yapmadan önce klonunu almıştık 1.sunucumuzun. Şimdi o sanal makinemizi çalıştırıyoruz.Ancak çalıştırmadan once windows komut satırından Shared storagelerimizi bu sunucuya da attach etmeliyiz. cmd ekranına girip

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" storageattach "NODE1OELs Clone" --storagectl "SATA" --port 1 --device 0 --type hdd --medium asm1.vdi --mtype shareable

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" storageattach "NODE1OELs Clone" --storagectl "SATA" --port 2 --device 0 --type hdd --medium asm2.vdi --mtype shareable

Bu komutları girerken iki sunucumuzda kapalı olmalı.
Diskleri ekledikten sonra sunucumuzu açıp sırasıyla
hostname ini düzelteceğiz
IP lerini düzelteceğiz
Asm konfig yapacağız 
.bash_profile'ını tanımlayacağız.

 # vi /etc/sysconfig/network komutuyla dosyamızın içine girip hostname'i racnode2.veys.com olarak değiştiriyoruz

# vi /etc/sysconfig/network-scripts/ifcfg-bond0
ip adresini 192.168.56.111 olarak değiştryoruz
# vi /etc/sysconfig/network-scripts/ifcfg-eth2
ip adresini 192.168.10.142 olarak değiştiryoruz

Asm konfigurasyonunu yapıyoruz
node1 de yaptığımız işlemin aynısını yapacağız yukarda anlatmıştım.

# service network restart 
diyerek ipleri almasını sağlıyoruz.


#vi .bash_profile ile dosyamızı açıyoruz ve aşağıdaki içerği yapıştırıyoruz.

TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

ORACLE_HOSTNAME=racnode2.veys.com; export ORACLE_HOSTNAME
ORACLE_UNQNAME=rac; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
GRID_HOME=/u01/app/11.2.0.3/grid; export GRID_HOME
DB_HOME=$ORACLE_BASE/product/11.2.0.3/db; export DB_HOME
ORACLE_HOME=$DB_HOME; export ORACLE_HOME
ORACLE_SID=rac2; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
BASE_PATH=/usr/sbin:$PATH; export BASE_PATH
PATH=$ORACLE_HOME/bin:$PATH:$ORACLE_HOME/OPatch:$BASE_PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi
fi

alias grid='. /home/oracle/.grid'
alias db='. /home/oracle/.db'


Dosyamızı kaydedip çıktıktan sonra Grid degiskenleri için asagidaki dosyamizi olusturuyoruz.
# vi /home/oracle/.grid

ORACLE_SID=+ASM2; export ORACLE_SID
ORACLE_HOME=$GRID_HOME; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

Database degiskenleri için asagidaki dosyamizi olusturuyoruz.

# vi /home/oracle/.db

ORACLE_SID=rac2; export ORACLE_SID
ORACLE_HOME=$DB_HOME; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH



Artık sunucularımız kurulum için hazır. Sonraki paylaşımda kurulum adımlarını inceleyeceğiz.iyi çalışmalar.


0 yorum:

Yorum Gönder