2009-06-15 12 views

Antwort

17

Ein besserer Weg ist, wenn Sie Zugriff auf den Host-Rechner haben und die Oracle-Installation den folgenden Befehl verwenden soll: lsnrctl status. Dies funktioniert auf Unix-, Linux- und Windows-Rechnern. Der Befehl status zeigt Ihnen alle Listener (und ihre zugehörigen SIDs).

C:\>lsnrctl status 

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 15-JUN-2009 16:16:34 
Copyright (c) 1991, 2005, Oracle. All rights reserved. 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE))) 
STATUS of the LISTENER 
------------------------ 
Alias      LISTENER 
Version     TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production 
Start Date    13-JUN-2009 12:04:14 
Uptime     2 days 4 hr. 12 min. 19 sec 
Trace Level    off 
Security     ON: Local OS Authentication 
SNMP      OFF 
Default Service   XE 
Listener Parameter File C:\oracle\XE\app\oracle\product\10.2.0\server\network\admin\listener.ora 
Listener Log File   C:\oracle\XE\app\oracle\product\10.2.0\server\network\log\listener.log 
Listening Endpoints Summary... 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC_FOR_XEipc))) 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ThinkpadT61)(PORT=1521))) 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=8080))(Presentation=HTTP)(Session=RAW)) 
Services Summary... 
Service "CLRExtProc" has 1 instance(s). 
    Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service... 
Service "PLSExtProc" has 1 instance(s). 
    Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... 
Service "XEXDB" has 1 instance(s). 
    Instance "xe", status READY, has 1 handler(s) for this service... 
Service "XE_XPT" has 1 instance(s). 
    Instance "xe", status READY, has 1 handler(s) for this service... 
Service "xe" has 1 instance(s). 
    Instance "xe", status READY, has 1 handler(s) for this service... 
The command completed successfully 

Im obigen Beispiel können Sie auf der XE-Datenbank mit dem Verbin Strings XEXDB, XE_XPT oder XE verbinden.

+0

Ich hatte diesen Ansatz für meine Antwort berücksichtigt, aber technisch funktioniert das nur, wenn für den Standard-Listener. Der mehr verworrene Ansatz zur Verwendung von lsnrctl ist, zuerst eine Liste von Listenern über ps-ef | grep lsnr zu erhalten und dann den STATUS-Befehl für jeden der Listener auszugeben. Wollte die Antwort nicht übermäßig komplizieren, da wahrscheinlich 99% der Installationen die standardmäßige Listener-Konfiguration verwenden. – dpbradley

4

Die kurze Antwort ist, dass Sie Zugriff auf das Host-Betriebssystem benötigen:

Für Unix, ps -ef | grep pmon Sie einen oder mehrere Prozesse mit Namen wie ora_pmon_xxxx zeigen, und xxxx ist der Instanzname.

In Windows Ich denke, es gibt eine ähnliche Signatur in der Aufgabenliste.

In der Praxis werden Ihnen diese Informationen normalerweise vom Benutzer mitgeteilt, der die Datenbank verwaltet, wenn Ihr Verbindungskonto erstellt wird.

+0

In Windows SID würde nicht unter Taskmanager sichtbar sein, sehen Sie die laufenden Dienste überprüfen müssen (services.msc) für SID zu überprüfen. ZB: OracleServiceORCL unter der Annahme, ORCL ist die SID – Sathya

+0

Danke - zur Klarstellung - keine Erfahrung auf Windows-Plattform – dpbradley

3

Die Frage kommt auf: Welche ORACLE_SIDs oder Dienste werden vom Listener unterstützt, der auf Host X Port Y läuft. Abhängig davon, wie sicher dieser Listener konfiguriert ist, können Sie dies mit dem Befehl lsnrctl von einem Client mit lsnrctl sehen Eingerichtet. Dazu benötigen Sie eine Oracle Server-Installation auf diesem Client. Wenn Sie, dass Sie

lsnrctl 
set current_listener (description=(address=(host=X)(port=Y)(protocol=tcp))) 
status 

Die Standardeinstellung des 10g Zuhörers füllt Ursache folgenden Ergebnis ausgeben können: TNS-01189: Der Zuhörer nicht dem Benutzer

authentifizieren könnte Dies liegt daran, von 10g Oracle Standard hat Sicherheit ON: Lokale OS-Authentifizierung bedeutet, dass nur der lokale OS-Benutzer, der den Listener gestartet hat, lsnrctl-Befehle an den Listener ausgeben kann. Der Zuhörer wird sich weigern, einen anderen Benutzer zu beantworten.

2

Eine andere Option ist die Datei/etc/oratab auf Unix oder deren Äquivalenz unter Windows, die ich für eine Registrierungsstruktur halte.

Das oratab sollte alle SIDs auf einem Host auflisten, egal ob aktuell oder nicht.

+0

Kommentar von @saritonin, der nicht die Berechtigung zum Kommentieren hat: "Bitte beachten Sie, dass/etc/oratab möglicherweise nicht hilfreich ist, wenn $ ORACLE_SID Parameter ist der Platzhalter '*' ". –

Verwandte Themen