Verwenden von Oracle DB über SSH-Tunnel. Fehler "ORA-12541: TNS: kein Zuhörer"

8

Hallo Ich habe ein Problem beim Zugriff auf Oracle DB von unserem Rechenzentrum durch einen Tunnel.

Wir haben ein ziemlich normales Datacenter mit einer Maschine, die von außen zugänglich ist (Ich lege die IP in die Datei / etc / hosts als dc) und die Oracle DB hinein. Die IP-Adresse unserer Oracle-Datenbank im internen Netzwerk lautet 192.168.1.7

Um einen Tunnel zu erstellen, verwende ich den Befehl:

%Vor%

und natürlich funktioniert es (manchmal füge ich auch ein paar Debug -vv hinzu, um zu sehen, ob etwas passiert).

Jetzt der schwierige Teil - Verbindung zu Oracle. Ich habe den Instant Client 11.2 installiert. und meine tnsnames.ora sieht so aus:

%Vor%

Und wenn ich versuche, eine Verbindung herzustellen, benutze den Befehl:

%Vor%

Es beginnt die Verbindung durch den Tunnel (ich sehe es in der ssh debug), aber dann schlägt es fehl Erzählen:

%Vor%

Wenn ich versuche, denselben Befehl auszuführen, wenn ich im Intranet bin, funktioniert es (offensichtlich ist der einzige Unterschied, dass wir in dem tnsnames.ora-HOST 192.168.1.7 haben und nicht den localhost).

>

Ich habe auch versucht, die einfache Befehlszeile zu verwenden:

%Vor%

oder alternativ

%Vor%

Aber nichts hat geholfen:)

Ich würde jede Hilfe oder Vorschläge schätzen. Vermische ich etwas ssh-Flagge, um es möglich zu machen?

Wahrscheinlich die Protokolldatei:

%Vor%

wo Samt ist mein lokaler Hostname und Johndoe ist mein lokaler Benutzername. Warum wird es auf die andere Seite geschickt?

UPDATE:

Nachdem wir ein wenig mehr aus dem Datencenter untersucht haben, sieht es so aus: - Die erste Verbindung geht zum Port 1521 - aber dann wird sqlplus auf die Portnummer & gt; 3300, was jedes Mal anders ist und um 3 erhöht wird (zumindest einige Versuche, die ich hatte) - Wenn wir versuchen, durch einen Tunnel zu verbinden, wird sqlplus versuchen, sich mit localhost zu verbinden und es wird offensichtlich scheitern

Der Fehler "No Listener" stammt wahrscheinlich von der Tatsache, dass wir diese Ports nicht umleiten. Gibt es eine Möglichkeit (wahrscheinlich eine Option in der Datei tnsnames.ora), um die Verwendung eines bestimmten Ports zu erzwingen?

    
Jakub Troszok 13.01.2010, 20:00
quelle

6 Antworten

3

Blick in die Metalink ID 361284.1 (Bearbeiten: effektiv nicht öffentlich, aber finde die info hier )

Oracle Connection Manager scheint Ihre Option zu sein. Es behandelt im Grunde die Portumleitungen innerhalb der Firewall . Ich habe es vorher nicht benutzt, kann dich also nicht weiter beraten.

Update: Eine andere Möglichkeit wäre, MTS zu verwenden, Dispatcher mit bestimmten Ports zu konfigurieren und diese Ports in der Firewall zu öffnen. Sie müssen dafür keine zusätzliche Software installieren, aber die Verbindung über den gemeinsam genutzten Server erfordert unter Umständen eine Erhöhung von LARGE_POOL_SIZE. Sie benötigen also die DBA-Rolle, um den DISPATCHERS-Parameter zu ändern. Sie müssten auch die DB hüpfen.

    
HAL 9000 05.06.2011, 22:25
quelle
3

