57

データベース クライアントがどの tnsnames.ora ファイルを使用しているかがわからないために、Oracle 接続の問題が発生することがあります。

これを理解する最善の方法は何ですか?++さまざまなプラットフォーム ソリューションに満足しています。

4

11 に答える 11

83

Oracleは、次のようなユーティリティを提供していますtnsping

R:\>tnsping someconnection

TNS Ping Utility for 32-bit Windows: Version 9.0.1.3.1 - Production on 27-AUG-20
08 10:38:07

Copyright (c) 1997 Oracle Corporation.  All rights reserved.

Used parameter files:
C:\Oracle92\network\ADMIN\sqlnet.ora
C:\Oracle92\network\ADMIN\tnsnames.ora

TNS-03505: Failed to resolve name

R:\>


R:\>tnsping entpr01

TNS Ping Utility for 32-bit Windows: Version 9.0.1.3.1 - Production on 27-AUG-20
08 10:39:22

Copyright (c) 1997 Oracle Corporation.  All rights reserved.

Used parameter files:
C:\Oracle92\network\ADMIN\sqlnet.ora
C:\Oracle92\network\ADMIN\tnsnames.ora

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (COMMUNITY = **)
 (PROTOCOL = TCP) (Host = ****) (Port = 1521))) (CONNECT_DATA = (SID = ENTPR0
1)))
OK (40 msec)

R:\>

これにより、使用しているファイルが表示されます。ユーティリティはOraclebinディレクトリにあります。

于 2008-08-27T09:41:36.483 に答える
22

Linux の場合:

$ strace sqlplus -L scott/tiger@orcl 2>&1| grep -i 'open.*tnsnames.ora'

次のようなものを示しています。

open("/opt/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora",O_RDONLY)=7

に変更

$ strace sqlplus -L scott/tiger@orcl 2>&1| grep -i 'tnsnames.ora'

失敗しているすべてのファイル パスが表示されます。

于 2008-08-13T23:52:15.570 に答える
5

私の開発マシンには、3 つの異なるバージョンの Oracle クライアント ソフトウェアがあります。tnsnames.oraそのうちの1つでファイルを管理します。他の 2 つは、tnsnames.oraファイルに次のように入力しました。

ifile=path_to_tnsnames.ora_file/tnsnames.ora

このようにして、何らかの理由で間違ったtnsnames.oraファイルがクライアントによって使用された場合、常に最新バージョンになります。

于 2008-10-14T08:09:28.587 に答える
5

TNS の場所が格納されている別の場所があります。Windows を使用している場合は、Oracle ホームを開いてそこregeditに移動します。という文字列エントリがある場合、そのエントリの値は、コンピュータで Oracle が使用している TNS ファイルを指します。My HKEY Local Machine/Software/ORACLE/KEY_OraClient10_home1KEY_OraClient10_home1TNS_ADMIN

于 2008-08-30T09:12:33.723 に答える
4

Codeslave は、「常に "$ORACLE_HOME/network/admin/tnsnames.ora" であるべきではありませんか?」と尋ねます。答えはノーです。そうではありません。同じマシンでの tnsping の次の 2 つの呼び出しについて考えてみましょう。

C:\Documents and Settings\me>D:\Oracle\10.2.0_DB\BIN\tnsping orcl

TNS Ping Utility for 32-bit Windows: Version 10.2.0.4.0 - Production on 09-OCT-2
008 14:30:12

Copyright (c) 1997,  2007, Oracle.  All rights reserved.

Used parameter files:
D:\Oracle\10.2.0_DB\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xxxx
)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)))

OK (40 msec)

C:\Documents and Settings\me>tnsping orcl

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 09-OCT-2
008 14:30:21

Copyright (c) 1997, 2005, Oracle.  All rights reserved.

Used parameter files:
D:\oracle\10.2.0_Client\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = XXXX)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL)))
OK (20 msec)

C:\Documents and Settings\me>

2 つの異なるパラメーター ファイルの場所に注意してください。これらは、実行している tnsping 実行可能ファイル (およびおそらくどこから実行されているか) によって異なります。tnsnames ベースの Oracle ネットワークでは、TNS_ADMIN 変数を使用することが、一貫した tnsnames.ora ファイルを確実に取得する唯一の方法です。(注:Windows中心の回答)

于 2008-10-09T20:45:48.043 に答える
4

Windows の場合: SysInternals のFilemonは、アクセスされているファイルを表示します。

雑多なファイル システム トラフィックに圧倒されないように、必ずフィルタを設定してください。

フィルタ ダイアログ

追加: Filemon は新しい Windows バージョンでは動作しないため、Process Monitorを使用する必要がある場合があります。

于 2008-08-27T09:08:55.297 に答える
2

デフォルトでは、tnsnames.ora は、UNIX オペレーティング システムでは $ORACLE_HOME/network/admin ディレクトリにあり、Windows オペレーティング システムでは ORACLE_HOME\network\admin ディレクトリにあります。tnsnames.ora は、次の場所にも保存できます。

TNS_ADMIN 環境変数 (またはレジストリ値) で指定されたディレクトリ

UNIX オペレーティング システムでは、グローバル構成ディレクトリ。たとえば、Solaris オペレーティング システムでは、このディレクトリは /var/opt/oracle です。

複数の ORACLE_HOMES がある場合は、使用している ORACLE_HOME に注意してください。tnsnames.ora ファイルの場所は ORACLE_HOME ごとに異なる可能性があるためです。

TWO_TASK 環境変数について言及した人にとっては、接続先のデフォルトのデータベース サービス名を設定するために使用されます (別のサーバー上のデータベースである可能性があります)。TWO_TASK を設定したサービス名は、接続時に tnsnames.ora ファイルで検索されます。

于 2008-08-31T23:05:25.133 に答える
1

常に「$ORACLE_HOME/network/admin/tnsnames.ora」であるべきではありませんか? 次に、「echo $oracle_ home」または *nix に相当するものを実行するだけです。

@Pete Holberton あなたは完全に正しいです。そういえば、TWO_TASK という別のモンキー レンチが開発中です。

http://www.orafaq.com/wiki/TNS_ADMINによる
と、TNS_ADMIN は、SQL*Net 構成ファイル (sqlnet.ora や tnsnames.ora など) が配置されているディレクトリを指す環境変数です。

于 2008-08-14T17:23:45.723 に答える
0

最も簡単な方法は、おそらく、データベースに接続しているプロセスのPATH環境変数を確認することです。ほとんどの場合、tnsnames.ora ファイルはパス..\network\adminの最初の Oracle bin ディレクトリにあります。TNS_ADMIN 環境変数またはレジストリ内の値 (現在の Oracle ホーム用) は、これをオーバーライドする場合があります。

他の人が提案したように filemon を使用すると、うまくいきます。

于 2008-12-04T20:31:19.863 に答える