2

我使用 Bitvise Tunnelier 通过 SQL Developer 连接到一系列 Oracle 数据库;连接到本地主机和特定的端口号,这工作正常。我想通过其他方式(例如,.NET)进行连接,我正在使用 tnsping 进行故障排除。

有没有办法使用端口号和 SID 运行 tnsping?我试过了:

tnsping DatabaseSIDName:9001
tnsping DatabaseSIDName;9001
tnsping DatabaseSIDName,9001

全部给出“TNS-03505:无法解析名称”。

4

1 回答 1

7

当您使用 tnsping 时,它将获取一些 Oracle .ora 文件以确定它知道哪些 DB。您应该会看到如下内容:

$ tnsping myDB

TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 24-MAY-2007 08:55:13
Copyright (c) 1997, 2005, Oracle.  All rights reserved.
Used parameter files:
/app/oracle/product/10.2.0/db_1/network/admin/sqlnet.ora

Used TNSNAMES adapter to resolve the alias
Attempting to contact...

您可以创建自己的 tnsnames.ora 文件并将其添加到您的TNS_ADMIN环境变量中以添加新的 DB、端口、SID 等。完整示例如下所示:

ORA11 =
 (DESCRIPTION = 
  (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 9001))
  )
 (CONNECT_DATA =
  (SERVICE_NAME = DatabaseSIDName)
 )
)

只需export TNS_ADMIN=<path to folder containing new tnsnames.ora file>再次尝试 ping。以下是一些参考资料:

http://www.orafaq.com/wiki/Tnsnames.ora

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

编辑


根据您的原始示例/后续评论,最简单的可能是:

$ORACLE_HOME/bin/tnsping <hostname>:<port>/<sid>

还有很多其他选项,例如 EZConnect 和 sqlplus,它们将测试相同的功能。

于 2014-08-07T22:27:47.603 回答