Oracle-tnsping使用

Tnsping是Oracle提供的诊断连接动作的重要方法。我们在客户端上使用tnsping,可以快速的定位连接过程中错误,进行问题判断。从功能上看,tnsping能够帮助我们解决几个方面问题:

 本地Oracle Net配置文件解析:sqlnet.ora、tnsname.ora是我们客户端最重要的两个配置文件。由于历史的原因,Oracle基础配置文件很多是文本格式,Oracle Net三个核心配置文件尤其如此。netca等配置工具也只是一个文本文件写入读取功能。很多朋友进行配置的时候,图简单直接进行文本复制黏贴,容易引起问题故障。tnsping可以模拟连接过程,对配置文件中的名称进行预解析,如果存在格式错误,解析必定失败;

 

服务器端监听器状态诊断:在远程连接数据库服务器的时候,监听器是一个不能回避的组件。tnsping是可以进行网络访问判断的,如果监听器没有运行、或者没有在指定的端口上运行,tnsping是可以做出判断提示信息的;

 

注册服务有限验证:在本地连接名称中,服务名、主机名、监听器伺候端口、连接协议是连接信息的几个要素。服务名是tnsping不能验证的对象,也就是说。如果监听器注册信息(动态注册、静态注册)中不存在连接的服务名,tnsping是不会报错的;

 

使用方法如下

 

tnsping ip:port/service_name

 

扫描二维码关注公众号,回复: 2147884 查看本文章

tnsping命令:如果能够ping通,则说明客户端能解析listener的机器名,而且lister也已经启动,但是并不能说明数据库已经打开,而且tsnping的过程与真正客户端连接的过程也不一致。但是如果不能用tnsping通,则肯定连接不到数据库。

 

默认情况下,tnsping跟踪功能是关闭的。我们需要在Oracle Net配置文件sqlnet.ora中进行手工的配置。注意:配置是在客户端,我们执行tnsping命令也是在客户端进行。$ORACLE_HOME/network/admin

 

--客户端sqlnet.ora,位置$ORACLE_HOME/network/admin

  

使用tnsping连接一个本地连接名oracle

  

然后在$ORACLE_HOME/network/trace/tnsping.trc中查看跟踪信息

 

实验:

在主机database2上面将关闭监听

[oracle@Database2 ~]$ lsnrctl status

 

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 24-MAY-2018 06:13:19

 

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

 

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

TNS-12541: TNS:no listener

 TNS-12560: TNS:protocol adapter error

  TNS-00511: No listener

   Linux Error: 111: Connection refused

 

 

在主机database1上面去实验tnsping命令

 

[oracle@Database1 trace]$ tnsping 192.168.57.129:1521/oradba

 

TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 24-MAY-2018 14:37:31

 

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

 

Used parameter files:

 

Used HOSTNAME adapter to resolve the alias

Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=oradba))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.57.129)(PORT=1521)))

TNS-12541: TNS:no listener

 

现在在主机database2上面将监听打开

[oracle@Database2 ~]$ lsnrctl start

 

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 24-MAY-2018 06:15:47

 

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

 

Starting /u01/app/oracle/product/11.2.0/db_1/bin/tnslsnr: please wait...

 

TNSLSNR for Linux: Version 11.2.0.4.0 - Production

System parameter file is /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

Log messages written to /u01/app/oracle/diag/tnslsnr/Database2/listener/alert/log.xml

Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Database2)(PORT=1521)))

 

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

STATUS of the LISTENER

------------------------

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production

Start Date                24-MAY-2018 06:15:47

Uptime                    0 days 0 hr. 0 min. 0 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

Listener Log File         /u01/app/oracle/diag/tnslsnr/Database2/listener/alert/log.xml

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Database2)(PORT=1521)))

Services Summary...

Service "oradba" has 1 instance(s).

  Instance "oradb", status UNKNOWN, has 1 handler(s) for this service...

The command completed successfully

这个时候数据库是关闭的。

 

database1上面使用tnsping

[oracle@Database1 trace]$ tnsping 192.168.57.129:1521/oradba

 

TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 24-MAY-2018 14:41:08

 

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

 

Used parameter files:

 

Used HOSTNAME adapter to resolve the alias

Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=oradba))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.57.129)(PORT=1521)))

OK (0 msec)

 

 

注意:如果ip地址写错会出现TNS-12543: TNS:destination host unreachable

端口写错TNS-12541: TNS:no listener

服务名写错没关系,不会出现错误提示,因为不检测服务名

 

 

总结:

 

1. tnsping 命令可以检查tcp协议是否已同,俗称我们说的网络通不通

 

2.tnsping命令监听服务器上的监听是否已开启

 

3.tnsping命令不检测服务器上的监听的服务名,所以tnsping通,不代表就能连通。

 

4.验证名字解析,检查tnsnames.ora里面的内容是否正确

猜你喜欢

转载自blog.csdn.net/qq_34556414/article/details/81017449