Normalerweise sollte das funktionieren. Ich würde keinen Standard-Listener-Port als Eintrag für den SSH-Tunnel verwenden, aber das sollte nicht das Problem sein. Ich würde auch nicht das root-Konto verwenden, um die ssh-Verbindung zu erstellen, vorzugsweise ein dediziertes reguläres Konto. Verwenden Sie gemeinsam genutzte Server oder handelt es sich bei der Datenbank um eine RAC-Datenbank mit einer Lastausgleichskonfiguration? Eine nette Erklärung ist hier Wie kann ich über ssh tunnel chain (double tunnel, Server im Firmennetzwerk) mit ORACLE DB verbinden? , ein bisschen komplizierter .....

aktualisieren Checkout DbVisualizer , es hat jetzt integrierte SSH-Tunneling. Ich denke, es lohnt sich, es wenigstens einmal auszuprobieren. Es ist nicht kostenlos, aber gut. Multi-Plattform und Multi-Datenbank und sehr flexibel.

    
ik_zelf 12.04.2011 20:22
quelle
0

Können Sie versuchen, eine Ablaufverfolgung zu erstellen, um genau zu bestimmen, was passiert:

  • Versuchen Sie hier , um die Server-Trace zu starten (seien Sie vorsichtig! Alle neuen Anfragen werden zurückverfolgt und der Server kann zusammengelegt werden).
  • Für die Client-Ablaufverfolgung hier .
FerranB 04.06.2011 13:35
quelle
0

MJ! Dein Tunnel ist nur für den ersten tcp connect, dein eigener LISTEN-Port wird nicht getunnelt und wahrscheinlich nicht implementiert. Die Firewall sollte eine Verbindung zu Ihnen ermöglichen, ähnlich wie bei aktivem FTP. Alle Ports für Oracle sind ab Seite 670 von "Building Internet Firewalls" 2 / E Kapitel 23, Abschnitt: Oracle SQL * Net und Net8 recht ausführlich dokumentiert. Sie können es auf SafariBooksOnline.com

ansehen

ISBN 1565928718

    
bbaassssiiee 21.01.2014 21:37
quelle
-1

Vielleicht wurde Ihr Zuhörer noch nicht gestartet. Versuchen Sie den Befehl " lsnrctrl start " auszuführen.

    
lepike 08.06.2011 12:26
quelle
-1

Auch eine gute Erklärung ist hier Verbindung zu einer Oracle-Datenbank obwohl a SSH secure shell , die für mich funktionierte.

  
  1. Öffnen Sie putty und geben Sie auf der Sitzungsseite den Namen eines Servers ein und vergewissern Sie sich, dass SSH aktiviert ist. Der Server kann ein beliebiger Server sein   Benutzername und Passwort für die Anmeldung. Ich benutze hier einen BLAUBIRD als   Ich besitze es!

  2.   
  3. Deaktivieren Sie auf der Seite connection- & gt; ssh- & gt; tunnels oben beide Optionen ("Local ports accept ..." und "Remote ports accept ...").

  4.   
  5. Geben Sie 9999 (oder einen beliebigen Port über 1024 als Quellport ein.

  6.   
  7. Geben Sie im Ziel den Datenbankhost und -port gemäß tnsnames ein. In meinem Fall ist dies ein Server namens GREENBIRD und ein Port von

  8.   
  9. Geben Sie dies als Server: Port ein.

  10.   
  11. Da sich der Port, der weitergeleitet wird, auf Ihrem Desktop befindet, aktivieren Sie die Option "Lokal". Lassen Sie "Auto" auch für die IP-Version aktiviert.

  12.   
  13. Klicken Sie auf die Schaltfläche Hinzufügen. In der Liste der weitergeleiteten Ports sehen Sie L9999 greenbird: 1521 (Sie unterscheiden sich).

  14.   
  15. Gehen Sie erneut zur Sitzungsseite, geben Sie einen Namen für Ihre gespeicherte Sitzung ein und klicken Sie auf Speichern.

  16.   
  17. Klicken Sie auf Öffnen. Gib einen Benutzernamen und ein Passwort für den Server an (BLUEBIRD in meinem Fall). Sie werden eine normale SSH-Sitzung auf dem Server mit dem Namen anmelden   BLUEBIRD.

  18.   
    
i.van 29.06.2013 18:29
quelle

Tags und Links