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.