web-dev-qa-db-ja.com

Oracle SIDおよびサービス名。接続の問題

SQL開発者を介してリモートサーバー上のOracleデータベースに接続しようとしています。接続の詳細をtnsnamesにコピーしました。dbに接続できます。

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

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

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

トラブルシューティング中に、sqldeveloperのtnsオプションを変更し、問題の原因を見つけるために基本オプションを選択しましたが、正しいサービス名のために接続でき、SIDを介してdbに接続できないことに気付きましたsqldeveloperを介して名前を付けます。

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

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

6
user1751356

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

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

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を使用する場合は、クライアントからtnsping SIDを実行してみてください。

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

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


データベースのSIDを知る必要がある場合は、次のようにします。

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

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

Oracle sidとデータベース名の確認

11
A B

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

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

sqlplus hr@liverpool:1521:DEMO

ではなく

sqlplus hr@liverpool:1521/DEMO
0