新しい接続をSQL Developerに追加するときにOracle TNS名が表示されない


93

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名がオプションとして表示されません。

行方不明のものはありますか?

回答:


176

SQL Developerは、次の場所でこの順序でtnsnames.oraファイルを探します。

  1. $ HOME / .tnsnames.ora
  2. $ TNS_ADMIN / tnsnames.ora
  3. レジストリのTNS_ADMIN検索キー
  4. /etc/tnsnames.ora(Windows以外)
  5. $ ORACLE_HOME / network / admin / tnsnames.ora
  6. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME_KEY
  7. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME

どのSQL開発者が使用しているかを確認するにshow tnsは、ワークシートのコマンドを発行します

tnsnames.oraファイルが認識されない場合は、次の手順を使用します。

  1. TNS_ADMINという環境変数を定義して、tnsnames.oraファイルが含まれているフォルダーをポイントします。

    Windowsでは、これはに移動して行われているコントロールパネル ]> [ システム ]> [ システムの詳細設定 > 環境変数...

    Linuxでは、ホームディレクトリの.profileファイルでTNS_ADMIN変数を定義します。

  2. OSがこの環境変数を認識していることを確認します

    Windowsコマンドラインから:echo%TNS_ADMIN%

    Linuxから:echo $ TNS_ADMIN

  3. SQL Developerを再起動します。

  4. SQL Developerで、[ 接続 ]を右クリックし、[ 新しい接続... ] を選択します。ドロップダウンボックスで接続タイプとしてTNSを選択します。tnsnames.oraからのエントリがここに表示されます。

1
私の場合:$ HOME / .tnsnames.oraが機能しませんでした...代わりに$ HOME / tnsnames.oraを使用しました。また、注:[ツール]-> [設定]に移動し、「tns」を検索して、ディレクトリを$ HOMEに指定する必要があります
Ryan Delucchi

これはSQL開発者1.5バージョンのリリースノートにありますが、Ubuntu 12.04 LTSでは#5のみが機能することがわかりました。forums.oracle.com/message/2769285#2769285の場合は、次の手順を試してください。注目に値する:作者はWin Vistaで問題を抱えていました。
LAFKは、モニカを2013

Windowsで私のために働いた。永遠に物事を記録するFTW!
Isaac

TNS_ADMINを設定してもうまくいきませんでした。代わりに、コンピュータですべてのTNSNAMESファイルを検索し、すべての内容を更新しました。Windows 7 Sql Developerが古いフォルダーで他のTNSNAMESファイルを使用し続けた理由はわかりません。
2014

1
注:ディレクトリ$TNS_ADMINは実際の.oraファイルではありません
geneorama

30

SQL Developerを開きます。[ツール]-> [設定]-> [データベース]-> [詳細]に移動し、Tnsnamesディレクトリを明示的に設定します

TNSNAMESは正しく設定されており、ToadやSQL * Plusなどに接続できましたが、SQL Developerを動作させるためにこれを行う必要がありました。インストールが面倒だったため、Win 7の問題であった可能性があります。


受け入れられた回答は機能しませんでしたが、これは機能しました(Windows Server 2008R2)
Josh Werts

同じ問題がありましたが、SQL Developerは%TNS_ADMIN%\ tnsnames.oraの前に%userprofile%\ tnsnames.oraも調べましたが、そこに追加のtnsnames.oraファイルがありました。
MBWise

15

sqldeveloper参照Tools --> Preferences画像の下に示すように、。

ここに画像の説明を入力してください

では環境設定オプションのtnsnames.ora存在。次に[ OK ]をクリックします。expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directory

下の図に示すように。

ここに画像の説明を入力してください

完了しました!

これで、TNSnamesオプションを介して接続できます。


「Databse:Advanced」が見つからない==>私のバージョンは1.5.5です
Tarek El-

1
2.1より前のバージョンの場合、または2.1以降でTnsnamesディレクトリを指定していない場合は、@ JasonAndersonの回答で指定されているように休憩してください。
Chandra Sekhar、2013年

Tools-> Preferences-> Databaes-> Advanced ParametersメニューにTnsnames Directoryオプションがありません。私はのsqldeveloper v1.1.3デベロッパーを使用しています
Ahmedov

14

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ファイルが使用されているかを正確に判断する際に生じる避けられない問題を回避できるため、良いことだと私は同意します。


どうすればtnspingツールをインストールできますか?
Kiquenet、2011年

クライアントインストールには、データベースツールなどのチェックボックスがあります。
DCookie

2

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を完全に別の接続として扱います。Oracle製品が、大文字と小文字を区別しないoracleが開発したファイル形式の内容を大文字と小文字を区別するものとして扱うことに驚かないのはなぜですか?


@allen:このリストを強制的にクリアする方法を知っていますか?その場合は、stackoverflow.com
q / 6412559/168646に

1

SQL Developerで、Tools-> preferences-> Datababae-> advanced-> Set Tnsname directory to tnsnames.oraに移動します。


0

上記の変更のどれも私の場合に違いをもたらしませんでした。コマンドウィンドウでTNS_PINGを実行できましたが、SQL Developerはtnsnames.oraがどこにあるのか理解できませんでした。

私の場合(Windows 7-64ビット-エンタープライズ)の問題は、Oracleインストーラーが[スタート]メニューのショートカットを間違ったバージョンのSQL Developerにポイントすることでした。インストーラーに付属する3つのSQL Developerインスタンスがあるようです。1つは%ORACLE_HOME%\ client_1 \ sqldeveloper \にあり、2つは%ORACLE_HOME%\ client_1 \ sqldeveloper \ bin \にあります。

インストーラーは、単に機能しなかったbinディレクトリー内のバージョンを指すスタートメニューショートカットをインストールしました。SQL Developerを起動するたびにパスワードが要求されます。接続メカニズムとしてTNSを選択したときに行った選択と空白のリストの表示を覚えていません。また、他の投稿で参照されているデータベースの詳細設定にTNS Directoryフィールドがありません。

古いStartショートカットを投げて、%ORACLE_HOME%\ client_1 \ sqldeveloper \ sqldeveloper.exeへのショートカットをインストールしました。この変更により、私の場合の問題が修正されました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.