Download - 11 g RAC -ASM
ORACLE DATABASE 11G ASM RAC KURULUMU VE
CLUSTER PATCH GEÇİLMESİ
1.Giriş
Oracle 11G R2 versiyonu ile Oracle’ın kendi geliştirdiği ASM(Automatic Storage Management)
yazılımını kullanarak RAC(Real Application Cluster) kuruluşunu yapacağız.Bu kuruluşu yine önceki
kurulumlarda olduğu gibi Vmware üzerinde yapacağız.
RAC sistemleri 2 veya daha fazla makinanın aynı file sistemi ortak olarak kullanması mantığına
dayanmaktadır.Vmware workstation versiyonları sharable disk kullanımına imkan vermiyor.Bu yüzden
Vmware Server 2.0 versiyonunu kullanacağız.
İlk olarak bir makinayla başlayıp daha sonra bu makinayı klonlayarak ilerliyeceğiz.İlk makinamızın ismi
RAC1 ikinci makinamızın ismi ise RAC2 olacak.
RAC1 için vm tarafında şu ayarları yapmamız gerekiyor;
2.Vm ayarları
Makinalarımızın kesinlikle kurulum sırasında sıkıntı çıkarmaması için memory olarak 2GB’er memory
veriyoruz.
İstersek Kuurlumların (ORACLE_HOME,ASM_HOME…..) gibi alanlar için yeni bir disk alanı
tanımlayabiliriz ama yeterli yerimiz varsa gerek kalmayabilir.
RAC kurulu için herbir makinamızda en az iki tane ethernet kartı olması gerekmektedir.Biz 3 tane
tanımlayabiliriz.İki tanesi bridged bir tanesini NAT yapabilriiz.Yada hepsini birdged yada nat yapabiliriz.
Bu ayarları yaptıktan sonra makinamızın vm üzerindeki görüntüsü şu şekilde olacaktır.
Fiziksel makinamız için gerekli ayarları yaptıktan sonra sıra işletiğm sistememiz için gerekli ayarları
yapmaya geldi.Bunlar Kernel ayarları,IP ayarları gibidir.
3.Kernel ,RPM,IP ayarları
Linux Redhat 5 makinamızda işletim sistemi ilk olarak Oracle 11G kurulumuna müsait değildir.İşletim
sisteminde çeşitli parametrelerle oynamalıyız,eksik paketleri yüklemeliyizki kurulum ön gereksinimlerini
karşılayabilellim.
İlk olarak gerekli olan paketlerin yüklü olup olmadığına bakıyoruz.Kurulan işletim sisteminin 32bit yada
64bit olup olamdığına göre aşağıdaki paketlerin 32bit ve 64bit versiyonlarını yüklemek gerekebilir.
rpm -q binutils-2.*rpm -q compat-libstdc++-33*rpm -q elfutils-libelf-0.*rpm -q elfutils-libelf-devel-*rpm -q gcc-4.*rpm -q gcc-c++-4.*rpm -q glibc-2.*rpm -q glibc-common-2.*rpm -q glibc-devel-2.*rpm -q glibc-headers-2.*rpm -q ksh-2*rpm -q libaio-0.*rpm -q libaio-devel-0.*rpm -q libgcc-4.*rpm -q libstdc++-4.*rpm -q libstdc++-devel-4.*rpm -q make-3.*rpm -q sysstat-7.*rpm -q unixODBC-2.*rpm -q unixODBC-devel-2.*
Eğer paketlerden biri veya birkaçı yüklü değilse aşağıdaki komutu kullanarak ilgili paketi yükleyebiliriz.
[root@rac1 ~]# rpm –ivh paket_adi
Paketlerimizi optimize ettikten sonra sıra geliyor,kernel ayarlarını konfigüre etmeye,
/etc klasörü altındaki sysctl.conf dosyasında aşağıdaki değişiklikleri yapmamız gerekiyor.İlgili
parametre varsa değerini değiştiriyoruz.Yoksa ekliyoruz.
fs.aio-max-nr = 1048576fs.file-max = 6815744kernel.shmall = 2097152kernel.shmmax = 536870912kernel.shmmni = 4096# semaphores: semmsl, semmns, semopm, semmnikernel.sem = 250 32000 100 128net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default=262144net.core.rmem_max=4194304net.core.wmem_default=262144net.core.wmem_max=1048586
Değişikliklerin aktif olması için aşağıdaki komutu çalıştırıyoruz.
[root@rac1 ~]# /sbin/sysctl -p
/etc/security klasörü altındaki limits.conf dosyası içine aşağıdaki bilgileri ekliyoruz.
oracle soft nproc 2047
oracle hard nproc 16384oracle soft nofile 1024oracle hard nofile 65536
/etc/pam.d klasörü altındaki login dosyası içine aşağıdaki bilgileri ekliyoruz.
session required pam_limits.so
Eğer securit aktif ise SELINUX parametresini disable etmemiz gerekmektedir. /etc/selinux/config
dosyanın içinden ilgili parametreyi disable ediyoruz.
SELINUX=disabled
Aşağıdaki firewall ilgili ayarlarında kapalı olması gerekmektedir.
[root@rac1 ~]#service iptables stop[root@rac1 ~]#service ip6tables stop
[root@rac1 ~]#chkconfig iptables off[root@rac1 ~]#chkconfig ip6tables off
Kernel ayarlarını tamamladıktan sonra iki makinanın birbiriyle konuşabilmesi ve zaman farkı
olmaksızın haberleşebilmesi gerekmektedir.Bunun için Oracle her zaman işletim sisteminin NTP
dediğimiz Network Time protokülünü kullanmaktadır.NTP’yi kullanmıyorsak Oracle Cluster Time
Synchronization Service kullanarak RAC node ları arasında senkronizasyonu yapabiliriz.
NTP’yi kapatmak için aşağıdaki adımları uyguluyoruz.
# service ntpd stopShutting down ntpd: [ OK ]# chkconfig ntpd off# mv /etc/ntp.conf /etc/ntp.conf.org# rm /var/run/ntpd.pid
Eğer NTP’yi kullanacaksakta aşağıdaki işlemi gerçekleştirip Oracle’ın kurulum sırasında hata almadan
devam edebilmesini sağlayabiliriz.Bunun için /etc/sysconfig/ntpd dosyası içine –x opsiyonunu
ekliyebiliriz.Daha sonrada NTP yi tekrar başlatabiliriz.
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"
# service ntpd restart
Oracle 11G ile beraber AMM dediğimiz Automatic Memory Management’ın kullanılabilmesi için Shared
Memory File sistemin kullanılması gerekmektedir.Bunu daha önceki notlarda anlatmıştık.TMPFS’i iptal
edip SHMFS kullanıyoruz.
# umount tmpfs# mount -t tmpfs shmfs -o size=2000m /dev/shm
Sıra geldi IP ayarlarını yapmaya bunun için ayırdığımız 2 bridged ip için static ipler verebilirz bunlar
için gateway ler ve Hostname vermek gereklidir.
hostname: rac1.localdomain
eth0 ip si: 192.168.2.101 (public address)eth0 gateway’i: 192.168.2.1 (public address)eth1 ip si: 192.168.0.101 (private address)eth1 gateway’i: olmayacak
Bunlardan sonra /etc altındaki hosts dosyasına bu bilgilerin girilmesi ve kalıcı olması
sağlanmalıdır.hosts dosyamızın yapısı aşağıdaki gibi olacaktır.Bu ipler tamamen örnektir istenirse
farklı IP lerde verilebilinir.
127.0.0.1 localhost.localdomain localhost# Public192.168.2.101 rac1.localdomain rac1192.168.2.102 rac2.localdomain rac2# Private192.168.0.101 rac1-priv.localdomain rac1-priv192.168.0.102 rac2-priv.localdomain rac2-priv# Virtual192.168.2.111 rac1-vip.localdomain rac1-vip192.168.2.112 rac2-vip.localdomain rac2-vip# SCAN192.168.2.201 rac-scan.localdomain rac-scan
Scan ismini verdiğimiz IP gerçekten bir ethernet kartına denk gelen bir ip değildir.Oracle tekbir ip den
tüm nodların yönetilmesi için bu IP yi kullanmaktadır.
Yukarıdaki network tanımları sorun oluyorsa aşağıdaki gibi kullanmakta mantıklıdır.Çünkü bazen
domain isminin nerede olduğu önemlidir.
[root@fordisisdb01 ~]# cat /etc/hosts# Do not remove the following line, or various programs# that require network functionality will fail.172.25.80.91 fordisisdb01-bkp172.25.80.92 fordisisdb02-bkp127.0.0.1 localhost.localdomain localhost# Public193.243.205.136 fordisisdb01 fordisisdb01.localdomain193.243.205.137 fordisisdb02 fordisisdb02.localdomain# Private10.10.10.1 fordisisdb01-priv10.10.10.2 fordisisdb02-priv# Virtual193.243.205.140 fordisisdb01-vip193.243.205.141 fordisisdb02-vip# SCAN193.243.205.139 fordisisdb-scan172.25.253.100 hpovomng
Kesinlikle her ip biribirine her iki makinadan ping atabilmelidir.Eğer ping atılamıyorsa ilk olarak bu
düzeltilmeldir.
4.Kullanıcı ,Gruplar ve Klasörlerin oluşturulması
Oracle 11G kurulumu yapabilmek için root kullanıcısı haricinde işletim sistemi tarafına bir kullanıcı ve
bu kullanıcının bağlı olduğu grupların olması gereklidir.Ayrıca kurulumun yapılacağı dizinlerinde
yapılması gerekmektedir.
İlk olarak grup ve kullanıcıları Root kullanıcısı ile oluşturuyoruz.
[root@rac1 ~]# groupadd -g 1000 oinstall[root@rac1 ~]# groupadd -g 1200 dba[root@rac1 ~]# useradd -u 1100 -g oinstall -G dba oracle[root@rac1 ~]# passwd oracle
Daha sonra kurulum için gereken klasörlerimizi yaratıyoruz,ve gerekli permissionları veriyoruz.
[root@rac1 ~]# mkdir -p /data/u01/app11g/11.2.0/grid[root@rac1 ~]# mkdir -p /data/u01/app11g/oracle/product/11.2.0/db_1[root@rac1 ~]# chown -R oracle:oinstall /data/u01[root@rac1 ~]# chmod -R 775 /data/u01/
Daha sonra oracle kullanıcısına geçip oracle kullanıcısının .bashrc dosyasına aşağıdaki bilgilerle
değişiklik yapıyoruz.
[root@rac1 ~]# su – oracle[oracle@rac1 ~]$ vi .bashrc
# Oracle SettingsTMP=/tmp; export TMPTMPDIR=$TMP; export TMPDIR
ORACLE_HOSTNAME=fordisisdb01.localdomain; export ORACLE_HOSTNAMEORACLE_UNQNAME=ISISDB; export ORACLE_UNQNAMEORACLE_BASE=/data/u01/app11g/oracle; export ORACLE_BASEORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOMEORACLE_SID=ISISDB1; export ORACLE_SIDORACLE_TERM=xterm; export ORACLE_TERMPATH=/usr/sbin:$PATH; export PATHPATH=$ORACLE_HOME/bin:/data/u01/app11g/11.2.0/grid/bin/:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATHCLASSPATH=$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 fifi
Artık ön gereksinimlerin hepsini tamamladık.Sıra 2 makinanın ortak kullanım disklerini tanımlamaya ve
makinaları klonlamaya geldi.Bu arada unutulmanması gereken
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-linuxsoft-
085393.html sayfasından Oracle Database 11g Release 2 (11.2.0.1.0) for Linux x86 için
linux_11gR2_database_1of2.zip (1,285,396,902 bytes) (cksum - 2237015228)
linux_11gR2_database_2of2.zip (995,359,177 bytes) (cksum - 2649514514)
linux_11gR2_grid.zip (980,831,749 bytes) (cksum - 3583041487)
Dosyalarını /u01/app11g dizinine indirip ziplerini açıyoruz.
[root@rac1 ~]# cd /u01/app11g[root@rac1 ~]# unzip linux_11gR2_database_1of2.zip[root@rac1 ~]# unzip linux_11gR2_database_2of2.zip[root@rac1 ~]# unzip linux_11gR2_database_2of2.zip
5.Shared disklerin oluşturulması ve Makine
Oracle 11G RAC kurulumu için her iki makine içinde ortak olarak yazılacak sharable disklerin olması
ve bunların sisteme verimesi gerekmektedir.Makinamızı kapatıyoruz daha sonra aşağıdaki adımları
yapıyoruz.
Yukarıdaki ekranlardaki adımı tamamladıktan sonra 4 adet daha disk eklememiz
gerekmektedir.Ekliyeceğimiz disklerin özellikleri aşağıdaki gibi olacaktır.Her bir disk için 3 er GB
verebiliriz.
File Name: [standard] shared/asm2.vmdkVirtual Device Node: SCSI 1:2Mode: Independent and Persistent
File Name: [standard] shared/asm3.vmdkVirtual Device Node: SCSI 1:3Mode: Independent and Persistent
File Name: [standard] shared/asm4.vmdkVirtual Device Node: SCSI 1:4Mode: Independent and Persistent
File Name: [standard] shared/asm5.vmdkVirtual Device Node: SCSI 1:5Mode: Independent and Persistent
Bu işlemlerden sonra yapı şu şekilde olacaktır,
Daha sonra Rac1 makinamızın durduğu path’e gidip RAC1.vmx dosyasını açıyoruz ve aşağıdaki gibi
değişiklik yapıyoruz.
disk.locking = "FALSE"diskLib.dataCacheMaxSize = "0"diskLib.dataCacheMaxReadAheadSize = "0"diskLib.dataCacheMinReadAheadSize = "0"diskLib.dataCachePageSize = "4096"diskLib.maxUnsyncedWrites = "0"
scsi1.present = "TRUE"scsi1.sharedBus = "VIRTUAL"scsi1.virtualDev = "lsilogic"
scsi1:1.present = "TRUE"scsi1:1.fileName = "D:\shared\asm1.vmdk"scsi1:1.writeThrough = "TRUE"scsi1:1.mode = "independent-persistent"scsi1:1.deviceType = "plainDisk"scsi1:1.redo = ""
scsi1:2.present = "TRUE"scsi1:2.fileName = "D:\shared\asm2.vmdk"scsi1:2.writeThrough = "TRUE"scsi1:2.mode = "independent-persistent"scsi1:2.deviceType = "plainDisk"scsi1:2.redo = ""
scsi1:3.present = "TRUE"scsi1:3.fileName = "D:\shared\asm3.vmdk"scsi1:3.writeThrough = "TRUE"scsi1:3.mode = "independent-persistent"scsi1:3.deviceType = "plainDisk"scsi1:3.redo = ""
scsi1:4.present = "TRUE"scsi1:4.fileName = "D:\shared\asm4.vmdk"scsi1:4.writeThrough = "TRUE"scsi1:4.mode = "independent-persistent"scsi1:4.deviceType = "plainDisk"scsi1:4.redo = ""
scsi1:5.present = "TRUE"scsi1:5.fileName = "D:\shared\asm5.vmdk"scsi1:5.writeThrough = "TRUE"scsi1:5.mode = "independent-persistent"scsi1:5.deviceType = "plainDisk"scsi1:5.redo = ""
Makinamızı tekrar başlatıyoruz,Daha sonra eklediğimiz diskleri sistemin görüp görmediğine bakıyoruz.
[root@rac1 ~]# cd /dev[root@rac1 ~]# ls sd*sda sda1 sda2 sdb sdc sdd sde sdf
Görüldüğü gibi eklenen 5 diskide sistem gördü.Bu eklenen diskler sdb,sdc,sde,sdf olarak
görünmektedir.sda bizim ilk eklediğimiz üzerine linux kurulu olan disktir.
Şimdi bu diskleri fdisk ile partition yapmamız gerekmektedir.
[root@rac1 ~]# fdisk /dev/sdbDevice contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel. Changes will remain in memory only,until you decide to write them. After that, of course, the previouscontent won't be recoverable.
The number of cylinders for this disk is set to 1305.There is nothing wrong with that, but this is larger than 1024,and could in certain setups cause problems with:1) software that runs at boot time (e.g., old versions of LILO)2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK)Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): nCommand action e extended p primary partition (1-4)pPartition number (1-4): 1
First cylinder (1-1305, default 1): ↵Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1305, default 1305): ↵Using default value 1305
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes255 heads, 63 sectors/track, 1305 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System/dev/sdb1 1 1305 10482381 83 Linux
Command (m for help): wThe partition table has been altered!
Calling ioctl() to re-read partition table.Syncing disks.
Birinci disk için işlemi tamamladık diğer diskler içinde aynı şekilde sırasıyla "n", "p", "1", "Return",
"Return", "p" and "w" adımlarını yapmamız gerekmektedir.Tüm diskler içinde yapılandırma bitince /dev
altında diskler partition olarak şu şekilde duracaktır.
[root@rac1 ~]# cd /dev[root@rac1 ~]# ls sd*sda sda1 sda2 sdb sdb1 sdc sdc1 sdd sdd1 sde sde1 sdf sdf1
Asm kuracağımız için mevcut Kernel’ımıza göre isteğe bağlı olarak ASM paketlerini yükleyebiliriz
tamamen isteğe bağlıdır Clusturware kurulumu yapılırkende kurulabilir.
[root@rac1 ~]# uname -aLinux rac1.localdomain 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux
Kernel versiyonumuzu öğrendikten sonra Oracle’ın ilgili sayfasına
gidip(http://www.oracle.com/technetwork/topics/linux/downloads/rhel5-084877.html)
Kernel versiyonuna göre download edilebilir.
Bizim kernelımız için uygun olan seçenekler aşağıdaki 3 pakettir.Sırasıyla bunlar yüklenmelidir.
Library and Tools
oracleasm-support-2.1.3-1.el5.i386.rpm
oracleasmlib-2.0.4-1.el5.i386.rpm
Drivers for kernel 2.6.18-8.el5
oracleasm-2.6.18-8.el5-2.0.4-1.el5.i686.rpm
Paketleri yüklemek için aşağıdaki komutu uygulayabiliriz.
[root@rac1 ~]# rpm -Uvh oracleasm*.rpm
Artık ASM yi ve disklerimizi konfigüre edebiliriz.İlk olarak asm yi konfigüre ediyoruz.
[root@rac1 ~]# oracleasm configure -iConfiguring the Oracle ASM library driver.
This will configure the on-boot properties of the Oracle ASM librarydriver. The following questions will determine whether the driver isloaded on boot and what permissions it will have. The current valueswill be shown in brackets ('[]'). Hitting <ENTER> without typing an
Default user to own the driver interface []: oracleDefault group to own the driver interface []: dbaStart Oracle ASM library driver on boot (y/n) [n]: yScan for Oracle ASM disks on boot (y/n) [y]: Writing Oracle ASM library driver configuration: done
Kernel modülünü yüklüyoruz.
[root@rac1 ~]# /usr/sbin/oracleasm initLoading module "oracleasm": oracleasmMounting ASMlib driver filesystem: /dev/oracleasm
Yukarıdaki işlemlerde problem olması halinde aşağıdaki komutu kullanarak doğru dirverlar
indirilebilinir.
[root@rac1 ~]# /usr/sbin/oracleasm update-driver
Tüm diskleri Bir ASM disk ile ilişkilendiriyoruz.
[root@rac1 ~]# /usr/sbin/oracleasm createdisk DISK1 /dev/sdc1Writing disk header: doneInstantiating disk: done[root@rac1 ~]# /usr/sbin/oracleasm createdisk DISK2 /dev/sdd1Writing disk header: doneInstantiating disk: done[root@rac1 ~]# /usr/sbin/oracleasm createdisk DISK3 /dev/sde1Writing disk header: doneInstantiating disk: done[root@rac1 ~]# /usr/sbin/oracleasm createdisk DISK4 /dev/sdf1Writing disk header: doneInstantiating disk: done[root@rac1 ~]# /usr/sbin/oracleasm createdisk DISK5 /dev/sdg1Writing disk header: doneInstantiating disk: done
Gerekli değil ama diskleri gerçekten buldumu diye scan ediyoruz.
[root@rac1 ~]# /usr/sbin/oracleasm scandisks
Reloading disk partitions: doneCleaning any stale ASM disks...Scanning system for ASM disks...
Artık rahatlıkla disklerimizin durumunu görüp listeleyebiliriz.
[root@rac1 ~]# /usr/sbin/oracleasm listdisksDISK1DISK2DISK3DISK4DISK5
Eğer Multipath kullanılmışsa diskler /dev/dm-* şeklinde görünecektir.Diskleri partition yapmadan direk
olarak aşağıdaki gibi kullanacağız.Mümkün olduğunca 1 den fazla diskle kurulum yapmak daha
mantıklıdır.
[root@fordisisdb01 dev]# /usr/sbin/oracleasm createdisk DISK5 /dev/dm-5Writing disk header: doneInstantiating disk: done[root@fordisisdb01 dev]# /usr/sbin/oracleasm createdisk DISK0 /dev/dm-0Writing disk header: doneInstantiating disk: done[root@fordisisdb01 dev]# /usr/sbin/oracleasm createdisk DISK1 /dev/dm-1Writing disk header: doneInstantiating disk: done[root@fordisisdb01 dev]# /usr/sbin/oracleasm scandisksReloading disk partitions: doneCleaning any stale ASM disks...Scanning system for ASM disks...[root@fordisisdb01 dev]# /usr/sbin/oracleasm listdisksDISK0DISK1DISK5DISK6
İkinci makinadan scan yaptığımızda diskler direk olarak görünecektir.Eğer multipath kullanıyorsak aynı
zamanda oracleasm ayarlarınıda değiştirmeliyiz.Bunuda her iki makinada vi editörü ile /etc/sysconfig/oracleasm dosyasını açıp aşağıdaki değişiklikleri yapıyoruz.
ORACLEASM_SCANORDER="dm"ORACLEASM_SCANEXCLUDE="sd"
Her iki makinada oracleasm servisini kapatıp açıyoruz.
[root@rac1 ~]# /etc/init.d/oracleasm restart
6.RAC2 makinasının ayağa kaldırı lması
Disk tanımlama kondifüre etme işlerimizde bittikten sonra artık makinamızı klonlayabiliriz.Bunun için
yapmamız gereken birinci makine yani Node 1 hostname le RAC1 makinasını kapatıp sanal
makinanın bulunduğu klasörü kopyalayıp yapıştırmak.Örneğin diyelimki birinci node için makinamızın
klasörü D: nin altında RAC1 isimli klasörde duruyordu bunu kopyalayıp yapıştırıyoruz D: nin altına ve
klasör ismini RAC2 yapıyoruz.
RAC2 klasörünün içine girip RAC1.vmx isimli dosyayı açıp displayName = "RAC2" olarak
değiştiriyoruz.Gelen uyarılara ignore deyip geçebiliriz.
Daha sonra Vmserver menüsünde Virtual Machine > Add Virtual Machien to Inventory" seçiyoruz
buradan RAC2 klasörü altındaki RAC1.vmx dosyasının seçiyoruz.Böylece makinamız inventory
listemize gelmiş oluyor.
RAC2 makinasına start veriyoruz gelen uyarıya "I _copied it" diyerek geçiyoruz.
Makine açıldıktan sonra network ayarlarında problem olabilir.Bu yüzden menüde
System/administration/Network kısmına giriyoruz.Karşımıza aşağıdaki gibi bir ekran gelecektir.
İlk olarak burdaki device ları deactive ediyoruz ve eth1.bak ve eth0.bak dosyalarını siliyoruz.eth0 isimli
device a çift tıklayabilir yada edit diyerek aşağıdaki ekranı elde ediyoruz ve aşağıdaki ekrandaki gibi
değişikliklerimizi yapıyoruz.
Hardware device tab’Ina gelip mac adresinin olduğu kısımda probe butonuna basıp makinanın doğru
mac almasını sağlıyoruz.Ok diyerek işlemi bitiriyoruz.
Aynı işlemi eth1 device ı içinde yapıyoruz ip adresi olarak 192.168.0.102 mask olarak 255.255.255.0
verip kesinlikle gateway vermiyoruz.ok diyerek kapatıyoruz.
Bu sefer DNS tabına girerek hostname’i ra2.localdomain olarak değiştiriyoruz.
İşlemleri tamamladıktan sonra menüden File / Save seçeneğine geliyoruz,yaptıklarımızı kaydediyoruz
daha sonra her iki device ıda active ediyoruz.Aktivasyon sonrası görünüm aşağıdaki gibi olacaktır.
Root kullanıcıse ile yaptığımız bu işlemlerden sonra oracle kullanıcısına geçiyoruz .bashrc dosyasını
açıyoruz ve içinde aşağıdaki değişiklikleri yapıyoruz.
[root@rac2 ~]# su - oracle[oracle@rac2 ~]$ vi .bashrc
ORACLE_SID=RAC2; export ORACLE_SIDORACLE_HOSTNAME=rac2.localdomain; export ORACLE_HOSTNAME
Daha sonra RAC1 makinasınıda açıp her iki makine biribirini görüyormu diye bakabilmek için
aşağıdaki komutlar makinaları birbirine pingletiyoruz.Bu işlemleri her iki makinada da yapıyoruz.
[root@rac1 ~]# ping -c 3 rac1[root@rac1 ~]# ping -c 3 rac1-priv[root@rac1 ~]# ping -c 3 rac2[root@rac1 ~]# ping -c 3 rac2-priv
[root@rac2 ~]# ping -c 3 rac1[root@rac2 ~]# ping -c 3 rac1-priv[root@rac2 ~]# ping -c 3 rac2[root@rac2 ~]# ping -c 3 rac2-priv
7.Clusterware GRID yazılımının kurulması
RAC1 makinası üzerindeyken clusterware yazılımızın olduğu directory’e giriyoruz.Gridkten sonra
makinalarımız gerçekten RAC kuruluşuna müsaitmi diye kontrol edebilmek için aşağıdaki komutu
çalıştırıyoruz.
[root@rac1 ~]# ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose
Eğer bir hata görmüyorsak kuruluma başlıyoruz.Yoksa nerde hata varsa hatayı düzeltip devam
edebiliriz.Kesinlikle burada verilen uyarılara dikkat etmek gerekmektedir.Bazen ssh connectivty hatası
alınabiliyor.Grid kurulumuna ssh connetcivty yapıp kesip daha sonra yukarıdaki komutu tekrar
çalıştırabiliriz.
Şimdi sıra geldi Clusturware yazılımını kurmaya bunun için indirdiğimiz grid klasörü altındaki
runinstaller dosyasını çalıştıracağız.Tabiiki bunu yapabilmek için oracle kullanıcısı ile login olup grafik
ekranı almamız gerekmektedir.Bir deiğer dikkat etmemiz gereken kesinlikle her iki makinanında açık
olması gerekli ve kurulumun birinci makinadan yapıalacağıdır.
[oracle@rac1 ~]$./runInstaller
"Install and Configure Grid Infrastructure for a Cluster" seçeneğini seçip next diyoruz.
"Typical Installation" ı seçip next diyoruz.
Aşağıda gelen "Specify Cluster Configuration" ekranında aynı bilgilerin olduğunu kontrol edip add
butonuna basıyoruz.
Add butonuna bastıktan sonra 2.node un bilgilerini giriyoruz ve ok tuşuna basıyoruz.
Bu sefer "SSH Connectivity..." butonuna basıyoruz,oracle kullanıcısı için passwordumuzu
giriyoruz.setup diyerek 2 makine arasındaki ssh connectivityi sağlıyoruz.Böylece her iki makine
birbirine şire sormadan otomatik bağlanabilir oluyor.Setup bitincede test butonuna basıyoruz.
Yukarıdaki işlemide bitince bu sefer "Identify network interfaces..." butonuna basıyoruz,eth0 ın
public ,eth1 in private olmasını sağlıyoruz.Ok tuşuna basıyoruz daha sonra da next diyerek diğer
ekrana geçiyoruz.
Yeni gelen ekranda software location olarak "/u01/app11g/11.2.0/grid" ‘i seçiyoruz.Cluster registry
storage type olarak "Automatic Storage Manager" ‘ı seçiyoruz.ASM parolasını girip next butonuna
basıyoruz.ASM parolası ileride bize asm yi yönetirken gerekli olacaktır.Next diyerek ilerliyoruz.
Daha sonra gelen disk grup ekranında disk grup ismi olarak DATA’yı aynen bırakıyoruz.Disk
redundancy olarak external’ı seçiyoruz ve Candicate disks seçeneğini seçiyoruz.İşte burada
yukarılarda yaptığımız ASM ile diskleri formatlamıştık o işlemi kullanıyoruz.Eğer ASM ile diskleri
formatlamasıydık,all disks seçeneğinde tüm diskleri raw olarak (/dev/sd*….) görüyor olacaktık.
Şimdi gelen inventroy ekranı için path’İ default olarak bırakıp devam ediyoruz.
Şimdiki aşama ise kurulum için gerekli olan prerequsetlein check edilmesi aşaması tüm
prerequsetlerin yerine getildiğinden emin oluyoruz.Eğer önemli olmadığını düşündüklerimiz varsa
İgnore check box ına işaretleyip next butonuna basıyoruz.
Artık herşey tamam olduğuna göre Finish butonuna basarak kurulumu başlatıyoruz.
Kurulum devam ediyor,Kurulum her iki makinayada yapılıyor.Diğer makinaya gidip yeniden kurulum
yapmaya gerek yoktur.
Son aşamada bazı scriptlerin her iki makinadada çalıştırılması isteniyor.Biz bunları her iki makinadada
çalıştırıyoruz.Ve daha sonra çalıştırma tamamlandıktan sonra OK butonuna basıyoruz.
Çalıştırılan scriptlerin görüntüsü şu şekilde olacaktır.
[root@rac1 ~]# cd /u01/app/oraInventory[root@rac1 ~]# ./orainstRoot.shChanging permissions of /u01/app/oraInventory.
Adding read,write permissions for group.Removing read,write,execute permissions for world.
Changing groupname of /u01/app/oraInventory to oinstall.The execution of the script is complete.
En son herşeyin tamamlanmasını bekliyoruz.Bazen aşağıdaki gibi ilginç bir hata alınabilinir.
Hatanın detayına indiğimizde aşağıdaki gibi bir bilgi görebiliriz.Çok önemli bir hata değildir DNS
kullanmadığımız için bazen bu şekilde hata alınabilmektedir.Çok önemli dğildir next diyerek devam
ediyoruz.
INFO: Checking Single Client Access Name (SCAN)...INFO: Checking name resolution setup for "rac-scan.localdomain"...INFO: ERROR:INFO: PRVF-4664 : Found inconsistent name resolution entries for SCAN name "rac-scan.localdomain"INFO: ERROR:INFO: PRVF-4657 : Name resolution setup check for "rac-scan.localdomain" (IP address: 192.168.2.201) failedINFO: ERROR:INFO: PRVF-4664 : Found inconsistent name resolution entries for SCAN name "rac-scan.localdomain"INFO: Verification of SCAN VIP and Listener setup failed
Son olarak artık herşey tamamsa Close diyerek kurulum ekranlarını bitiriyoruz.
8.Database yazılımının kurulması ve Veritabanının kurulması
İlk olarak iki makina raasında db softwarenin kurulup kurulamayacağına bakmamaız gerekir.Bunun
için aşağıdaki komutu herhangi bir makinadan çalıştıracağız.
[root@rac1 ~]# ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose
Clusterware yani grid yazılımının kurulumunu tamamladıktan sonra şimdi sıra database software
kuruluşuna geldi,bunun içinde her iki makinada açıkken birinci makine üzerinden oracle kullanıcısı ile
software’in olduğu path’e gidiyoruz ve run installer’ı başlatıyoruz.
[oracle@rac1 ~]$./runInstaller
Ekranda gelen security seçeneğini kaldırıp next diyerek devam ediyoruz.
Create and Configure database seçeneğini seçip next diyoruz.
Server class seçeneğini seçip next diyoruz.
Gelen ekranda Real application cluster seçeneğinin seçili olduğunu görüp ve rac1 ile rac2 nin seçili
olduğunu görüp next diyoruz.
Kurulum için typical yada advanced seçeneğini seçebiliriz,biz typical installation seçeneğini seçip next
diyoruz.
Gelen ekranda software location olarak "/u01/app/oracle/product/11.2.0/db_1"’ı seçiyoruz,storage type
olarak "Automatic Storage Manager" ‘ın seçildiğine emin oluyoruz,asm password’umu giriyoruz,Global
database name olarak "RAC.localdomain" seçiyoruz,ve son olarak sys ve system kullanıcıları için
kullanıclacak şifremizi giriyoruz ve next butonuna basıyoruz.
Sonraki ekranda prerequestler kontrol ediliyoruz,varsa önemsiz gördüğümüz ignore ederek next
diyerek kuruluma devam ediyoruz.
Artık herşey OK ise Finish butonuna basarak kurulumu başlatıyoruz.
Kurulum aşağıdaki gibi devam edecektir.
Software kurulumu tamamlanınca otomatik olarak DBCA ile database create aşamasına geçiliyor.
Database create aşaması tamamlanınca gelen ekranda OK tuşuna basıyoruz.
Yine clusterware yazılımında olduğu gibi heriki nodeda da bir scriptin çalıştırılması isteniyor.Bu
scriptleri çalıştırıyoruz ve Ok tuşuna basıyrouz.
Herşey tamamlanınca son ekran geliyor ve burada close diyerek kurulumu tamamlıyoruz.
9.RAC komutları
Kurulumlar tamamlandıktan sonra artık RAC veritabanı üzerinde farklı komut setlerinin nasıl
çalıştırılacağı nasıl yönetileceğini görebiliriz.
Örneğin svrctl komutumuzla veritabanlarını ve RAC yapısının durumunu kontrol edebiliriz.
[oracle@rac1 ~]$ srvctl config database -d RAC
Database unique name: RACDatabase name: RACOracle home: /u01/app/oracle/product/11.2.0/db_1Oracle user: oracleSpfile: +DATA/RAC/spfileRAC.oraDomain: localdomainStart options: openStop options: immediateDatabase role: PRIMARYManagement policy: AUTOMATICServer pools: RACDatabase instances: RAC1,RAC2Disk Groups: DATAServices: Database is administrator managed
[oracle@rac1 ~]$ srvctl status database -d RACInstance RAC1 is running on node rac1Instance RAC2 is running on node rac2
Yine istersek Sqlplus’a bağlanarak V$ACTIVE_INSTANCES view’ını kullanarakta instance ların durumunu görebiliriz.
[oracle@rac1 ~]$ sqlplus / as sysdba
SQL> SELECT inst_name FROM v$active_instances;
INST_NAME---------------------------------------------------------------------------rac1.localdomain:RAC1rac2.localdomain:RAC2
istersek brinci makine üzerinden https://rac1.localdomain:1158/em adresini kullanarak enterprise
manager ile de RAC yönetimini yapabiliriz.
Veritabanını kapatmak için aşağıdaki komutu görüyoruz.Bu komutçalıştığında her iki instance ta
kapanıyor.
[oracle@rac1 ~]$ srvctl stop database -d RAC -o immediate
Sadece tek bir intsance ı kapatmak istiyorsak ya aşağıdaki komutu kullanabilir yada ilgili instance ın
olduğu makinaya gidip o instance ‘a sqlplus ile bağlanıp shutdown immediate verebiliriz.
[oracle@rac1 ~]$ srvctl stop instance -d RAC -i RAC1 -o immediate
Örneğin bir makinanın node’u ile tüm iletişimi durudurup o instance’ın asm sini kapatabiliriz.
[oracle@rac1 ~]$ srvctl stop nodeapps -n rac1[oracle@rac1 ~]$ srvctl stop asm -n rac1
Herhangi bir instance için listener’ı durudurmak içinde aşağıdaki komutları kullanıyoruz.
[oracle@rac1 ~]$ srvctl stop listener -n rac1
Tam tersi olarakta kapattığımız servisleri açmak istiyorsakta aşağıdaki komutlar işimizi görecektir.
[oracle@rac1 ~]$ srvctl start database -d RAC[oracle@rac1 ~]$ srvctl start asm -n rac1[oracle@rac1 ~]$ srvctl start nodeapps -n rac1[oracle@rac1 ~]$ srvctl start listener -n rac1[oracle@rac1 ~]$ srvctl start instance -d RAC -i RAC1
Tüm servislerin durumunu görmek istiyorsak aşağıdaki komutları kullanabiliriz.Kesinlikle sağlıklı
çalışan bir RAC yapısında tüm servislerin ONLINE olması gerekmektedir.
[oracle@rac1 ~]$ crs_stat –t
Name Type Target State Host ------------------------------------------------------------ora....C1.inst application ONLINE ONLINE rac1 ora....C2.inst application ONLINE ONLINE rac2 ora....AC1.srv application ONLINE ONLINE rac1 ora....AC2.srv application ONLINE ONLINE rac2 ora....RAC.cs application ONLINE ONLINE rac1 ora.RAC.db application ONLINE ONLINE rac1 ora....SM1.asm application ONLINE ONLINE rac1 ora....C1.lsnr application ONLINE ONLINE rac1 ora....rac1.gsd application ONLINE ONLINE rac1 ora....rac1.ons application ONLINE ONLINE rac1 ora....rac1.vip application ONLINE ONLINE rac1 ora....SM2.asm application ONLINE ONLINE rac2 ora....C2.lsnr application ONLINE ONLINE rac2 ora....rac2.gsd application ONLINE ONLINE rac2 ora....rac2.ons application ONLINE ONLINE rac2 ora....rac2.vip application ONLINE ONLINE rac2