Oracle ASM und/oder Datenbank Instanz Ausfall unter RHEL 7.2
Hintergrund
Mit RHEL/OEL 7 wurde das "Systemd" Framework als Ersatz der SysV Init Skripte eingeführt. "Systemd" ist ein System- bzw. Service Manager für Linux Operating Systeme (OS). Er verfügt über zahlreiche neue Funktionalitäten wie z.B. parallele Ausführung von System Services beim Starten des Systems, Aktivierung von Hintergrundprozessen aufgrund von Ereignissen, Unterstützung von sog. "System State Snapshots" sowie eine auf Abhängigkeiten basierte Kontrolle der System Services.
Eines der von "Systemd" überwachten Services ist "logind", welches diverse Eigenschaften der OS User Sessions steuert, wie z.B. das Verhalten von Hintergrundprozessen einer Session wenn die Session beendet wird.
Die Konfiguration des "logind" Service wird über die Konfigurationsdatei /etc/systemd/logind.conf gesteuert. Zur Administration wird u.a. das Kommando "loginctl" verwendet.
Problemursache
Mit RHEL 7.2 wurde ein neues Attribut für das "logind" Service eingeführt, "RemoveIPC". Ist der Wert dieses Attributes auf "yes" gesetzt, werden nach dem Beenden der letzten (interaktiven) OS User Session eines Users sämtliche eventuell noch vorhandenen IPC Ressourcen ("Shared Memory Segmente", "Semaphoren", "Message Queues") gelöscht und damit vom System entfernt.
Bei RHEL 7.2 ist dieser Wert standardmäßig auf "yes" gesetzt (für OEL s.u.), was dazu führt, dass nach einem Beenden der letzten (interaktiven) OS User Session eines Users unter dem eine Oracle ASM u/o Datenbank Instanz läuft, die "Shared Memory Segmente" und "Semaphoren" dieser Instanz gelöscht werden.
Dadurch verlieren die Hintergrundprozesse der Instanz(en) - welche unabhängig von den interaktiven Sitzungen laufen - ihre Konsistenz bzw. eine ihrer wichtigsten und vitalen Informations- und Kommunikationsquellen, was in letzter Konsequenz zu einem Totalausfall der Instanz(en) führt.
Es gibt dazu folgenden Bug bei RedHat: 1264533.
Symptome
Installation(en) und Upgrade(s) schlagen fehl
...
KFOD-00313: No ASM instances available. CSS group services were successfully initilized by kgxgncin
KFOD-00105: Could not open pfile 'init@.ora'
...
Creation of ASM password file failed. Following error occurred: Error in Process: /u01/app/12.1.0/grid/bin/orapwd
Enter password for SYS:
OPW-00009: Could not establish connection to Automatic Storage Management instance
2015/11/20 21:38:45 CLSRSC-184: Configuration of ASM failed
2015/11/20 21:38:46 CLSRSC-258: Failed to configure and start ASM
...
bereits laufende Instanz(en) fallen plötzlich aus
alert.log
...
ORA-27157: OS post/wait facility removed
ORA-27300: OS system dependent operation:semop failed with status: 43
ORA-27301: OS failure message: Identifier removed
ORA-27302: failure occurred at: sskgpwwait1
...
/var/log/messages
...
Nov 20 21:38:43 kernel: traps: oracle[24861] trap divide error
ip:3896db8 sp:7ffef1de3c40 error:0 in oracle[400000+ef57000]
...
Problembehebung
RHEL 7.2
OEL 7.2
Mit OEL wird RemoveIPC explizit auf "no" gesetzt, allerdings besteht die Möglichkeit, dass bei manuellen Veränderungen an der Datei /etc/systemd/logind.conf (z.B. vor einem Upgrade auf 7.2), das Problem nach einem Upgrade dennoch auftritt. OEL erstellt auf jeden Fall eine "korrekte" Version der Datei unter /etc/systemd/logind.conf.rpmnew. Im Problemfall die Datei /etc/systemd/logind.conf prüfen und gegebenenfalls wie unter RHEL 7.2 verfahren.