我使用Bitvise Tunnelier使用SQL Developer连接到一系列Oracle数据库;连接到localhost和一个特定的端口号,这很好。我想通过其他方式(例如,.NET)进行连接,我正在使用tnsping进行故障排除。
有没有办法用端口号和SID运行tnsping?我试过了:
tnsping DatabaseSIDName:9001
tnsping DatabaseSIDName;9001
tnsping DatabaseSIDName,9001
全部给出“TNS-03505:无法解析名称”。
答案 0 :(得分:6)
当您使用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
环境变量中以添加新的数据库,端口,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 - What TNS Names file am I using?
修改强>
根据您的原始示例/后续评论,最简单的可能是:
$ORACLE_HOME/bin/tnsping <hostname>:<port>/<sid>
还有很多其他选项,例如EZConnect和sqlplus,它们将测试相同的功能。