ORA-00600: [ksxp_rm_can_switch4]

Апгрейдил тут на днях кластер RAC из 4-х нод. Ну и, как водится, хотелось быстро и просто, а получилось примерно так:


[root@appl1.oebs.yandex.net]:~# /opt/oracle/product/grid/11.2.0.4/rootupgrade.sh
...
OLR initialization - successful
Replacing Clusterware entries in inittab
Start of resource "ora.asm" failed
CRS-2672: Attempting to start 'ora.drivers.acfs' on 'appl1'
CRS-2676: Start of 'ora.drivers.acfs' on 'appl1' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'appl1'
CRS-5017: The resource action "ora.asm start" encountered the following error:
ORA-00600: internal error code, arguments: [ksxp_rm_can_switch4], [196609], [197124], [], [], [], [], [], [], [], [], []
Failed to start Oracle Grid Infrastructure stack
Failed to start ASM at /opt/oracle/product/grid/11.2.0.4/crs/install/crsconfig_lib.pm line 1339.

По этой ошибке первой же ссылкой нашелся документ «rootupgrade.sh Fails With ORA-600 [ksxp_rm_can_switch4] when Upgrading Grid Infrastructure (Doc ID 1610466.1)», однако помог он мало.

Сначала о том, что же случилось.

В логе /opt/oracle/product/grid/11.2.0.4/log/appl1/client/ocrconfig_27417.log


Oracle Database 11g Clusterware Release 11.2.0.4.0 - Production Copyright 1996, 2011 Oracle. All rights reserved.
2014-05-09 23:28:30.620: [ OCRCONF][3210527536]ocrconfig starts...
2014-05-09 23:28:30.620: [ OCRCONF][3210527536]Upgrading OLR data
2014-05-09 23:28:30.620: [ OCRCONF][3210527536]Verifying if OLR is already in latest version.
2014-05-09 23:28:30.621: [ OCRCONF][3210527536]OLR already in latest version. Upgrade is not required
2014-05-09 23:28:30.624: [ OCRCONF][3210527536]Exporting OLR data to [/opt/oracle/product/grid/11.2.0.4/cdata/appl1/olr11.2.0.3.0]
2014-05-09 23:28:30.626: [ OCRMSG][3210527536]prom_waitconnect: CONN NOT ESTABLISHED (0,29,1,2)
2014-05-09 23:28:30.626: [ OCRMSG][3210527536]GIPC error [29] msg [gipcretConnectionRefused]
2014-05-09 23:28:30.626: [ OCRMSG][3210527536]prom_connect: error while waiting for connection complete [24]
2014-05-09 23:28:30.725: [ OCRCONF][3210527536]Exiting [status=success]...

Т.е. он экспортировал OLR, затем обновил его локально и попытался обновить OCR. На этом шаге затаймаутился, но по какой-то причине решил, что операция прошла успешно, и продолжил дальнейшие действия.

Похоже, кластер перед обновлением был частично развален, я это отдельно не проверял, понадеялся на автоматику, что и было основной ошибкой.

Посредством ocrdump можно посмотреть, что же записано в OСR. После Ora-600 там было: активная версия 11.2.0.3, ноды db1 и db2 — версия 11.2.0.4, appl1 и appl2 — 11.2.0.3. Т.е. кластер частично обновился, на двух нодах clusterware стартована и БД работает, но вторая половина кластера в непонятном состоянии.

При этом если попытаться стартовать кластер на appl1 из хома 11.2.0.3, то в alert видим


2014-05-10 10:12:07.980
[ohasd(12716)]CRS-0807:Cluster Ready Service aborted due to failure to check version compatibility. Details at (:OHAS00115:) in /opt/oracle/product/grid/11.2.0.3/log/appl1/ohasd/ohasd.log.

Т.е. похоже, что локальный конфиг (OLR) он обновить успел и весь стек может стартовать только из хома 11.2.0.4. Но при этом ASM видит, что в кластерном конфиге (OCR) версия старая и валится с ORA-0600 [ksxp_rm_can_switch4]

Стандартных решений проблемы 2:

1. Восстановить OCR из бекапа и повторить процедуру upgrade. При этом в 1610466.1 описана ситуация, когда кластеру уже сделали downgrade, но остались еще «хвосты», что и потребовало восстановления. В нашем случае кластер был частично обновлен и простое восстановление OСR из бекапа окончательно бы его добило.
2. В 11.2.0.3 появилась возможность сказать rootupgrade.sh -force — и принудительно завершить процедуру обновления для тех нод, что остались активными. Сбойным нодам потом можно было сделать deinstall и повторно добавить их в кластер.

Оба варианта связаны с серьезной реконфигурацией. Так что я попытался все-же «допинать» ноду, чтобы штатно закончить обновление.

Спасло то, что crsconfig_lib.pm писали грамотные ребята, и на каждое серьезное действие там выполняется бекап OLR, так что у нас есть бекапы конфигов перед каждым изменением:


[root@appl1f.oebs.yandex.net]:~# ll /opt/oracle/product/grid/11.2.0.4/cdata/appl1/
total 13684
-rw-r--r-- 1 oracle oinstall 6795264 Май 9 23:28 backup_20120429_211738.olr
-rw------- 1 root root 6987776 Май 10 12:15 backup_20140510_121515.olr
-rw------- 1 root root 94721 Май 9 23:28 olr11.2.0.3.0
-rw------- 1 root root 96928 Май 10 10:22 olr11.2.0.4.0

первые 2 — это manual бекапы, последние — локальный экспорт OLR перед каждым изменением, отдельно для версии 11.2.0.3 и 11.2.0.4.

Так что я восстановил локальный OLR из бекапа и запустил ноду из хома 11.2.0.3


/opt/oracle/product/grid/11.2.0.4/bin/ocrconfig -local -import /opt/oracle/product/grid/11.2.0.4/cdata/appl1/olr11.2.0.3.0

Все стартовало, и я просто повторно выполнил процедуру rootupgrade.

Процедура отработала, но кластер из нового хома 11.2.0.4 стартовать отказался с той же самой диагностикой:


Cluster Ready Service aborted due to failure to check version compatibility

Но при этом ocrdump уже говорил, что в OCR для appl1 у нас уже версия 11.2.0.4. В принципе, понятно, он запомнил, что уже менял локальную OLR и повторно этого делать не стал, и ситуация стала обратной: в OLR записана версия 11.2.0.3, в OCR — 11.2.0.4. Где запоминается факт изменений, я уже искать не стал, а просто повторно сделал ocrconfig -local -import olr11.2.0.4.0

после чего успешно стартовал clusterware уже из нового home.

На appl2 была похожая картина, но там достаточно было просто восстановить OLR, стартовать clusterware и повторно запустить rootupgrade. Happy end 🙂

Реклама

Один ответ на “ORA-00600: [ksxp_rm_can_switch4]

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s