Listener: Unterschied zwischen den Versionen

Aus PPwiki
Wechseln zu: Navigation, Suche
 
(16 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 5: Zeile 5:
 
Alternativ kann die Datenbank statisch in der Datei listener.ora registriert werden.  
 
Alternativ kann die Datenbank statisch in der Datei listener.ora registriert werden.  
  
Mehr dazu unter [https://avdeo.com/2013/04/12/instanceservice_registration/ Instance/service registration with Database listener]
+
Mehr dazu unter [[#Fehlersuche|unten]] oder unter [https://avdeo.com/2013/04/12/instanceservice_registration/ Instance/service registration with Database listener]
 
und [https://www.scribd.com/document/131516826/Registering-Database-Service-With-Listener Registering Database Service With Listener | Static vs. Dynamic]  
 
und [https://www.scribd.com/document/131516826/Registering-Database-Service-With-Listener Registering Database Service With Listener | Static vs. Dynamic]  
  
Zeile 11: Zeile 11:
  
  
Bei z.B.
+
Bei Fehlern wie 
 
  ORA-12154: TNS: Angegebener Connect Identifier konnte nicht aufgelöst werden
 
  ORA-12154: TNS: Angegebener Connect Identifier konnte nicht aufgelöst werden
  ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
+
  ORA-12505: TNS:listener does not currently know of SID given in connect descriptor
 +
kann es ein Problem mit der Datenbank oder dem Listener geben.
 +
Eine nicht (komplett?) hoch gefahrene Datenbank ist auch nicht beim Listener registriert.
  
 +
=== Datenbank prüfen ===
  
 +
Z.B. mit
 +
  SELECT INSTANCE_NAME, STATUS, DATABASE_STATUS FROM V$INSTANCE;
  
Über den  Befehle '''lsnrctl status''' in einer Windows Konsole ("DOS-Fenster" oder Powershell) kann geprüft werden, ob die Datenbank überhaupt beim Listener registriert ist:
+
STATUS
 +
 
 +
* STARTED - After STARTUP NOMOUNT
 +
* MOUNTED - After STARTUP MOUNT or ALTER DATABASE CLOSE
 +
* OPEN - After STARTUP or ALTER DATABASE OPEN ''der "normale" Zustand einer Datenbank''
 +
* OPEN MIGRATE - After ALTER DATABASE OPEN { UPGRADE | DOWNGRADE }
 +
 
 +
DATABASE_STATUS
 +
* ACTIVE (normal)
 +
* SUSPENDED
 +
* INSTANCE RECOVERY
 +
 
 +
Wenn die Datenbank nicht läuft, also nicht den Status OPEN hat, am einfachsten einmal den Server neu starten.
 +
 
 +
[https://docs.oracle.com/en/database/oracle/oracle-database/12.2/refrn/V-INSTANCE.htm Orcale Dokumentation zu V$INSTANCE]
 +
 
 +
=== Datenbank registrieren ===
 +
 
 +
Über den  Befehle ''lsnrctl services'' in einer Windows Konsole ("DOS-Fenster" oder Powershell) kann geprüft werden, ob die Datenbank überhaupt beim Listener registriert ist:
  
 
<pre>
 
<pre>
C:\Users\Administrator>lsnrctl status
+
C:\Users\Administrator>lsnrctl services
  
LSNRCTL for 64-bit Windows: Version 11.2.0.4.0 - Production on 04-APR-2019 09:52:38
+
LSNRCTL for 64-bit Windows: Version 11.2.0.4.0 - Production on 04-APR-2019 11:01:18
  
 
Copyright (c) 1991, 2013, Oracle.  All rights reserved.
 
Copyright (c) 1991, 2013, Oracle.  All rights reserved.
 +
 +
Anmeldung bei (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=pc-hs)(PORT=1521)))
 +
Services Übersicht...
 
...
 
...
 
Dienst "plugplant" hat 1 Instanzen.
 
Dienst "plugplant" hat 1 Instanzen.
   Instanz "helge", Status READY, hat 1 Handler für diesen Dienst...
+
   Instanz "plugplant", Status READY, hat 1 Handler für diesen Dienst...
 +
    Handler:
 +
      "DEDICATED" festgelegt:0 abgelehnt:0 Status:ready
 +
        LOCAL SERVER
 
...
 
...
 
</pre>
 
</pre>
  
Wenn die Datenbank nicht im Listener registriert ist, obwohl sie hochgefahren (und u.U. sogar über sqlplus erreichbar ist), kann sie statisch registriert werden:
+
Wenn dort der Datenbankname nicht als Dienst aufgelistet ist, '''obwohl sie hochgefahren (und u.U. sogar über sqlplus erreichbar ist)''', ist die Datenbank nicht im Listener registriert. Sie kann statisch registriert werden.
 +
 
 +
Dafür wird in der Datei listener.ora im Block ''SID_LIST'' eine weiter ''SID_DESC'' Eintrag eingefügt (hier für die Datenbank ''PLUGPLANT''):
 +
 
 +
<pre>
 +
SID_LIST_LISTENER =
 +
  (SID_LIST =
 +
    ...
  
<code>
+
    (SID_DESC =
 +
      (SID_NAME = PLUGPLANT)
 +
      (ORACLE_HOME = C:\app\Oracle\product\12.2.0\dbhome_1)
 +
    )
 +
  )
 +
</pre>
 +
 
 +
Der Listener sollte jetzt einmal neu gestartet werden. Die Befehle müssen in einer Konsole ("DOS-Fenster" oder Powershell) mit Administratorrechten ausgeführt werden:
 +
<pre>
 +
lsnrctl stop
 +
lsnrctl start
 +
</pre>
  
</code>
+
Danach sollte die Datenbank von ''lsnrctl services'' als Dienst angezeigt werden.

Aktuelle Version vom 11. Juli 2024, 09:30 Uhr

1 Registrierung der Datenbank im Listener

Jede Datenbank muss beim Listener registriert sein. Normalerweise geschieht dies dynamisch über den Hintergrundprozess LREG (bzw. PMON bis Oracle 11g), wenn die Datenbank hochfährt.

Alternativ kann die Datenbank statisch in der Datei listener.ora registriert werden.

Mehr dazu unter unten oder unter Instance/service registration with Database listener und Registering Database Service With Listener | Static vs. Dynamic

2 Fehlersuche

Bei Fehlern wie

ORA-12154: TNS: Angegebener Connect Identifier konnte nicht aufgelöst werden
ORA-12505: TNS:listener does not currently know of SID given in connect descriptor

kann es ein Problem mit der Datenbank oder dem Listener geben. Eine nicht (komplett?) hoch gefahrene Datenbank ist auch nicht beim Listener registriert.

2.1 Datenbank prüfen

Z.B. mit

 SELECT INSTANCE_NAME, STATUS, DATABASE_STATUS FROM V$INSTANCE;

STATUS

  • STARTED - After STARTUP NOMOUNT
  • MOUNTED - After STARTUP MOUNT or ALTER DATABASE CLOSE
  • OPEN - After STARTUP or ALTER DATABASE OPEN der "normale" Zustand einer Datenbank
  • OPEN MIGRATE - After ALTER DATABASE OPEN { UPGRADE | DOWNGRADE }

DATABASE_STATUS

  • ACTIVE (normal)
  • SUSPENDED
  • INSTANCE RECOVERY

Wenn die Datenbank nicht läuft, also nicht den Status OPEN hat, am einfachsten einmal den Server neu starten.

Orcale Dokumentation zu V$INSTANCE

2.2 Datenbank registrieren

Über den Befehle lsnrctl services in einer Windows Konsole ("DOS-Fenster" oder Powershell) kann geprüft werden, ob die Datenbank überhaupt beim Listener registriert ist:

C:\Users\Administrator>lsnrctl services

LSNRCTL for 64-bit Windows: Version 11.2.0.4.0 - Production on 04-APR-2019 11:01:18

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Anmeldung bei (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=pc-hs)(PORT=1521)))
Services Übersicht...
...
Dienst "plugplant" hat 1 Instanzen.
  Instanz "plugplant", Status READY, hat 1 Handler für diesen Dienst...
    Handler:
      "DEDICATED" festgelegt:0 abgelehnt:0 Status:ready
         LOCAL SERVER
...

Wenn dort der Datenbankname nicht als Dienst aufgelistet ist, obwohl sie hochgefahren (und u.U. sogar über sqlplus erreichbar ist), ist die Datenbank nicht im Listener registriert. Sie kann statisch registriert werden.

Dafür wird in der Datei listener.ora im Block SID_LIST eine weiter SID_DESC Eintrag eingefügt (hier für die Datenbank PLUGPLANT):

SID_LIST_LISTENER =
  (SID_LIST =
    ...

    (SID_DESC =
      (SID_NAME = PLUGPLANT)
      (ORACLE_HOME = C:\app\Oracle\product\12.2.0\dbhome_1) 
    )
  )

Der Listener sollte jetzt einmal neu gestartet werden. Die Befehle müssen in einer Konsole ("DOS-Fenster" oder Powershell) mit Administratorrechten ausgeführt werden:

lsnrctl stop
lsnrctl start

Danach sollte die Datenbank von lsnrctl services als Dienst angezeigt werden.