webentwicklung-frage-antwort-db.com.de

Der Netzwerkadapter konnte die Verbindung bei der Verbindung mit Oracle DB nicht herstellen

Beim Versuch, eine Verbindung zu einer fernen Oracle-Datenbank über JDBC herzustellen, erhalte ich die folgende Ausnahme:

Java.sql.SQLRecoverableException: IO-fout: The Network Adapter could not establish the connection
at Oracle.jdbc.driver.T4CConnection.logon(T4CConnection.Java:419)
at Oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.Java:536)
at Oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.Java:228)
at Oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.Java:32)
at Oracle.jdbc.driver.OracleDriver.connect(OracleDriver.Java:521)
at Java.sql.DriverManager.getConnection(DriverManager.Java:322)
at Java.sql.DriverManager.getConnection(DriverManager.Java:358)

Folgendes ist mein Aufbau:

Database: Oracle 10g Release 2 Standard Edition

JDBC library: ojdbc6.jar
JDBC driver: Oracle.jdbc.driver.OracleDriver
JDBC URL: jdbc:Oracle:thin:@9.2.2.2:1521:ORCL where ORCL is database's SID
JDBC User/pwd: Correct username / password

Merkwürdig an diesem Problem ist, dass die Verbindung einwandfrei funktioniert, wenn ich von der Arbeit aus arbeite. Wenn ich versuche, von zu Hause aus über eine AT & T-VPN-Verbindung eine Verbindung herzustellen, funktioniert es nicht.

Ich habe bestätigt, dass ich die IP-Adresse erreichen kann und auch die IP-Adresse auf Port 1521 eingestellt habe, was einwandfrei funktioniert. Das Herstellen einer Verbindung zur Datenquelle von einem lokalen WebLogic Application Server aus funktioniert ebenfalls gut. Beim Versuch, eine Verbindung zur Datenbank über den sqldeveloper herzustellen, kann ich auch die Datenbank erreichen.

Ich muss die Datenbank jedoch von einer eigenständigen Anwendung (zu Testzwecken) erreichen. Hat jemand eine Idee, warum dieses Problem auftritt? Und ob es Alternativen für die Verbindung zu einer Remote-Oracle-Datenbank gibt, Alternativen, die SQL Developer und Weblogic verwenden?

Hier ist ein Auszug des Codes, der versucht, sich mit der Datenbank zu verbinden:

public static void main(String args[]) throws ClassNotFoundException, SQLException {
    Class.forName("Oracle.jdbc.driver.OracleDriver");
    Connection conn = DriverManager.getConnection("jdbc:Oracle:thin:@9.2.2.2:1521:ORCL", "user", "pwd");
}
18
user976230

Wenn ein Client eine Verbindung zu einem Oracle-Server herstellt, stellt er zunächst eine Verbindung zum Oracle-Listener-Dienst her. Der Client wird häufig an einen anderen Port umgeleitet. Der Client muss also eine andere Verbindung an einem anderen Port öffnen, der von der Firewall blockiert wird.

In der Tat ist möglicherweise ein Firewall-Problem aufgrund einer Oracle-Portumleitung aufgetreten. Die Diagnose sollte mit einem Netzwerkmonitor auf dem Clientcomputer oder mit der Firewall-Verwaltungssoftware in der Firewall möglich sein.

15
Codo

Wenn es sich um eine Linux-Box handelt, würde ich vorschlagen, dass Sie den Datenbank-IP-Namen und die IP-Auflösung zum /etc/hosts hinzufügen.

Ich habe den gleichen Fehler und wenn wir das tun, funktioniert es gut.

3
user1747864

Schauen Sie sich diesen Beitrag auf Java Ranch an:

http://www.coderanch.com/t/300287/JDBC/Java/Io-Exception-Network-Adapter-could

"Die Lösung für meine Io-Ausnahme: Der Netzwerkadapter konnte die Verbindung nicht herstellen". Die Ausnahme bestand darin, die IP des Datenbankservers durch den DNS-Namen zu ersetzen. "

1
Leonardo Cruz

Ich hatte vorher ein ähnliches Problem. Dies wurde jedoch behoben, als in meiner Verbindungszeichenfolge anstelle von IP-Adresse der Hostname verwendet wurde.

0
Shreyas SG