SQL Developerに新しい接続を追加するときにOracle TNS名が表示されない
-
06-07-2019 - |
質問
SQL Developerを使用してOracleデータベースに接続しようとしています。
.Net Oracleドライバをインストールし、 tnsnames.ora
ファイルを
に配置しました
C:\ Oracle \ product \ 11.1.0 \ client_1 \ Network \ Admin
tnsnames.oraで次の形式を使用しています:
dev =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.XXX.XXX)(PORT = XXXX))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = idpdev2)
)
)
SQL Developerで新しい接続を作成しようとすると、TNS名がオプションとして表示されません。
足りないものはありますか?
解決
SQL Developerは、tnsnames.oraファイルをこの順序で次の場所で検索します
- $ HOME / .tnsnames.ora
- $ TNS_ADMIN / tnsnames.ora
- レジストリ内のTNS_ADMINルックアップキー
- /etc/tnsnames.ora(非ウィンドウ)
- $ ORACLE_HOME / network / admin / tnsnames.ora
- LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME_KEY
- LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME
どのSQL Developerが使用しているかを確認するには、ワークシートでコマンド show tns
を発行します
tnsnames.oraファイルが認識されない場合は、次の手順を使用します。
-
TNS_ADMIN という環境変数を定義して、tnsnames.oraファイルを含むフォルダーを指すようにします。
Windowsでは、これはコントロールパネル>に移動して行います。 システム> 高度なシステム設定> 環境変数...
Linuxでは、ホームディレクトリの.profileファイルで TNS_ADMIN 変数を定義します。
-
OSがこの環境変数を認識していることを確認します
Windowsコマンドラインから: echo%TNS_ADMIN%
Linuxから: echo $ TNS_ADMIN
-
SQL Developerを再起動
- SQL Developerで Connections を右クリックし、 New Connection ... を選択します。ドロップダウンボックスで接続タイプとして TNS を選択します。 tnsnames.oraのエントリがここに表示されます。
他のヒント
SQL Developerを開きます。 [ツール]に移動->設定->データベース->高度な 次に、Tnsnamesディレクトリを明示的に設定します
TNSNAMESが正しくセットアップされ、Toad、SQL * Plusなどに接続できましたが、SQL Developerを機能させるためにこれを行う必要がありました。おそらくインストールも苦痛だったため、Win 7の問題だったのかもしれません。
TNSPINGを実行して接続を確認することにより、使用されているtnsnames.oraファイルの場所をいつでも確認できます(9i以降):
C:\>tnsping dev
TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 08-JAN-2009 12:48:38
Copyright (c) 1997, 2005, Oracle. All rights reserved.
Used parameter files:
C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = XXX)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = DEV)))
OK (30 msec)
C:\>
問題は、tnsnames.oraで作成したエントリにある場合がありますが、システムがそれを検出できないことではありません。とはいえ、tns_admin環境変数を設定することは良いことです。複数のOracleホームを持つシステムで使用されているtnsnamesファイルを正確に判断する際に生じる避けられない問題を回避できるからです。
SQLDeveloper で Tools->を参照します。下の画像に示すように、設定
。
[設定]オプション expand Database-> [詳細]を選択-> " Tnsnames Directory" -> tnsnames.ora が存在するディレクトリ
を参照します。
[ OK ]をクリックします。
下の図に示すように。
完了しました!
TNSnames オプションで接続できるようになりました。
Jasonが言及した手順は非常に優れており、機能するはずです。ただし、SQL Developerには少しひねりがあります。 tnsnames.oraファイルを初めて読み取るときに、接続仕様(ホスト、サービス名、ポート)をキャッシュします。その後、元のエントリがtnsname.oraファイルから削除されても、仕様は無効になりません。キャッシュは、SQL Developerを終了して再起動した後も保持されます。これは、状況を処理するそのような非論理的な方法ではありません。 tnsnames.oraファイルが一時的に利用できない場合でも、SQL Developerは元の仕様が真である限り接続を確立できます。問題は、次の小さなひねりを伴います。 SQL Developerは、接続を解決するときに、tnsnames.oraファイル内のサービス名を大文字と小文字を区別する値として扱います。そのため、ファイルにABCD.worldというエントリ名があり、それをabcd.worldという名前の新しいエントリに置き換えた場合、SQL DeveloperはABCD.worldの接続仕様を更新しません。abcd.worldは別のものとして扱われます。接続全体。 オラクル製品が、大文字と小文字を区別しないオラクルが開発したファイル形式のコンテンツを大文字と小文字を区別するものとして扱うことに驚かないのはなぜですか?
SQL Developerで、Tools-> preferences-> Datababae-> advanced-> Tnsnameディレクトリをtnsnames.oraを含むディレクトリに設定します
上記の変更のいずれも、私の場合に違いをもたらしませんでした。コマンドウィンドウでTNS_PINGを実行できましたが、SQL Developerはtnsnames.oraがどこにあるかを把握できませんでした。
私の場合の問題(Windows 7-64ビット-Enterprise)は、Oracleインストーラーが[スタート]メニューのショートカットを間違ったバージョンのSQL Developerに向けていることでした。インストーラーに付随する3つのSQL Developerインスタンスがあるようです。 1つは%ORACLE_HOME%\ client_1 \ sqldeveloper \にあり、2つは%ORACLE_HOME%\ client_1 \ sqldeveloper \ bin \にあります。
インストーラは、単に機能しなかったbinディレクトリ内のバージョンを指すスタートメニューショートカットをインストールしました。接続メカニズムとしてTNSを選択したときに行った選択を記憶せず、SQL Developerを起動するたびにパスワードを要求します。また、他の投稿で参照されているデータベースの詳細設定のTNSディレクトリフィールドもありません。
古いスタートショートカットを投げ、%ORACLE_HOME%\ client_1 \ sqldeveloper \ sqldeveloper.exeへのショートカットをインストールしました。その変更は私の場合の問題を修正しました。