web-dev-qa-db-ja.com

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

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

私が見逃しているものはありますか?

90
Americus

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

  1. $ HOME/.tnsnames.ora
  2. $ TNS_ADMIN/tnsnames.ora
  3. レジストリのTNS_ADMINルックアップキー
  4. /etc/tnsnames.ora(非ウィンドウ)
  5. $ Oracle_HOME/network/admin/tnsnames.ora
  6. LocalMachine\SOFTWARE\Oracle\ORACLE_HOME_KEY
  7. LocalMachine\SOFTWARE\Oracle\ORACLE_HOME

どのSQL Developerが使用されているかを確認するには、ワークシートでコマンド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でConnectionsを右クリックし、New Connection ...を選択します。ドロップダウンボックスで接続タイプとしてTNSを選択します。 tnsnames.oraからのエントリがここに表示されます。
169
JaseAnderson

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

TNSNAMESは正しくセットアップされ、Toad、SQL * Plusなどに接続できましたが、SQL Developerを機能させるにはこれを行う必要がありました。おそらくインストールも苦痛だったので、Win 7の問題だったのかもしれません。

29
Paul Mattey

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ファイルを正確に判断する際に生じる避けられない問題を回避できるからです。

13
DCookie

SQLDeveloperで、下の画像に示すように、Tools --> Preferencesを参照します。

enter image description here

Preferences options expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directorytnsnames.oraが存在します。
次にOkをクリックします。
下図に示すとおり。

enter image description here

完了しました!

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

13
Chandra Sekhar

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が開発したファイル形式のコンテンツを大文字と小文字を区別するものとして扱うことに驚かないのはなぜですか?

2
Allan Stewart

Sql Developerで、[ツール]-> [設定]-> [データベース]-> [詳細]-> [Tnsnamesディレクトリをtnsnames.oraを含むディレクトリに設定]に移動します。

1
B Chowdhary

上記の変更はいずれも私の場合に違いをもたらしませんでした。コマンドウィンドウで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ディレクトリフィールドもありません。

古いStartショートカットを投げて、%Oracle_HOME%\ client_1\sqldeveloper\sqldeveloper.exeへのショートカットをインストールしました。その変更は私の場合の問題を修正しました。

0
Michael