0

システムに Oracle 11g をインストールしました。単純な Java プログラムを使用してデータベースに接続できます。

ORACLE_USER = "user1"
ORACLE_PASSWORD = "user1"
ORACLE_HOST = "localhost"
ORACLE_SID = "ORCL"
ORACLE_PORT = "1521 "  

String connectionString = "jdbc:oracle:thin:@(description=(address=(host=" + ORACLE_HOST
                    + ")(protocol=tcp)(port=" + ORACLE_PORT + "))(connect_data=(sid=" + ORACLE_SID + ")))";
Connection connection = DriverManager.getConnection(connectionString, ORACLE_USER,ORACLE_PASSWORD);

今、チームメイトシステムのデータベース(LANネットワーク)に接続したいです。そのシステムに ping を実行できます。上記のコードで行った唯一の変更は

ORACLE_HOST = "kdsystem" //machine name

しかし、同じコードが失敗し、次のエラー メッセージが表示されます。

java.sql.SQLException: Io exception: The Network Adapter could not establish the
 connection
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java
:112)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java
:146)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java
:255)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
            at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:
    414)
......
....

この問題を解決するのを手伝ってください。ありがとう。

4

1 に答える 1

0

チーム メイト マシンで、ORACLE_PORT および ORACLE_HOST (マシンに表示される IP アドレス、または 0.0.0.0) でリッスンしているかどうか、netstat またはその他のツールで確認できます。Linux/unix マシンで次のように確認できます。

netstat -an | grep 1521

または利用できない Windows マシンでgrepは:

netstat -an | findstr 1521

そのようなコマンドの結果を表示してください。

Oracle が localhost (127.0.0.1) でリッスンしている場合、他のマシンはそれに接続できません。他のユーザーが使用できるように Oracle サーバーを構成する必要があります。

Oracle が他のマシンで使用可能なアドレスをリッスンしている場合は、telnet を使用してそのマシンに接続できるかどうかを確認します。Oracle に接続できない場合は、これら 2 台のマシンの間にファイアウォールまたは同様のブロックが存在する可能性があります。

于 2012-08-17T09:01:27.477 に答える