使用 sqlplus 作为 tnsping 的替代方案

使用 sqlplus 作为 tnsping 的替代方案

由于 tnsping 未随 oracle 安装一起安装,是否可以使用 sqlplus 作为 tnsping 的替代方案。我只是想通过批处理脚本检查 tnsnames.ora 中的定义是否可访问。

如果没有,是否可以随后安装 tnsping?

答案1

来自 SQL*Plus 帮助文档(sqlplus --help):

Usage 2: sqlplus [ [<option>] [{logon | /nolog}] [<start>] ]
...
<start> is: @<URL>|<filename>[.<ext>] [<parameter> ...]

这意味着您可以提供一个脚本的路径,该脚本将在您连接/登录时立即运行。

最基本的例子是向文件回显“exit”,然后运行该文件,例如

C:\>echo exit > exit.tmp
C:\>sqlplus /nolog @exit.tmp

SQL*Plus: Release 11.2.0.1.0 Production on Thu Nov 14 15:34:35 2013

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


C:\>del exit.tmp

当然,上面我没有登录数据库,所以我没有真正检查过数据库。如果您想检查特定条目tnsnames.ora,您可能需要在命令行上提供该服务的完整凭据(这可能会产生安全后果),否则您的脚本发出的“退出”可能会被 sqlplus 通常发出的用户名提示所吸收(要么您的脚本会在用户名提示处挂起)。

J.

答案2

互联网上有一个“丑陋”的黑客程序,展示了如何将 tnsping 添加到 InstantClient 安装中。由于某些未知原因,Oracle 坚持不将其嵌入到 InstantClient 中,尽管各种客户多次询问过它。

你可以使用它但是:

  • 优点:tnsping仅联系监听器,不会检查数据库是否真正在运行。而 sqlplus 还会检查数据库服务器端 SID 的“存在​​性”。
  • 缺点:sqlplus不会告诉您数据库名称是如何转换的。而 tnsping 可以指出所sqlnet.ora使用的文件以及是否使用了 TNSNAMES、ONAMES 或 LDAP。
  • 缺点:tnsping还会告诉hostnameport数据库

答案3

这取决于您实际想要使用 TNSPING 检查的内容;连接本身,或连接速度,或两者兼而有之。但 SQLPLUS 将使用相同的 TNS 设置,因此您可以测试相同的 TNS 设置。

如果您编写脚本(甚至是 Windows 或 Linux),您可以记录创建这种连接所需的时间,这将是与 TNSPING 类似的目标。

相关内容