ORACLE CLUSTERWARE (Clusterware Stack Management)

Oracle Clusterware birçok sunucu ve sunucu sistemlerinin tek bir sunucuymuş gibi çalışmasını ve yönetilmesini sağlayan bir yazılımdır denerek çok genel bir tanım yapılabilir. Oracle Clusterware Oracle Real Application Cluster’ın (RAC) çalışması için temel altyapıyı oluşturur.

Clusterware Software Stack

Oracle Clusterware 12cR1 stack

RAC düğümü başladığında Oracle Clusterware otomatik olarak başlatılır. Bu başlatma işlemi birkaç işlemden geçiyor

Startup sequence of 12cR1 Clusterware processes

Oracle Clusterware Yönetimi (Clusterware Management)

Grid Infrastructure Universal Installer, Oracle Clusterware’in ve ASM Instance nin kurulumunu ve konfigürasyonunu üstlenir. Bu kurulumdan sonra, Clusterware ve ASM her seferinde otomatik olarak yeniden başlatılır. Sunucu başlatıldığında genellikle manuel müdehaleye gerek kalmadan otomatik çalışır.

Oracle, Oracle Grid Infrastructure yönetimi için kullanılabilecek bir dizi araç ve yardımcı program sunmaktadır. Yaygın olarak kullanılan araç, Oracle’ı yönetmek için bir komut satırı aracı olan Clusterware kontrol yardımcı programı crsctl’dir. CRS küme yazılımının çalışmasını herhangi bir düğümden başlatılabilir, durdurulabilir ve kontrol edilebilir. Tüm komutu yazdırmak için crsctl –help komutunu kullanın.

$ crsctl -help
Usage: crsctl add – add a resource, type, or other entity
crsctl backup – back up voting disk for CSS
crsctl check – check a service, resource, or other entity
crsctlconfig – output autostart configuration
crsctl debug – obtain or modify debug state
crsctl delete – delete a resource, type, or other entity
crsctl disable – disable autostart
crsctl discover – discover DHCP server
crsctl enable – enable autostart
crsctleval – evaluate operations on resource or other entity…
crsctl get – get an entity value
crsctlgetperm – get entity permissions
crsctllsmodules – list debug modules
crsctl modify – modify a resource, type, or other entity
crsctl query – query service state
crsctl pin – pin the nodes in the nodelist
crsctl relocate – relocate a resource, server, or other entity
crsctl replace – replace the location of voting files
crsctl release – release a DHCP lease
crsctl request – request a DHCP lease or an action entrypoint
crsctlsetperm – set entity permissions
crsctl set – set an entity value
crsctl start – start a resource, server, or other entity
crsctl status – get status of a resource or other entity
crsctl stop – stop a resource, server, or other entity
crsctl unpin – unpin the nodes in the nodelist
crsctl unset – unset a entity value, restoring its default

Diğer bir komut satırı aracı ise srvctl dir. Bir srvctl komutu dört bölümden oluşur:

$ srvctl <command> <object> [<options>]

Yardım almak için

$ srvctl <command> -h or
$ srvctl <command> <object> -h

Başka yardımcı programlar da vardır:
• oifcfg, ağ arayüzlerini yapılandırmak için kullanılabilecek bir komut satırı aracıdır.
• ocrconfig, OCR ve OLR’yi yönetmek için kullanılabilecek bir komut satırı aracıdır.
• ocrcheck, OCR’nin durumunu kontrol etmek için OCR Kontrolü aracıdır.
• ocrdump, Oracle Clusterware Kayıt Defteri Dökümü aracıdır OCR
• Oracle Cloud Contol, Oracle Clusterware ortamını yönetmek için kullanılabilir.

Start Up and Stop Clusterware

OS başatıldığında Clusterware de otomatik olarak başlar, ancak crsctl ile manuel olarakta clusterware durdurulup başlatılabilir

$ crsctl start cluster [-all | - n server1[,..]]

Örnek

$crsctl start cluster –all
$crsctl start cluster –n k2r720n1

Local sunucuda Oracle High Availability Services daemon (OHASD) ve Clusterware servislerini çalıştırmak için

$crsctl start crs

