甲骨文 - 什么TNS名称文件我使用的?(Oracle - What TNS Names file

2019-06-24 05:48发布

有时我得到Oracle连接问题,因为我无法弄清楚这tnsnames.ora文件我的数据库客户端使用。

什么是想出解决办法的最好办法? ++幸福各种平台的解决方案。

Answer 1:

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:\>

这应该告诉你正在使用的文件。 该实用程序坐落在甲骨文bin目录。



Answer 2:

对于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'

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



Answer 3:

还有一种情况TNS的位置存储在另一个地方:如果你使用的是Windows,打开regedit ,然后导航到My HKEY Local Machine/Software/ORACLE/KEY_OraClient10_home1其中KEY_OraClient10_home1是你的Oracle主。 如果有一个字符串项称为TNS_ADMIN ,那项的值将指向甲骨文您的计算机上使用TNS文件。



Answer 4:

对于Windows: Filemon的 Sysinternals公司会告诉你正在访问哪些文件。

记住,所以你不被健谈的文件系统,交通不堪重负要设置过滤器。

补充:Filemon的不与较新的Windows版本,所以你可能需要使用进程监视器 。



Answer 5:

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

ifile=path_to_tnsnames.ora_file/tnsnames.ora

这样,如果由于某种原因,错误tnsnames.ora文件使用一个客户端,它总是在上最新版本结束。



Answer 6:

Codeslave问:“难道不应该永远是‘$ ORACLE_ HOME /网络/ admin / tnsnames.ora中’答案是否定的,它不是考虑用tnsping在同一台机器上的这两个调用?:

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>

请注意两个不同的参数文件的位置,依赖于它用tnsping可执行文件正在运行(也许在那里它被从运行)。 对于基于TNSNAMES Oracle的网络,使用TNS_ADMIN变量是确保你得到一致的tnsnames.ora文件的唯一途径。 (注:Windows为中心的答案)



Answer 7:

默认情况下,tnsnames.ora中位于在UNIX操作系统上的$ ORACLE_HOME / network / admin目录,并在Windows操作系统上的ORACLE_HOME \网络\ admin目录。 tnsnames.ora中也可以存储在以下位置:

由TNS_ADMIN环境变量(或注册表值)指定的目录

在UNIX操作系统中,全球配置目录。 例如,在Solaris操作系统,此目录为/ var /选择/甲骨文

如果你有有多个ORACLE_HOME,要知道你正在使用其中一个,作为tnsnames.ora文件的位置,可以改变从一个ORACLE_HOME下。

对于谁提到TWO_TASK环境变量的人,用来设置默认数据库服务的名称来连接(这可能是另一台服务器上的数据库)。 你设置TWO_TASK来是那么的服务名称查找在tnsnames.ora文件中当您连接。



Answer 8:

难道不应该永远是 “$ ORACLE_ HOME /网络/ admin / tnsnames.ora中”? 然后,你可以做“回声$ oracle_家”或* nix的等价物。

@Pete Holberton你是完全正确的。 这让我想起,有一个名为TWO_ TASK作品另一只猴子扳手

据http://www.orafaq.com/wiki/TNS_ADMIN
TNS_ADMIN是一个环境变量指向在SQL * Net配置文件(如SQLNET.ORA和tnsnames.ora)所在的目录。



Answer 9:

strace sqlplus -L scott/tiger@orcl有助于找到.tnsnames.ora对文件/home/oracle找到需要的不是文件$ORACLE_HOME/network/admin/tnsnames.ora的文件。 感谢您的帖子。



Answer 10:

最简单的方法可能是检查是否连接到数据库的过程的PATH环境变量。 最有可能的tnsnames.ora文件是在路径 .. \网络\ ADMIN 第一个Oracle bin目录 。 TNS_ADMIN环境变量或注册表(当前Oracle主)值可以重写此。

使用Filemon的像其他人建议也将这样的伎俩。



Answer 11:

没有直接回答你的问题,但我一直很沮丧我试图找到并更新所有TNSNAMES文件,因为我有几个oracle的安装:客户端,BI工具,OWB,等等,每一个都有自己的预言家。 我结束了创建一个名为TNSNamesSync实用工具,将更新所有的TNSNAMES的所有Oracle的家园。 这是在MIT许可下,自由在这里使用https://github.com/artybug/TNSNamesSync/releases

该文档是在这里: https://github.com/artchik/TNSNamesSync/blob/master/README.md

这仅适用于Windows,虽然。



文章来源: Oracle - What TNS Names file am I using?