7

SQLDeveloperを介してリモートサーバー上のOracleDBに接続しようとしています。接続の詳細をtnsnamesにコピーし、データベースに接続できるようになりました。

ただし、sqldeveloperと同じ別のdbアプリケーションがあり、接続しようとすると、このエラーが発生し続けます。このアプリケーションは、ホスト名とSIDを必要とするoraclejdbcシンクライアントを使用します。

以下のエラーが発生しました:

java.sql.SQLException:リスナーが次のエラーで接続を拒否しました:ORA-12505、TNS:listenerは現在接続記述子で指定されたSIDを認識していません

トラブルシューティング中に、sqldeveloperのtnsオプションを変更し、何が問題だったかを調べるために基本オプションを選択しました。正しいサービス名のために接続でき、SID経由でデータベースに接続できないことに気付きました。 sqldeveloperを介しても名前を付けます。

SID名を見つけるためにいくつかのdbクエリを使用しましたが、それでも同じエラーが発生し続けます。トラブルシューティングを手伝ってください。

御時間ありがとうございます..

4

2 に答える 2

11

ORA-12505は、クライアントがサーバー側のリスナーがまったく認識しなかったSIDを渡したことを意味します。

10G以降では、次のようにサーバー側を構成せずにEZconnectを使用できます。

sqlplus hr@liverpool:1521/DEMO

hr is the user name
liverpool is the server name
1521 is the port the listener for the DB is listening on
DEMO is the database SID

(また)

それでもtnsnames.oraを使用する場合は、クライアントからtnspingSIDを実行してみてください。

Linuxでは、ORACLEにローカルパスからtnsnames.oraファイルを読み取らせることもできます。TNS_ADMINをtnsnames.oraファイルがあるディレクトリに設定するだけです。

それ以外の場合は、クライアントの$ ORACLE_HOME / network/adminでtnsnames.oraを構成する必要があります


データベースSIDを知る必要がある場合は、次を使用します。

デュアルからsys_context('userenv'、'db_name')を選択します。

このURLを参照してください:

Oracleのsidとデータベース名を確認しています

于 2012-12-03T21:10:04.090 に答える
1

私もこの問題に直面しています。LinuxとOracle11.2.0.1.

私が見つけたのは、接続文字列は次のようでなければならないということでした。

sqlplus hr@liverpool:1521:DEMO

ではなく

sqlplus hr@liverpool:1521/DEMO
于 2014-01-08T12:32:37.220 に答える