Statische Listener-Registrierung

Um einen Switchover durchführen zu können, ist es (neben den ASM-Aliases für Redo-Logs) notwendig, die beteiligten Datenbanken statisch am Listener zu registrieren.

Bei der normalerweise üblichen dynamischen Listener-Registrierung meldet sich die Datenbank am Listener an, sobald sie gestartet worden ist; erst dann weiss der Listener über die Datenbank Bescheid und kann Remote-Zugriffe weiter reichen.

Damit ein Remote-Zugriff auch dann funktioniert, wenn die Datenbank nicht läuft (z.B. um die Datenbank aus der Ferne zu starten – was beim Switchover passiert), muss sie explizit dem Listener bekannt gemacht werden.

Eine dynamisch registrierte Datenbank mit dem Namen SENTEST sieht im Output von “lsnrctl status” folgendermassen aus:

[...]
Service "SENTEST" has 1 instance(s).
  Instance "SENTEST", status READY, has 1 handler(s) for this service...
[...]

Um diese Datenbank statisch am Listener zu registrieren, ist ein Eintrag im File $ORACLE_HOME/network/admin/listener.ora nötig:

SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (ORACLE_HOME=/opt/oracle/app/product/11.2.0/db_1)
      (SID_NAME=SENTEST))
  )

Passen Sie dabei den Pfad für das ORACLE_HOME Ihrem Setup entsprechend an.

Falls Sie mehr als eine Datenbank statisch registrieren möchten, erweitern Sie die Liste einfach:

SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (ORACLE_HOME=/opt/oracle/app/product/11.2.0/db_1)
      (SID_NAME=SENTEST))
    (SID_DESC=
      (ORACLE_HOME=/opt/oracle/app/product/11.2.0/db_1)
      (SID_NAME=SENPROD))
  )

Nach einem Neu-Einlesen des Config-Files mittels “lsnrctl reload” zeigt “lsnrctl status” nun die statisch registrierte Datenbank (zusätzlich) an:

Service "SENTEST" has 2 instance(s).
  Instance "SENTEST", status UNKNOWN, has 1 handler(s) for this service...
  Instance "SENTEST", status READY, has 1 handler(s) for this service...

Die Instanz mit Status “READY” ist die aktuell laufende, die sich dynamisch am Listener registriert hat; die statisch registrierte wird immer als “UNKNOWN” angeführt.

Falls Sie einen RAC einsetzen, müssen Sie beachten, dass der Listener hier üblicherweise im Grid Environment läuft; das zu bearbeitende Config-File liegt also in $GRID_HOME/network/admin, und auch lsnrctl muss aus dem Grid Environment gestartet werden.

Was benötigt der DBSentinel?

DBSentinel Version 2.x ist ab Oracle 11g R2 verfügbar. Die Primary und Standby Datenbanken müssen über eine identische Architektur, Plattform , Oracle Edition und Version verfügen. Zusätzlich werden auf allen Servern Java >= 1.6 und der Oracle Listener benötigt.
Darüber hinaus sind keine zusätzlichen Voraussetzungen erforderlich.