客户端可以通过监听来和数据库服务器进行交互,如果我们是用tnsping来测试,并且返回正常,是否意味着数据库可用?答案是否定的。 1. 如下监听是正常启动: ? 2. 此时关闭数据库: ? 从客户端执行tnsping,显示是连接正常。 ? 由此我们可以看到,tnsping只是验证了客户端和数据库服务器的监听端口之间的通路是好的,但并未意味着数据库服务是可用的,因为客户端和Oracle服务器交互是通过Oracle server服务器进程来进行的 ,私有内存空间即是PGA,所以有时候我们做运维检测,tnsping不能代表Oracle数据库可用,可以用sqlplus真正执行一条语句(select sysdate from dual)才行。
♣ 问题 在Oracle中,如何跟踪tnsping过程? 所以,可以通过sqlnet工具对tnsping进行跟踪分析,查找为何外部网络无法连接数据库的原因。 可以在客户端的sqlnet.ora中配置: tnsping.trace_directory=D:\app\oracle\product\11.2.0.1\dbhome_1\NETWORK\ADMIN tnsping.trace_level TNSPING.TRACE_DIRECTORY指的是跟踪产生的trace文件存放的位置。 在执行“tnsping orcl”后,在目录“D:\app\oracle\product\11.2.0.1\dbhome_1\NETWORK\ADMIN”下会生成一个跟踪文件叫tnsping.trc,然后分析该文件即可
tnsping,作为Oracle连接测试的一个小巧的工具,其实大家已经不陌生了,但是使用tnsping有一个问题,就是连接超时,当然这个和网络的 安全策略等密不可分,但是摆在我面前的一个问题是,现在有大量的服务器 ,每台数据库服务器上都有tnsnames.ora,如果需要判断 tnsnames.ora里面的配置是否生效,使用tnsping是一个很自然的选择。 $ time tnsping db84 TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 18-MAY-2016 22:17: 对于tnsping,这个命令也没有提供更多的使用选项,所以目前来看还无法指定超时时长。 所以使用telnet的方式和tnsping的效果差不多。 那么还有什么方式呢,这个时候我们可以好好想想还有那些系统级的工具可以满足要求,NetCat就是一个不错的选择。
使用tnsping dcsopen测试,报错: ora11g>tnsping dcsopen TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production =/opt/app/ora11g/product/11.2.0/dcsopen/network/admin tnsping.trace_level=admin 执行tnsping报错后,查看tnsping.trc The command completed successfully 本机测试tnsping正常了。 7. 从另外一台机器访问这个数据库dcsopen,修改tnsnames.ora文件,执行tnsping dcsopen报错: ora10g@localhost.localdomain$tnsping dcsopen 我的排查思路是,先确保本机可以tnsping和sqlplus ...@xxx,本机可访问了,再看远程机器。
环境: 11.2.0.3 ADG (db11g\db11gadg\db11gcas) 在自己先前克隆后的环境互相tnsping报错。 tnsping 本机ok,tnsping其他机器均报错: [oracle@db11g ~]$ tnsping jingyu TNS Ping Utility for Linux: Version 11.2.0.3.0 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = jingyu))) OK (0 msec) [oracle@db11g ~]$ tnsping = DEDICATED) (SERVICE_NAME = jyadg))) TNS-12543: TNS:destination host unreachable [oracle@db11g ~]$ tnsping [oracle@bogon ~]$ tnsping 192.168.1.18 TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on
对于tnsping的一些小问题,自己也想了些办法来补充,最后发现使用nc是一个不错的选择。 可以参考 对于tnsping的连接超时的功能补充 主要思想如下: 如果网络是通的,那么会显示succeeded,否则会有一些错误信息 # nc -w 2 -v 10.11.65.111 22|grep 22|grep succ nc: connect to 10.11.65.191 port 22 (tcp) timed out: Operation now in progress 所以我们需要改进tnsping
CLIENT|SERVER|LISTENER] = <DIRECTORY NAME> LOGGING_LISTENER = [ON|OFF] TNSPING.TRACE_LEVEL = [0-16|USER|ADMIN|SUPPORT|OFF] TNSPING.TRACE_DIRECTORY = <DIRECTORY SQLNET.ORA on client CLI*.TRC Oracle Net - Server SQLNET.ORA on server SVR_*.TRC TNSPING SQLNET.ORA on client | server TNSPING.TRC Oracle Name Server NAMES.ORA =d:\oracle\product\10.2.0\client_2\network\admin tnsping.trace_level=admin D:\>tnsping cnmmbo
测试成功后,直接关闭,即可保存 ---- 下面开始导出远程数据库: 运行cmd,执行命令:tnsping TEST。 TEST为你刚才设置的网络服务器名称。 然后执行命令:tnsping 193.193.193.254:1521/orcl ? 接着执行命令:exp 用户名/密码@网络服务名 file=文件存放路径\文件名.dmp ?
tnsnames.ora,即与Auxiliary server端使用相同的tnsnames entry 下面测试tnsnames的连通性 [oracle@linux3 admin]$ tnsping aux [oracle@linux3 admin]$ tnsping tar [oracle@linux4 admin]$ tnsping aux [oracle@linux4 admin]$ tnsping tar 再次duplicate时,成功鸟,喝茶哟! Double check using the following commands on the TARGET and AUXILIARY % tnsping <target_db> % tnsping <auxiliary_db> Once this is executed for the TARGET and AUXILIARY, it should return the
实战演习 -->使用tnsping demo92,连接正常 C:\>tnsping demo92 -->再次tnsping 时,收到TNS-12547错误 C:\>tnsping demo92
Physical standby database Fast-Start Failover: DISABLED Configuration Status: SUCCESS 但是这里有个问题就是备库的IP是哪个,可能tnsping STANDBY_FILE_MANAGEMENT','DB_FILE_NAME_CONVERT','LOG_FILE_NAME_CONVERT') order by name; EOS echo . tnsping grep -i "Physical standby database"|sed 's/Physical standby database//g'|sed 's/-//g'` do tmp_host=`tnsping HOST\|PORT\|SERVICE_NAME\|SID_NAME' |grep -i HOST| awk -F= '{print $2}'` #echo ${tmp_host} tmp_port=`tnsping
tnsping oracle实例名,如tnsping orcl,可以ping通。 最后:把上面说的三个服务重新启动,问题解决。
本地tnsping是可以的,但是不支持直接登录。 C:\Users\yangjr01>tnsping db201812022228_high TNS Ping Utility for 64-bit Windows: Version 12.2.0.1.0
报ORA-12154 错误: ORA-12154: TNS: 无法解析指定的连接标识符 用tnsping 一下: C:/Documents and Settings/user.HQ-TEXT>tnsping
1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = NBSDEV) ) ) 虽然连不上,但tnsping 可以ping通,因为tnsping只检查IP地址和端口是否能连通,至于数据库实例状态,监听注册了哪些服务这些,它是不检查的: C:\Documents and Settings\cuihua>tnsping
ERROR: ORA-12537: TNS:connection closed 但是通过tnsping来判断,可以ping通,而且查看listener也是起来的。 > tnsping testhost1 TNS Ping Utility for Linux: Version 11.2.0.2.0 - Production on 14-MAY-2014 15:07:
SERVICE_NAME = database1) //database1为SID名 ) ) Oracle Client端检查监听器连接状态用命令: $ tnsping 别名 例如:用oracle用户执行命令 $ tnsping oralocal 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/110861.html原文链接
Troubleshooting tnsping测试: C:\Documents and Settings\Administrator>tnsping 192.168.10.10 TNS Ping Utility
specified ERROR ERROR 31 rows selected. 5、通过第4步中的结果,可以判断大概一个方向 ,可能是主库连接到备中监听有问题导致报错,先先TNS配置中查找原因 6、在主库节点1中tnsping 备库配置的服务名看是否报错,操作如下: [Oracle@rac1:/home/oracle]$tnsping strac TNS Ping Utility for Linux: Version 11.2.0.4.0 (CONNECT_DATA = (SERVICE_NAME = strac)))rac = TNS-12533: TNS:illegal ADDRESS parameters 7、此时在主库节点2中tnsping 备库服务名发现是可以正常解析过来的 [oracle@rac2:/home/oracle]$tnsping strac TNS Ping Utility for Linux: Version 11.2.0.4.0
01033: ORACLE initialization or shutdown in progress Process ID: 0 Session ID: 0 Serial number: 0 但是查看tnsping 既然/etc/hosts里面的配置没问题,主机名Queuedb_ZS.test.com指向主库,tnsping没问题,拿我就使用ping来测试。