Ich habe den Host, den Port, die Benutzer-ID und das Kennwort, aber die fehlende SID für die Verbindung mit Oracle DBMS. Wie kann ich die Liste der SIDs auf diesem Server finden?So erhalten Sie die Liste der SIDs von Oracle
Antwort
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.
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.
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.
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.
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 '*' ". –
Es ist ein nmap-Skript, das vielleicht könnte, Orakel-sid-Brute helfen:
http://nmap.org/nsedoc/scripts/oracle-sid-brute.html
Es mit nmap auf meinem System installiert wurde.
nmap --script oracle-sid-brute -p 1521-1560 [host]
Dies würde nur helfen, wenn die SID in einer Liste gefunden werden kann. Die Standardliste ist hier:
- 1. Android - So erhalten Sie die Liste der AudioManager/AudioSystem-Parameter
- 2. So erhalten Sie die Nummer des Blattes aus der Liste
- 3. So erhalten Sie die vollständige Liste der Unity-Shader-Eigenschaften
- 4. So erhalten Sie die Liste der startenden Anwendungen
- 5. So erhalten Sie die Kategorien der Datensätze
- 6. So erhalten Sie eine Liste der Titel aller Wikipedia-Artikel
- 7. So erhalten Sie eindeutige Werte in der Liste
- 8. So erhalten Sie eine Liste der verwendeten UDTFs in SQLRPGLE
- 9. So erhalten Sie die Zeitzone von Datum
- 10. So erhalten Sie Sharepoint-Liste mit C#
- 11. So erhalten Sie die Schriftgröße von CMFCPropertyFontProperty
- 12. So erhalten Sie eine Liste der installierten Media Player
- 13. So erhalten Sie die Kompassrichtung
- 14. So erhalten Sie eine Liste der Eigenschaften mit apache.commons
- 15. Erhalten Sie Ausgabe der Ansicht in Oracle
- 16. So erhalten Sie eine Liste der beliebtesten Kurse in Moodle
- 17. Erlang So erhalten Sie String aus der Liste
- 18. So erhalten Sie die Nachricht von der Signatur als Empfänger
- 19. So erhalten Sie eine Liste von Gebietsschemas in .Net
- 20. Erhalten Sie die ID der letzten eingefügten Zeile ORACLE/PHP
- 21. So erhalten Sie eine Liste von verketteten Textknoten
- 22. So erhalten Sie ausgewählten Wert von Dropdown-Liste mit Knockout
- 23. So erhalten Sie und zeigen Sie die Liste der Youtube-Videos mit Javascript
- 24. So erhalten Sie die Standardshell
- 25. So erhalten Sie die Stringlänge
- 26. So erhalten Sie die Operationen in der dynamischen Programmierung
- 27. So erhalten Sie eine Liste der Zweige mit der Anzahl der Commit Ahead von anderen Zweig
- 28. So erhalten Sie die Bluetooth-Ausgangsübertragungsliste
- 29. So erhalten Sie die Ausgabe des Summarizers in der Datei
- 30. SIDs in Benutzernamen/Gruppen konvertieren?
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