Bu iki komutunda Linux/Unix sistemlerde çalışabilmesi için root yetkilerine ihtiyaç duymaktadır. Durdurmak içinse aşağıdaki komutlar kullanılır -f option kullanılırsa durdurmaya zorlar;

$ crsctl stop cluster [-all | -n server_name [...]] [-f]

Local sunucu için ise;

$ crsctl stop crs [-f] 

Cluster Drumunu kontrol etmek için;

$ crsctl check cluster {-all}
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online

CRS durumunu control etmek için;

$ crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online

OHASD durumunu kontrol etmek için;

$GRID_HOME/bin/crsctl check has
CRS-4638: Oracle High Availability Services is online

Tüm kaynakların durumunu kontrol etmek için;


# crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.FRA.GG_VOLUME.advm
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.chad
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.fra.gg_volume.acfs
               ONLINE  ONLINE       rac1                     mounted on /oggdir,S
                                                             TABLE
               ONLINE  ONLINE       rac2                     mounted on /oggdir,S
                                                             TABLE
ora.net1.network
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.ons
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
ora.proxy_advm
               ONLINE  ONLINE       rac1                     STABLE
               ONLINE  ONLINE       rac2                     STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        ONLINE  OFFLINE                               STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.FRA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     STABLE
      3        OFFLINE OFFLINE                               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.asm(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     Started,STABLE
      2        ONLINE  ONLINE       rac2                     Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       rac1                     STABLE
      2        ONLINE  ONLINE       rac2                     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.racdb.db
      1        ONLINE  ONLINE       rac1                     Open,HOME=/u01/app/o
                                                             racle/product/19.0.0
                                                             .0/db,STABLE
      2        ONLINE  ONLINE       rac2                     Open,HOME=/u01/app/o
                                                             racle/product/19.0.0
                                                             .0/db,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
rac1-gg-vip
      1        ONLINE  ONLINE       rac2                     STABLE
xag.gg_orders.goldengate
      1        OFFLINE OFFLINE                               STABLE
--------------------------------------------------------------------------------

Bu komutlar root, grid ve oracle tarafından execute edilebilir.

OCR ve VOTING DISK YÖNETİMİ

Oracle, OCR’yi yönetmek için üç araç sunar:

  • ocrconfig
  • ocrdump ve
  • ocrcheck
 $ ocrcheck
Status of Oracle Cluster Registry is as follows:
 Version : 3
 Total space (kbytes) : 262120
 Used space (kbytes) : 3192
 Available space (kbytes) : 258928
 ID : 1707636078
 Device/File Name : +VOCR

Ocrdump komutu, OCR içeriğini bir .txt veya .xml dosyasına dökmek için kullanılabilir.

$ ./ocrdump
$ ls -l OCRDUMPFILE
-rw------- 1 root root 212551 Dec 28 20:21 OCRDUMPFILE

OCR her bir nodda en az 4 saatte bir yedeklenir Yedekler $GRID_HOME/cdata/ dizininde saklanır, ocrconfig -showbackup komutu ile backuplar görüntülenebilir.

$GRID_HOME/bin/ocrconfig -showbackup

rac2     2021/02/17 11:28:50     +DATA:/rac-cluster/OCRBACKUP/backup00.ocr.277.1064748521     724960844

rac2     2021/02/16 19:13:19     +DATA:/rac-cluster/OCRBACKUP/backup01.ocr.276.1064689985     724960844

rac2     2021/02/16 15:13:02     +DATA:/rac-cluster/OCRBACKUP/backup02.ocr.281.1064675575     724960844

rac2     2021/02/16 11:12:51     +DATA:/rac-cluster/OCRBACKUP/day.ocr.280.1064661173     724960844

rac1     2021/02/09 19:02:37     +DATA:/rac-cluster/OCRBACKUP/week.ocr.273.1064084559     724960844

rac2     2021/03/08 15:23:03     +DATA:/rac-cluster/OCRBACKUP/backup_20210308_152303.ocr.278.1066663383     724960844

OCR ı backuptan tekrar restore etmek için;

  • Hangi backup ı kullanacağımızı ocrconfig -showbackup komutu ile tespiti yapılır
  • Tüm nodlar için clusterweare kapatılır.
  • ocrconfig -restore file_name komutu ile restore işlemi yapılır
  • Crs yeniden başlatın ve cluvfy comp ocr kullanarak bir OCR bütünlük kontrolü yapılır.

Voting Disk (VD) kontrolü yapmak için aşağıdaki komut kullanılabilir.

$ crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   2302b41653a64fb0bffabe7ff3cf10d8 (/dev/oracleasm/disks/DATA1) [DATA]
Located 1 voting disk(s).

VD’yi başka bir konuma taşımak için aşağıdaki crsctl komutunu kullanabilirsiniz:

$GRID_HOME/bin/crscrsctl replace votedisk +DATA3

srvctl komutu ile Clusterware kaynakları yönetilebilir, Bu kaynaklar; database, instance, service, nodeapps, vip, asm, diskgroup, listener, scan, scan listener, serer pool, server, oc4j, home, file system, ve gns. Bu yönetilecek olan kaynak komutun <object> bölümünde belirtilmiştir. Komutun <action> bölümünde belirtilen kaynaktaki yönetim işlemini belirtir enable, disable, start, stop, relocate, status, add, remove, modify, getenv, setenv, unsetenv, config, convert ve upgrade.

srvctl <action> <object> [<options>]
$srvctl config scan
SCAN name: knewrac-scan.kcloud.dblab.com, Network: 1
Subnet IPv4: 172.16.0.0/255.255.0.0/eth0
Subnet IPv6:
SCAN 0 IPv4 VIP: -/scan1-vip/172.16.150.40
SCAN name: knewrac-scan.kcloud.dblab.com, Network: 1
Subnet IPv4: 172.16.0.0/255.255.0.0/eth0
Subnet IPv6:
SCAN 1 IPv4 VIP: -/scan2-vip/172.16.150.83
SCAN name: knewrac-scan.kcloud.dblab.com, Network: 1
Subnet IPv4: 172.16.0.0/255.255.0.0/eth0
Subnet IPv6:
SCAN 2 IPv4 VIP: -/scan3-vip/172.16.150.28

knewracn1 nodunun VIP durumunu kontrol etmek için:

$ srvctl status vip -n knewracn1
VIP 172.16.150.37 is enabled
VIP 172.16.150.37 is running on node: knewracn1

Cluster a Node Ekleme ve Çıkarma (Adding and Removing Cluster Nodes)

İki nodlu bir cluster olduğunu ve üçüncü bir node (rac3 isimli) eklemek istediğimizi varsayalım. Mevcut bir cluster a yeni bir node eklmek genellikle aşağıdaki aşamalardan oluşur.

  • Grid Infrastructure Home (cluster/ASM) clonlama.
  • Cluster configürasyonu.
  • RDBMS home clonlama.

Node Ekleme

Yeni eklenecek node ağ yapılandırması, dizin yapılandırılması vs. gibi diğer nodlarla aynı duruma getirildiğinde yeni eklenecek olan nodda aşağıdaki komut çalıştırılır.

$ cluvfy stage –pre nodeadd –n rac3 –fixup -verbose

Eğer hata almaz isek aşağıdaki komut ile node ekleme işlemini başlatırız.

$ $GRID_HOME/oui/bin/addNode.sh –silent "CLUSTER_NEW_NODES={rac3}"
 "CLUSTER_NEW_VIRTUAL_HOSTNAMES={rac3_vip}"
$ cluvfy stage –post nodeadd –n rac3
$ crsctl check cluster –all –- verify the cluster health from all nodes
$ olsnodes –n -- to list all existing nodes in a cluster
$ORACLE_HOME/oui/bin/addNode.sh "CLUSTER_NEW_NODES={rac3}" 
$ ./cluvfy stage –post addnode –n rac3 -verbose

Node Çıkarma

Üç nodlu bir küme olduğunu ve rac3 isimli nodu cluster dan çıkarmak istediğimizi varsayalım.

$ olsnodes –n –s -t

rac1 1 Active Pinned
rac2 2 Active Pinned
rac3 3 Active Pinned

Üç nodda actif ve pinned hadedir. çıkarmak istediğimiz düğümü unpin yapmamız gerek

$ crsctl unpin css –n rac3

root user ile rac3 nodunda aşağıdaki komutu çalıştırılır.

$crsctl delete node –n rac3

Güncellemenin yapılabilmesi için tüm aktif düğümlerde aşağıdaki komut çalıştırılır.

$GRID_HOME/oui/bin/runInstaller –updateNodeList ORACLE_HOME=$GRID_HOME
cluster_nodes={rac1,rac2} CRS=TRUE -silent

Slient modda herhangi bir etkilşim ekranı olamayacağı için. Silme işlemi sonrasında herhangi bir etkin düğümden silme işlemi doğrulanır.

$cluvfy stage –post nodedel –n rac3 –verbose
$olsnodes –n –s -t

Troubleshooting Clusterware Stack Start-Up Failure

Örneğin Cluster beklenildiği gibi başlatılamıyor, Cluster ve CRS durumu DBA tarafından doğrulandıktan sonra aşağıdaki hatayı aldığını düşünelim.

$GRID_HOME/bin/crsctl check cluster

CRS-4639: Could not contact Oracle High Availability Services
CRS-4639: Could not contact Oracle High Availability Services
CRS-4000: Command Check failed, or completed with errors
veya

CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4530: Communications failure contacting Cluster Synchronization Services daemon
CRS-4534: Cannot communicate with Event Manager

ohasd start up failures – OHAS daemon process ile ilgili sorunlar başlıca aşağıdaki gibidir;

  • CRS-4639: Could not contact Oracle High Availability Services

veya

  • CRS-4124: Oracle High Availability Services startup failed
  • CRS-4000: Command Start failed, or completed with errors

İlk olarak başlatmanın neden başarısız olduğunu anlamak için Clusterware alert mesajı ve ohasd.log dosyası incelenir.

Otomatik başlatma yapılandırmasını doğrulamak için root user ile aşağıdaki komutu kullanın:

$ GRID_HOME/bin/crsctl config has -- High Availability Service
$ GRID_HOME/bin/crsctl config crs -- Cluster Ready Service
$ GRID_HOME/bin/crsctl enable has – turns on auto startup option of ohasd
$ GRID_HOME/bin/crsctl enable crs - turns on auto startup option of crs
$ GRID_HOME/bin/crsctl start has – initiate OHASD daemon startup
$ GRID_HOME/bin/crsctl start crs – initiate CRS daemon startup

Buna rağmen, ohasd daemon süreci başlamazsa ve sorun devam ederse, İşletim sistemindeki ohasd daemon sürecinin varlığını doğrulayın. Komut satırı isteminden, aşağıdakileri yürütün

ps -ef |grep init.ohasd

$GRID_HOME/log/hostname/ohasd altındaki ohasd.log dosyasına bakılır.

Trace file larda rapor edilen OLR sorunları giderilir. OLR bozulması veya erişilemezliği varsa uygun yöntem ile sorun çözülür. Geri yükleme (restore) yapılacak ise aşağıdaki komut ile daha önceki geçerli bir yedekten geri yüklenir.

$ocrconfig -local –restore $backup_location/backup_filename.olr

OS seviyesinde GRID Infrastructure dizininin izinlerini ve sahipliklerini gözden geçirin.

GENEL OLARAK KOMUTLARI VE NE İŞE YARADIKLARINI ÖZETLERSEK;

Start Stop …

crsctl start crs     --Clusterware üzerinde olduğunuz node için açma işlemi
crsctl stop crs      --Clusterware üzerinde olduğunuz node için kapama
crsctl enable crs     --Clusterware üzerinde olduğunuz node için aktif etme
crsctl disable crs   --Clusterware üzerinde olduğunuz node için pasif işlemi

Cechk

crsctl check crs            --Tüm clusterware durmunu kontrol eder
crsctl check cluster        --CSS servisleri kontrol eder
crsctl check <daemon> --Belli bir cluster servisini kontrol etme. (crsd,evmd,cssd)

Configürasyon dosyalarını bulma için;

crsctl query css votedisk         --Voting disk yerini belirleme
cat /etc/oracle/ocs.loc          --OCR dosyalarının yerini bulma
ocrcheck                   --Oracle Cluster registry durumunu kontrol eder.

Vote Disk Ekleme Çıkarma;

crsctl add css votedisk new_vote_disk_path               ##vote disk ekleme
crsctl delete css votedisk new_vote_disk_path              ##votedisk silme
crsctl add votedisk asm_disk_group              ##asm diske votedisk eklemek
crsctl replace votedisk asm_diskgroup / vote_disk_path    ##votedisk taşımak

OCR Backup Locasyonu;

ocrconfig –showbackup auto 
##ocrbackupları hangi node ‘ a ve nereye alınır
ocrconfig –backuploc shared_path_by_all node 
##ocr backup lokasyonu değiştirme
ocrconfig –add  path_of_location 
##ocr lokasyon ekleme.path asm veya filesystem olabilir.
ocrconfig –replace new_path ##OCR lokasyonu değiştirme
ocrconfig –repair –add +DATA1  ##OCR locasyonu repair etme.

Manuel OCR backup alma

ocrconfig –manuelbackup  ##Fiziksel olarak ocr backup alma işlemi.
ocrconfig –showbackup manuel  ##Manuel alınmış backupları gösterir.
ocrconfig –export /path_of_export  ##Mantıksal ocr backup alma işlemi

OCR Recover

ocrconfig –showbackup  (Son alınan backup belirlenir).
crsctl stop cluster –all  (Tüm nodlarda cluter kapatılır)
crsctl stop crs  (TÜüm nodlarda High availability servisleri kapatılır)
ocrconfig -restore /path_of_ocr_backup (Restore işlemi yapılır)
crsctl start crs  (High availabilty servisleri tüm nodlarda çalıştırılır)
cluvfy comp ocr -n all   (OCR entegrasyonu kontrol edilir)

OLR (OCR Local Registry)

Cluster daki her bir node oüzerinde o noda ait OLR bulunur, Clusterware kurulduğunda herbir nodda OLR oluşturulur. Cluterware o nodda çalışmasada komutları çalıştırmamızı ve işlemlere erişimi OLR sayesinde yapılabilir. OR ve Voting Disk ASM içerisndeyse Clusterware başlatılabilmesi için OLR gerekir. OLR node ile Cluster arasında köprü vazifesi görür. $GRID_HOME/cdata /hostname.olr konumundadır. ocrcheck, ocrconfig, ocrdump gibi komutların sonuna -local opsiyonu getirilerek OLR yönetimi yapılabilir.

ocrcheck –local           
ocrdump  –local –stdout        
ocrconfig  -local –export file_name    
ocrconfig –local –import file_name   
ocrconfig –local –repair olr filename 

Clusterware Network Ayarları

oifcfg iflist –p –n       ##cluster ip listesini gösterir
oifcfg  getif      ##cluster public ve private ipleri listeler
srvctl config nodeapps –a    ##VIP IP,host subnetmask vb. listeler 

Public VIP Adress Değiştirme

  • Değiştirmyi istediğimiz noddaki tüm servisler kapatılır
srvctl stop service –d RDBA –s crm,hr  –n   rac1
  • Vip adress için kaydedilecek mevcut ip adress konfigurasyonu yapılır.
srvctl config vip –n rac1
  • VIP servisi durudurlur.
srvctl  stop vip –n host1
  • kontrolleri yapılır.
ifconfig –a   
  • Tüm nodlarda /etc/hosts dosyasına gerekli ip adresleri ayarlanır.
  • ilgili node için gerekli düzenleme yapılır.
srvctl modify nodeapps –n rac1 –A new_vip_ip
  • Node VIP servisi çalıştırılır.
srvctl start vip –n rac1
  • Tüm adımlar herbir node için tekrarlanır.
  • Cluster haberleşmesi kontrol edilir.
cluvfy comp nodecon –n all-verbose

Scan VIP ve Scan Listener için;

srvctl  add scan –n racdb-scan          --Scan vip ekleme
srvctl remove scan –f                   --Scan vip kaldırma
srvctl add scan_listener                --scan listener eklemek
srvctl add scan_listener  –p port       --nondefault port scan listener ekleme
srvctl remove scan_listener –f          --scan listener silme

srvctl modify scan –n cluster01-scan   --mevcut scan başka bir scan ile eşlemek.

srvctl modify scan_listener –u         --mevcut scan_listener ‘ı var olan scan ile eşlemek.