SQL * Plus kann nicht innerhalb von VMWare Fusion VM mit Oracle 10g verbunden werden

3391
Craig

Ich versuche, von einer Windows XP-VM, die von VMWare Fusion unter OSX gehostet wird, eine Verbindung zu einem Oracle 10g-Server (Remote-Host im LAN) herzustellen. Ich kann zwar mit Oracle Net Manager eine Verbindung zum Dienst herstellen, jedoch nicht mit SQL Plus.

Was vermisse ich?

Ich verwende derzeit den NAT-Modus.

0

1 Antwort auf die Frage

1
Gary

Angenommen, Ihre Datenbank befindet sich auf dem Knoten mit dem Hostnamen "dbhost".

Erstens, können Sie dbhost ping? Wenn nicht, dann ist das Netzwerk nicht Oracle.

Wenn Sie können, können Sie über Port 1521 auf diesem Host telnet. Wenn nicht, handelt es sich entweder um ein Firewall-Problem oder es wird kein Oracle-Listener auf dem Remote-Knoten ausgeführt (oder es ist ein anderer Port).

Vorausgesetzt, es läuft, möchten Sie eine SID oder SERVICE_NAME vom DBA. Sie sind im Allgemeinen gleich und wenn es sich um ein * nix-System handelt, ps -ef | grep smonwerden Ihnen " " die SIDs der laufenden Instanzen angezeigt. Die kostenlose Express Edition-Datenbank hat normalerweise die SID von XE

Wenn 1521 Verkehr empfängt, versuchen Sie es

sqlplus user/pass@dbhost:1521/XE 

Ersetzen Sie XE durch das, was auch immer Ihre SID ist.

================================================== ============================ Nach dem Kommentar unten. Ich würde irgendwo eine Firewall vermuten.

Auf der Seite des Datenbankservers sollte der Listener Port 1521 überwachen. Es gibt Einstellungen in sqlnet (ich denke, tcp_invited_nodes), die als Firewall fungieren können und dem Listener mitteilen, dass er nur Verbindungen von Whitelist-IP-Adressen akzeptieren soll (oder IP-Adressen von der schwarzen Liste ausschließen soll) IPs).

Wenn der Listener die Verbindung akzeptiert, versucht er, die SID oder den SERVICE zu finden, die die Verbindung anfordert. Wenn kein solcher Dienst vorhanden ist, wird ein Fehler zurückgegeben.

Wenn der Dienst vorhanden ist, versucht der Listener, die Verbindung zur Datenbank zu übergeben, und gibt einen anderen Port zurück, über den die Verbindung tatsächlich mit der Datenbank kommuniziert (dh Port 1521 wird nur während der ursprünglichen Verbindung verwendet). [Es gibt eine Ausnahme für gemeinsam genutzte Serververbindungen, aber sie sind ungewöhnlich.]

Möglicherweise befindet sich die Datenbank möglicherweise in einem Modus, in dem keine Verbindungen akzeptiert werden (RESTRICTED-Modus oder während des Startvorgangs oder des Herunterfahrens). Die Datenbank führt auch eine Authentifizierung durch (z. B. Überprüfung des Benutzernamens und des Kennworts).

Meine Vermutung ist, dass entweder der Listener die Verbindung aufgrund einer Einstellung ablehnt oder (wahrscheinlicher) die neue Netzwerkverbindung nicht über das NAT weiterleiten kann. Versuchen Sie, den OSX Instant Client vom Host aus zu verwenden, und prüfen Sie, ob dies durchkommt. Der Instant-Client ist ziemlich viel und unzip und run, daher ist er keine große Installation und benötigt keine Administratorrechte oder ähnliches.

Wenn der Host funktioniert und die VM nicht funktioniert, versuchen Sie Bridged anstelle von NAT. Das heißt, der VM-Gast erhält seine eigene IP-Adresse und sieht für das Netzwerk wie ein unabhängiges Gerät aus, anstatt sich wie in NAT hinter dem VM-Host zu verstecken.

PS. Ein Community-Wiki erstellt, wie andere beitragen können

Ich kann den Host anpingen. Ich kann auch mit dem Host auf Port 23 telnet. Wenn ich versuche, auf 1521 zu telnet, erhalte ich eine Meldung, die besagt, dass die Verbindung durch einen fremden Host geschlossen wurde. Die "offizielle" Datei "tnsnames.ora" (die mir von einem der Administratoren zur Verfügung gestellt wird) verwendet Port 1521 für jede SID. Ich habe die Firewall auf der VM und auf meiner Workstation deaktiviert. Craig vor 13 Jahren 0
Wenn Sie "Verbindung von fremdem Host geschlossen" erhalten, ist Gary der Meinung, dass der Hörer die Verbindung abgelehnt hat oder nicht über das NAT zurückkommt. Telnet bis 1521 sollte einfach da sitzen und warten. DCookie vor 13 Jahren 0