10

我必须如何安装 tnsping?我尝试安装oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm,我可以使用一些客户端命令,但是 nog tnsping。

4

4 回答 4

10

Oracle 实例客户端不包括tsnping应用程序。您必须运行“Oracle Universal Installer”并为其启用该选项。

我不记得您必须设置哪个选项,它是“Oracle Database Utilities”还是“Oracle Net”

在此处输入图像描述

于 2016-09-29T09:28:35.950 回答
5

另请参阅McTnspi​​ng “不需要 Oracle 客户端的 Windows 独立程序”。它是便携式的,不需要安装。

Usage 1: McTnsping.exe { <tns entry> | <host>:<port> } [<count>]

<tns entry>    the net service name in the tnsnames.ora file.
<host>:<port>  server name or IP and port (mandatory)
<count>        number of times to check target, default is 1.
于 2018-10-18T17:55:36.723 回答
3

如果有人会像我一样到达这个地方......这对我有用:

即时客户端版本 12.2.0.1 + sqlplus + tnsping(从同一版本的另一台服务器复制)

目录结构和环境(如 bash 配置文件):

export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=${ORACLE_BASE}/instant_client122
export PATH=$ORACLE_HOME:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME #since all binaries are in $ORACLE_HOME - no bin or lib are present
export TNS_ADMIN=$ORACLE_HOME/network/admin

从另一台服务器复制到目标:

'tnsping' to $ORACLE_HOME
'$ORACLE_HOME/network/mesg/tnsus.msb' to $ORACLE_HOME/network/mesg

然后将适当的值放入 $TNS_ADMIN/tnsnames.ora 并加载环境变量。在此之后,它应该能够执行“tnsping”并显示正确的消息作为响应。

于 2019-08-21T22:51:14.637 回答
2

这是我复制tnsping到另一台机器的方法。就我而言,oracle 客户端安装在C:\Oracle\product\12.1.0\client_1.

这假设目标机器上已经安装了 Instant Client 或类似的东西;并且设置了 oracle 路径和注册表项。

(1) 从源机器复制tnsping.exe到目标机器,放入client_1\bin.

(2) 将以下文件复制client_1\binclient_1\bin

oraasmclnt12.dll
oracell12.dll
oraclient12.dll
oraclsce12.dll
oracommon12.dll
oracore12.dll
orageneric12.dll
orahasgen12.dll
oraldapclnt12.dll
oran12.dll
orancds12.dll
orancrypt12.dll
oranhost12.dll
oranl12.dll
oranldap12.dll
oranls12.dll
oranro12.dll
orantcp12.dll
orantns12.dll
oraocr12.dll
oraocrb12.dll
oraocrutl12.dll
oraplp12.dll
orapls12.dll
ORASLAX12.DLL
orasnls12.dll
oraunls12.dll
orauts.dll
oravsn12.dll
oraxml12.dll
orazt12.dll
oraztkg12.dll 

这应该是大约 84.6 MB。

(3) 在client_1目标机器上,备份以下文件:

oci.dll
orannzsbb12.dll
oraons.dll
orasql12.dll
orawsec12.dll  

现在在源计算机上,找到这些文件client_1\bin并将它们复制到client_1\目标计算机上的(无 bin),覆盖现有文件。(注意:oci.dll 小了约 330 kb,orasql12.dll 小了约 300 kb。我不确定丢失了什么,因此需要备份)。

(4) 在目标机器上,mesgclient_1\Network. 现在将以下文件从源复制到目标:

client_1\Network\mesg\tnsus.msb  

(5) 打开注册表。创建以下密钥:

HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_OraClient12Home1_32bit  

(在另一台机器上,看起来 x64 版本被命名为HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_OraClient12Home1,但tnsping我使用的程序说它是 64 位的,所以......)

在该键下,创建一个以ORACLE_HOMEvalue命名的字符串C:\Oracle\product\12.1.0\client_1

您现在应该完成($$$= 已编辑):

C:\Users\$$$>tnsping $$$

TNS Ping Utility for 64-bit Windows: Version 12.1.0.2.0 - Production on 03-APR-2
019 08:47:37

Copyright (c) 1997, 2014, Oracle.  All rights reserved.

Used parameter files:
C:\Oracle\product\12.1.0\client_1\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = $$$)(PORT = $$$))) (CONNECT_DATA = (SERVICE_NAME = $$$
$$$) (SERVER = DEDICATED)))
OK (30 msec)

故障排除

这是我遵循的过程,分享当这些步骤总是无法在更高版本上运行时。

首先,我只是复制tnsping.exe过来。

据我所知,我没有随意选择上述 dll,每个人都是必需的。我运行了exe,它会弹出一个错误,我将复制dll并重试:

从您的计算机中丢失

在几个 dll 之后,您会遇到另一种错误:

应用程序无法启动

如果发生这种情况,请启动进程监视器并为 ProcessName 放置一个过滤器以包含tnsping并尝试再次运行该程序。您应该会看到类似以下内容。需要注意的主要事情是它尝试加载(在这个例子中)orawsec12.dll,它成功了,但是它继续尝试加载寻找不同路径的 dll,然后在最后它触发werfault并且程序结束。我猜它意识到存在某种版本不匹配并继续寻找正确的版本。

应用程序无法启动

缺少的注册表项将在进程监视器中显示如下(操作RegOpenKey、结果NAME NOT FOUND):

未找到注册表名称

如果文件丢失,您应该在进程监视器(操作、结果)tnsus.msb中看到类似以下内容:CreateFileNAME NOT FOUND

找不到文件系统名称

于 2019-04-03T14:43:30.650 回答