我如何安装tnsping?
我尝试安装oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
并且我可以使用一些客户端命令但是nog tnsping。
答案 0 :(得分:7)
Oracle Instance Client不包含tsnping
应用程序。您必须运行“Oracle Universal Installer”并为其启用该选项。
我不记得您必须设置哪个选项,无论是“Oracle数据库实用程序”还是“Oracle Net”
答案 1 :(得分:1)
另请参见McTnsping “不需要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.
答案 2 :(得分:0)
这就是我将tnsping
复制到另一台计算机上的操作。就我而言,oracle客户端安装在C:\Oracle\product\12.1.0\client_1
。
这假设目标计算机上已经安装了Instant Client或类似客户端;并设置了oracle路径和注册表项。
(1)将tnsping.exe
从源复制到目标计算机,复制到client_1\bin
中。
(2)将以下文件从client_1\bin
复制到client_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)在目标计算机上,在mesg
中创建目录client_1\Network
。现在,将以下文件从源复制到目标:
client_1\Network\mesg\tnsus.msb
(5)打开regedit。创建以下密钥:
HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_OraClient12Home1_32bit
(从另一台机器上看,x64版本的名称为HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_OraClient12Home1
,但是我正在使用的tnsping
程序说它是64位的,所以...)
在键下,创建一个名为ORACLE_HOME
的字符串,其值为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之后,您会遇到另一种错误:
如果发生这种情况,请启动process monitor并放入一个用于让ProcessName包含tnsping
的过滤器,然后尝试再次运行该程序。您应该看到类似以下的内容。需要注意的主要事情是,它尝试加载(在本示例中)成功的orawsec12.dll
,但随后它继续尝试加载在不同路径中查找的dll,最后触发{{1 }},程序结束。我猜它意识到存在某种版本不匹配,并一直在寻找正确的版本。
缺少的注册表项将在进程监视器中显示如下(操作werfault
,结果RegOpenKey
):
如果缺少NAME NOT FOUND
文件,您应该在进程监视器中看到类似以下内容(操作tnsus.msb
,结果CreateFile
):
答案 3 :(得分:0)
如果谁能像我一样到达这个地方...这对我有用:
即时客户端版本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并加载env变量。之后,它应该能够执行“ tnsping”并显示适当的消息作为响应。