Oracle - 我使用的TNS名称文件是什么?

Mar*_*son 51 oracle connection tns tnsnames

有时我会遇到Oracle连接问题,因为我无法弄清楚我的数据库客户端正在使用哪个tnsnames.ora文件.

想出这个的最佳方法是什么?++对各种平台解决方案感到满意

stj*_*roe 73

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:\>
Run Code Online (Sandbox Code Playgroud)

这应该显示您正在使用的文件.该实用程序位于Oracle bin目录中.


Mar*_*son 17

对于linux:

$ strace sqlplus -L scott/tiger@orcl 2>&1| grep -i 'open.*tnsnames.ora'
Run Code Online (Sandbox Code Playgroud)

显示这样的事情:

open("/opt/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora",O_RDONLY)=7
Run Code Online (Sandbox Code Playgroud)

改为

$ strace sqlplus -L scott/tiger@orcl 2>&1| grep -i 'tnsnames.ora'
Run Code Online (Sandbox Code Playgroud)

将显示失败的所有文件路径.


Tru*_*mpi 5

还有另一个存储TNS位置的地方:如果您使用的是Windows,请打开regedit并导航到您的Oracle主目录My HKEY Local Machine/Software/ORACLE/KEY_OraClient10_home1所在的位置KEY_OraClient10_home1.如果存在名为的字符串条目TNS_ADMIN,则该条目的值将指向Oracle在您的计算机上使用的TNS文件.


Ren*_*ene 5

在我的开发机器上,我有三个不同版本的 Oracle 客户端软件。我tnsnames.ora在其中之一管理文件。在另外两个中,我已经在tnsnames.ora文件中输入:

ifile=path_to_tnsnames.ora_file/tnsnames.ora
Run Code Online (Sandbox Code Playgroud)

这样,如果由于某种原因tnsnames.ora客户端使用了错误的文件,它最终将始终处于最新版本。