Pages

14 Şubat 2011 Pazartesi

Oracle 11g R2 RAC yapısında düğümlerin birinde oluşan “CRS-0184 Cannot communicate with the CRS daemon” hatası ve çözümü

Oracle Grid Infrastructure ve Oracle yazılım kurulumu başarılı şekilde tamamlandı ve Oracle RAC veritabanı oluşturuldu. Kurulumdan CRS hizmetlerini kontrol ederken servislerin başarılı şekilde online durumda olduğunuda görmekteyiz.

# 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

Ancak, ne oluyorsa cluster içindeki ikinci düğümü yeniden başlattıktan sonra oluyor. Birinci düğümde cluster hazır servisi(crs) başarıyla çalışmasına rağmen ikinci düğümde bir türlü başlayamıyor. Aşağıda örnekte 2. düğümün CRS durumu yer alıyor.

# crs_stat -t
CRS-0184: Cannot communicate with the CRS daemon.

# crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online

İkinci düğümdeki grid loglarına bakınca aslında ASM disk gruplarına erişimde bir sıkıntı oluştuğu ve bir şekilde ASM instance’nın başlatılamadığını anlıyoruz.

[crsd(26294)]CRS-1013:The OCR location in an ASM disk group is inaccessible. Details in /u01/app/11.2.0/grid/log/rac2/crsd/crsd.log.
2011-02-10 16:22:55.475
[ohasd(25303)]CRS-2765:Resource 'ora.crsd' has failed on server 'rac2'.
2011-02-10 16:22:35.553
[crsd(26305)]CRS-1013:The OCR location in an ASM disk group is inaccessible. Details in /u01/app/11.2.0/grid/log/rac2/crsd/crsd.log.
2011-02-10 16:22:57.499
[ohasd(25303)]CRS-2765:Resource 'ora.crsd' has failed on server 'rac2'.
2011-02-10 16:22:57.499
[ohasd(25303)]CRS-2771:Maximum restart attempts reached for resource 'ora.crsd'; will not restart.
If you look for crsd.log file, it will show
2011-02-10 16:23:35.552: [  OCRASM][1855820272]proprasmo: Error in open/create file in dg [DATA]
[  OCRASM][1855820272]SLOS : SLOS: cat=7, opn=kgfoAl06, dep=15077, loc=kgfokge
ORA-15077: could not locate ASM instance serving a required diskgroup
2011-02-10 16:23:35.553: [  OCRASM][1855820272]proprasmo: kgfoCheckMount returned [7]
2011-02-10 16:23:35.553: [  OCRASM][1855820272]proprasmo: The ASM instance is down
2011-02-10 16:23:35.553: [  OCRRAW][1855820272]proprioo: Failed to open [+DATA]. Returned proprasmo() with [26]. Marking location as UNAVAILABLE.
2011-02-10 16:23:35.553: [  OCRRAW][1855820272]proprioo: No OCR/OLR devices are usable
2011-02-10 16:23:35.554: [  OCRASM][1855820272]proprasmcl: asmhandle is NULL
2011-02-10 16:23:35.554: [  OCRRAW][1855820272]proprinit: Could not open raw device
2011-02-10 16:23:35.554: [  OCRASM][1855820272]proprasmcl: asmhandle is NULL
2011-02-10 16:23:35.554: [  OCRAPI][1855820272]a_init:16!: Backend init unsuccessful : [26]
2011-02-10 16:23:35.554: [  CRSOCR][1855820272] OCR context init failure.  Error: PROC-26: Error while accessing the physical storage ASM error [SLOS: cat=7, opn=kgfoAl06, dep=15077, loc=kgfokge
ORA-15077: could not locate ASM instance serving a required diskgroup
] [7]
2011-02-10 16:23:35.554: [    CRSD][1855820272][PANIC] CRSD exiting: Could not init OCR, code: 26
2011-02-10 16:23:35.554: [    CRSD][1855820272] Done.

"CRS-4535: Cannot communicate with Cluster Ready Services" ve “ORA-15077: could not locate ASM instance serving a required diskgroup” hata mesajları ASM disk gruplarına bir göz atmamız gerektiğini söylemektedir.

İşte tam bu noktada, ikinci düğümde ORACLE_SID yi ASM instance’a işaret ederek asmcmd ile oturum açmaya çalışıyoruz ve bu esnada ASMCMD-08102 hatası alıyoruz.

$ export ORACLE_SID=+ASM
$ amdcmd
Connected to an idle session.
ASMCMD> ls
ASMCMD-08102: no connection to ASM; command requires ASM to run"

Manuel olarak ASM instance’ı başlatmak istediğimizde ise aşağıdaki gibi bir hata mesajı almaktayız. İşte bu noktada aslında hatanın nedenide kendini ortaya çıkarmakta.

amdcmd> startup;
ORA-27154: post/wait create failed
ORA-27300: OS system dependent operation : semget failed with status: 28
ORA-27301: OS failure message: No space left on device
ORA-27302: failure occurred at: sskgpsemsper

Yukardaki hata mesajı yeterli büyüklükte disk alanı olmadığını belirtmektedir. Eğer df-h komutunu çalıştırırsanız bu size onaylanmış olacaktır. Bu hata tamamen kernel ayarları ile ilgilidir. Eğer semafor ayarlarını kontrol ederseniz daha fazla proses oluşturmak için yeterli semaforun kalmadığını göreceksiniz. Aşağıdaki iki komuttan birini çalıştırarak mevcut semafor değerlerinizi görebilirsiniz.

# cat /etc/sysctl.conf
# /sbin/sysctl -a | grep sem

Böylece hatanın düşük semafor değerlerinden kaynaklandığını anladıktan sonra semafor değerini arttırıyoruz.
# vi /etc/sysctl.conf
kernel.sem = 250 32000 100 200

Linux sistemlerde değişikliğin hemen etki yapması için aşağıdaki komutu çalıştırıyoruz. Unix sistemlerde sunucuyu rebbot etmek gerekmektedir.

# /sbin/sysctl -p

Bu işlemin ardından önce ASM instancenı başlatıyoruz, akabinde ise CRS servisini başlatıyorum. İkinci düğümde yapılana dımlar aşağıda yer almaktadır.

$ export ORACLE_SID=+ASM
$ amdcmd
Connected to an idle session.
amdcmd> startup;

# crsctl start crs
CRS-4640: Oracle High Availability Services is already active
CRS-4000: Command Start failed, or completed with errors.

# crsctl start cluster
CRS-2672: Attempting to start 'ora.crsd' on ‘rac1’
CRS-2676: Start of 'ora.crsd' on 'rac1' succeeded

# 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

0 yorum:

Yorum Gönder