精华内容
下载资源
问答
  • tnsping命令的作用和适用场景

    千次阅读 2019-01-21 19:23:42
    在操作系统上直接运行tnsping命令,就可以得到它的使用方法,如下所示: [ora10g@capaa admin]$ tnsping TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 08-JUL-2012 12:03:42 Copyright (c) ...

    在操作系统上直接运行tnsping命令,就可以得到它的使用方法,如下所示:

    [ora10g@capaa admin]$ tnsping  
    TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 08-JUL-2012 12:03:42  
    Copyright (c) 1997, 2005, Oracle.  All rights reserved.  
    TNS-03502: Insufficient arguments.  Usage:  tnsping <address> [<count>] 
    

    tnsping命令还支持Easy Connect的连接方式,如下所示:

    $ tnsping db.us.oracle.com:1521/dba10g 
    

    tnsping命令主要用于以下几个方面:

    检查tnsnames.ora文件中的连接串是否配置,或者配置是否符合语法。如果不符合语法则会报如下错误:

    TNS-12533: TNS:illegal ADDRESS parameters 
    

    根据执行tnsping命令所消耗的时间来诊断数据库的性能问题。当数据库出现问题时,可以使用 tnsping命令来观察故障组件的性能波动情况。需要注意的是,tnsping消耗时间的长短受多种因素影响,比如:域名解析的性能、网络的性能、服务器的性能、监听的处理性能等。

    检查服务器端的监听是否启动。但是需要注意的是,tnsping只是发送连接包(NSPTCN)至服务器端监听上,所以即使tnsping监听正常,客户端也不一定能连接到数据库服务器。tnsping主要检查的是远程监听是否启动在相应的IP地址和端口上,并不检查监听中的实例服务和句柄(handle)。

    比如当前客户端的连接串配置如下:

    zhoul =  
      (DESCRIPTION =  
        (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.4.37)(PORT = 1521))  
        (CONNECT_DATA =  
          (SERVER = DEDICATED)  
          (service_name= zhoul)  
        )  
      ) 
    

    监听状态显示如下:

    Services Summary..  
    Service "xe" has 1 instance(s).  
      Instance "xe", status READY, has 1 handler(s) for this service...  
    The command completed successfully 
    

    可以看到,客户端的SERVICE_NAME取值和监听中服务的名字并不匹配,但是在客户端使用tnsping监听却是正常的,如下所示:

    [ora10g@capaa admin]$ tnsping zhoul  
    Used TNSNAMES adapter to resolve the alias  
    Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =172.16.4.37)  
    (PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (service_name= zhoul)))  
    OK (0 msec) 
    

    客户端使用sqlplus连接数据库时则出现ORA-12514错误。如下所示:

    ORA-12514: TNS:listener does not currently know of service requested in connect  
    descriptor 
    

    注意 慎用tnsping命令来监控各数据库服务器的监听状态,在某些平台下tnsping命令存在内存泄露,严重的时候可能会导致tnsping服务器由于内存耗尽而宕机。

    在客户端的sqlnet.ora中配置如下参数,即可跟踪tnsping进程的活动,如下所示:

    TNSPING.TRACE_LEVEL= [OFF|USER|ADMIN|SUPPORT]  
    TNSPING.TRACE_DIRECTORY = <path where tnsping.trc will go> 
    

    内容转自http://book.51cto.com/art/201312/421434.htm

    展开全文
  • tnsping命令介绍

    千次阅读 2018-06-28 18:34:39
    什么是tnsping? 可以参考官方文档的具体介绍 http://docs.oracle.com/cd/E11882_01/network.112/e41945/connect.htm#NETAG378   tnsping 实际上就是一个小工具,用来决定是否一个Oracle Net 网络服务(service...

     

     

    什么是tnsping?

    可以参考官方文档的具体介绍

    http://docs.oracle.com/cd/E11882_01/network.112/e41945/connect.htm#NETAG378

     

    tnsping 实际上就是一个小工具,用来决定是否一个Oracle Net 网络服务(service)可以被接受。

    从某种意义上来说,tnsping 针对的 sqlnet连接,就好比为我们常用的ping 命令来检查IP,主机名网络连接情况。

     

    我们来做一个有趣的试验:

     

     

    先来看看以下配置信息:

    数据库所在服务器端:

    数据库安装到Linux服务器,hostname = ttdev, IP 地址= 192.168.56.11, ORACLE_SID=ORCL

    ------

    [oracle@ttdev ~]$ cat /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora

    LISTENER =

      (DESCRIPTION_LIST =

        (DESCRIPTION =

          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.11)(PORT = 1521))

        )

      )

    SID_LIST_LISTENER =

      (SID_LIST =

        (SID_DESC =

          (PROGRAM = extproc)

          (SID_NAME = PLSExtProc)

          (ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_2)

        )

      )

    ADR_BASE_LISTENER = /home/oracle/app/oracle/

    ------

     

     

    客户端:

    在Windows ,安装oracle 客户端后,配置Windows 环境变量 TNS_ADMIN 指向 C:\app\liyang\product\11.2.0\client_2\network\admin

    在该路径下,添加 tnsnames.ora 文件

    ------

    TTORCL =

      (DESCRIPTION =

        (ADDRESS_LIST =

          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.11)(PORT = 1521))

        )

        (CONNECT_DATA =

          (SERVICE_NAME = orcl)

        )

      )

    ------

    客户端的sqlnet.ora 使用默认

    SQLNET.AUTHENTICATION_SERVICES = (NTS) 

    =============

     

     

    试验一:

    首先,我们来看一下数据库服务器端的实际情况:

    通过putty 登录到Linux系统的oracle 用户,停掉数据库,并检查监听情况:

    ------

    [oracle@ttdev ~]$ sqlplus / as sysdba

    SQL*Plus: Release 11.1.0.7.0 - Production on Tue Mar 25 18:49:23 2014

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

    Connected to:

    Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production

    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    SQL> shutdown immediate

    Database closed.

    Database dismounted.

    ORACLE instance shut down.

    SQL> quit

    Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production

    With the Partitioning, OLAP, Data Mining and Real Application Testing options

     

    [oracle@ttdev ~]$ lsnrctl status

    LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 25-MAR-2014 18:52:03

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

    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.11)(PORT=1521)))

    STATUS of the LISTENER

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

    Alias                     LISTENER

    Version                   TNSLSNR for Linux: Version 11.2.0.2.0 - Production

    Start Date                25-MAR-2014 18:14:27

    Uptime                    0 days 0 hr. 37 min. 36 sec

    Trace Level               off

    Security                  ON: Local OS Authentication

    SNMP                      OFF

    Listener Parameter File   /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora

    Listener Log File         /home/oracle/app/oracle/diag/tnslsnr/ttdev/listener/alert/log.xml

    Listening Endpoints Summary...

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

    Services Summary...

    Service "PLSExtProc" has 1 instance(s).

      Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...     《=========服务里面并没有ORCL,因为数据库刚刚被shutdown了!

    The command completed successfully

    ------

     

    在Windows 客户端, 开始 菜单=》 运行 =》 输入 cmd 命令,

    进入dos 窗口,并输入 tnsping TTORCL, 返回

    ------

    C:\Users\liyang>tnsping TTORCL

    TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 26-3月 -

    2014 10:06:08

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

    已使用的参数文件:

    C:\app\liyang\product\11.2.0\client_2\network\admin\sqlnet.ora

    已使用 TNSNAMES 适配器来解析别名

    尝试连接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.1   《=====TNSPING 仍然解析成功,返回TTORCL的具体内容!

    68.56.11)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))

    OK (20 毫秒)

    ------

    上面返回的 “尝试连接” 后面部分是sqlnet 如何解析到的TTORCL 别名,或者叫 连接标识符。该别名的解析是通过客户端的 TNS_ADMIN指定路径下的 sqlnet.ora文件中的 NAMES.DIRECTORY_PATH 参数决定的。上面的试验结果显示的是通过 TNSNAMES 适配器 来解析成功的。 

    该请求可以看到,是通过 TCP 的网络协议  (PROTOCOL = TCP), 连接到了 IP地址为 192.168.56.11 上的服务器(也可以是主机名),希望连接的端口为 1521, 服务名为  (SERVICE_NAME = orcl)。

    连接20毫秒的意思是 一个预估的大概网络传输往返一次的时间。

     

    以上测试说明了,不论数据库是否运行,只要监听存在并在运行,tnsping 都可以成功解析! 

    =============

     

     

    试验二:

    停止数据库实例,更改监听的端口为 1522 , 启动监听:

    ------

    [oracle@ttdev admin]$ sqlplus / as sysdba

    SQL*Plus: Release 11.1.0.7.0 - Production on Tue Mar 25 21:07:28 2014

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

    Connected to:

    Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production

    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    SQL> shutdown immediate;

    Database closed.

    Database dismounted.

    ORACLE instance shut down.

    SQL> quit

    Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production

    With the Partitioning, OLAP, Data Mining and Real Application Testing options

     

    [oracle@ttdev admin]$ ps -ef | grep smon

    oracle    4335  3326  0 21:08 pts/1    00:00:00 grep smon                  

    《====没有数据库实例进程运行

     

    [oracle@ttdev admin]$ lsnrctl status

    LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 25-MAR-2014 21:08:00

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

    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.11)(PORT=1522)))  

    《====端口已经更改!

    STATUS of the LISTENER

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

    Alias                     LISTENER

    Version                   TNSLSNR for Linux: Version 11.2.0.2.0 - Production

    Start Date                25-MAR-2014 21:01:31

    Uptime                    0 days 0 hr. 6 min. 29 sec

    Trace Level               off

    Security                  ON: Local OS Authentication

    SNMP                      OFF

    Listener Parameter File   /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora

    Listener Log File         /home/oracle/app/oracle/diag/tnslsnr/ttdev/listener/alert/log.xml

    Listening Endpoints Summary...

      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.11)(PORT=1522)))   《======监听1522 正常运行 

    Services Summary...

    Service "PLSExtProc" has 1 instance(s).

      Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...  《====没有监听到 ORCL的服务

    The command completed successfully

    ------

    接下来,回到客户端,执行  tnsping ttorcl

    ------

    C:\Users\liyang>tnsping ttorcl

    TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 26-3月 -

    2014 12:09:48

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

    已使用的参数文件:

    C:\app\liyang\product\11.2.0\client_2\network\admin\sqlnet.ora

    已使用 TNSNAMES 适配器来解析别名

    尝试连接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.1   <===仍然返回成功解析和接受

    68.56.11)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))

    OK (0 毫秒)

    ------

    这个试验二证明了,tnsping 即使在数据库实例停止的情况下,并没有监听1521端口,只要监听运行,tnsping就可以返回正常!

    =============

     

     

    试验三:

    那我们再来测试一下,监听停止的情况

    ------

    [oracle@ttdev ~]$ lsnrctl stop

    LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 25-MAR-2014 19:26:31

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

    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.11)(PORT=1521)))

    The command completed successfully

     

    [oracle@ttdev ~]$ lsnrctl status

    LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 25-MAR-2014 19:26:39

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

    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.11)(PORT=1521))) 

    TNS-12541: TNS:no listener

    TNS-12560: TNS:protocol adapter error                                

    《=======监听停止

      TNS-00511: No listener

       Linux Error: 111: Connection refused

     

    [oracle@ttdev ~]$ ps -ef | grep smon

    oracle    3585  3326  0 19:26 pts/1    00:00:00 grep smon    

    《===没有数据库实例启动 

    ------

    此时,在客户端再次执行 tnsping:

    ------

    C:\Users\liyang>tnsping TTORCL

    TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 26-3月 -

    2014 10:27:55

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

    已使用的参数文件:

    C:\app\liyang\product\11.2.0\client_2\network\admin\sqlnet.ora

    已使用 TNSNAMES 适配器来解析别名

    尝试连接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.1

    68.56.11)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))

    TNS-12541: TNS: 无监听程序                    <============解析仍然成功,但是报出 TNS-12541 的错误!

    ------

    以上测试说明了,监听停止之后,tnsping 无法被远端监听接受

    =============

     

     

    以下试验四,五开始之前,我们将启动数据库实例和监听

    ------

    [oracle@ttdev admin]$ lsnrctl status

    LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 25-MAR-2014 21:02:31

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

    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.11)(PORT=1521)))

    STATUS of the LISTENER

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

    Alias                     LISTENER

    Version                   TNSLSNR for Linux: Version 11.2.0.2.0 - Production

    Start Date                25-MAR-2014 21:01:31

    Uptime                    0 days 0 hr. 1 min. 0 sec

    Trace Level               off

    Security                  ON: Local OS Authentication

    SNMP                      OFF

    Listener Parameter File   /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora

    Listener Log File         /home/oracle/app/oracle/diag/tnslsnr/ttdev/listener/alert/log.xml

    Listening Endpoints Summary...

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

    Services Summary...

    Service "PLSExtProc" has 1 instance(s).

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

    Service "orcl" has 1 instance(s).

      Instance "orcl", status READY, has 2 handler(s) for this service...

    Service "orclXDB" has 1 instance(s).

      Instance "orcl", status READY, has 1 handler(s) for this service...

    The command completed successfully

     

    [oracle@ttdev admin]$ ps -ef | grep smon

    oracle    4148     1  0 21:01 ?        00:00:00 ora_smon_orcl

    oracle    4261  3326  0 21:02 pts/1    00:00:00 grep smon

    ------

     

     

    试验四:

    删除本地的 tnsnames.ora,之后看一下会出现什么情况

    ------

    C:\Users\liyang>tnsping TTORCL

    TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 26-3月 -

    2014 10:31:38

     

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

     

    已使用的参数文件:

    C:\app\liyang\product\11.2.0\client_2\network\admin\sqlnet.ora 

     

    TNS-03505: 无法解析名称               《=====================这次,连解析都无法成功!

    ------

     

    注:编辑tnsnames.ora,如果我将TTORCL 修改为 ORCL,则返回同样的结果

    ------

    C:\Users\liyang>tnsping TTORCL

    TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 26-3月 -

    2014 10:33:36

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

    已使用的参数文件:

    C:\app\liyang\product\11.2.0\client_2\network\admin\sqlnet.ora

    TNS-03505: 无法解析名称

    ------

    =============

     

    试验五:

    再来测试一个IP地址输入错误的情景

    修改tnsnames.ora文件,从192.168.56.11 改为一个不存在的192.168.56.12

    ------

    TTORCL =

      (DESCRIPTION =

        (ADDRESS_LIST =

          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.12)(PORT = 1521))  《==更改IP 

        )

        (CONNECT_DATA =

          (SERVICE_NAME = orcl)

        )

      )

    ------

    C:\Users\liyang>ping 192.168.56.12

    正在 Ping 192.168.56.12 具有 32 字节的数据:

    来自 192.168.56.1 的回复: 无法访问目标主机。    <====ping 显示了该IP不存在

     

    C:\Users\liyang>tnsping ttorcl

    TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 26-3月 -

    2014 11:54:25

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

    已使用的参数文件:

    C:\app\liyang\product\11.2.0\client_2\network\admin\sqlnet.ora

    已使用 TNSNAMES 适配器来解析别名

    尝试连接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.1

    68.56.12)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))

    TNS-12535: TNS: 操作超时            《=======结果是等了较长时间报出超时错误

    ------

     

    总结: 

    tnsping 用于诊断各种客户端连接问题还是一个非常好的工具。

    但是我们要清楚的知道,这个工具能做什么(检查客户端TNS配置),什么不能做(检查数据库实例是否启动,监听端口是否在1521上)!

     

    从以上试验我们看到,tnsping的解析成功仅仅意味着本地的tnsnames.ora ,IP地址,TNS_ADMIN 变量等配置成功。

    但是,完全跟目标数据库实例连接没有任何关系!

     

    最后,sqlnet 跟数据库也完全是独立的两个问题。不要因为sqlnet连接方面出错,就肯定是数据库的问题。要从客户端自身先找原因

    展开全文
  • 趣谈tnsping

    2014-10-23 17:07:28
    目前很多Oracle的爱好者希望快速搭建一套Oracle 数据库并通过客户端开发工具进行开发和应用连接。 但是,我们也注意到,很多用户遇到的不是安装数据库本身,而是安装之后无法远程连接到...并且,遇到各种各样的TNS...

    目前很多Oracle的爱好者希望快速搭建一套Oracle 数据库并通过客户端开发工具进行开发和应用连接。
    但是,我们也注意到,很多用户遇到的不是安装数据库本身,而是安装之后无法远程连接到数据库。并且,遇到各种各样的TNS报错,无从下手。
    这里,我们希望通过博客的方式,来展现一下网络连接方面的基本配置和诊断方法。

    就从tnsping开始吧!

    首先,我们要了解的是: 什么是tnsping?
    可以参考官方文档的具体介绍
    http://docs.oracle.com/cd/E11882_01/network.112/e41945/connect.htm#NETAG378

    tnsping 实际上就是一个小工具,用来决定是否一个Oracle Net 网络服务(service)可以被接受。
    从某种意义上来说,tnsping 针对的 sqlnet连接,就好比为我们常用的ping 命令来检查IP,主机名网络连接情况。

    我们来做一个有趣的试验:



    先来看看以下配置信息:
    数据库所在服务器端:
    数据库安装到Linux服务器,hostname = ttdev, IP 地址= 192.168.56.11, ORACLE_SID=ORCL
    ------
    [oracle@ttdev ~]$ cat /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.11)(PORT = 1521))
        )
      )
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (PROGRAM = extproc)
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_2)
        )
      )
    ADR_BASE_LISTENER = /home/oracle/app/oracle/

    ------



    客户端:
    在Windows ,安装oracle 客户端后,配置Windows 环境变量 TNS_ADMIN 指向 C:\app\liyang\product\11.2.0\client_2\network\admin
    在该路径下,添加 tnsnames.ora 文件
    ------
    TTORCL =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.11)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = orcl)
        )
      )

    ------
    客户端的sqlnet.ora 使用默认
    SQLNET.AUTHENTICATION_SERVICES = (NTS) 
    =============



    试验一:
    首先,我们来看一下数据库服务器端的实际情况:
    通过putty 登录到Linux系统的oracle 用户,停掉数据库,并检查监听情况:
    ------
    [oracle@ttdev ~]$ sqlplus / as sysdba
    SQL*Plus: Release 11.1.0.7.0 - Production on Tue Mar 25 18:49:23 2014
    Copyright (c) 1982, 2008, Oracle.  All rights reserved.
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> quit
    Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    [oracle@ttdev ~]$ lsnrctl status
    LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 25-MAR-2014 18:52:03
    Copyright (c) 1991, 2010, Oracle.  All rights reserved.
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.11)(PORT=1521)))
    STATUS of the LISTENER
    ------------------------
    Alias                     LISTENER
    Version                   TNSLSNR for Linux: Version 11.2.0.2.0 - Production
    Start Date                25-MAR-2014 18:14:27
    Uptime                    0 days 0 hr. 37 min. 36 sec
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Listener Parameter File   /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora
    Listener Log File         /home/oracle/app/oracle/diag/tnslsnr/ttdev/listener/alert/log.xml
    Listening Endpoints Summary...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.11)(PORT=1521)))
    Services Summary...
    Service "PLSExtProc" has 1 instance(s).
      Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...     《=========服务里面并没有ORCL,因为数据库刚刚被shutdown了!
    The command completed successfully

    ------

    在Windows 客户端, 开始 菜单=》 运行 =》 输入 cmd 命令,
    进入dos 窗口,并输入 tnsping TTORCL, 返回
    ------
    C:\Users\liyang>tnsping TTORCL
    TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 26-3月 -
    2014 10:06:08
    Copyright (c) 1997, 2010, Oracle.  All rights reserved.
    已使用的参数文件:
    C:\app\liyang\product\11.2.0\client_2\network\admin\sqlnet.ora
    已使用 TNSNAMES 适配器来解析别名
    尝试连接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.1   《=====TNSPING 仍然解析成功,返回TTORCL的具体内容!
    68.56.11)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))
    OK (20 毫秒)

    ------
    上面返回的 “尝试连接” 后面部分是sqlnet 如何解析到的TTORCL 别名,或者叫 连接标识符。该别名的解析是通过客户端的 TNS_ADMIN指定路径下的 sqlnet.ora文件中的 NAMES.DIRECTORY_PATH 参数决定的。上面的试验结果显示的是通过 TNSNAMES 适配器 来解析成功的。 
    该请求可以看到,是通过 TCP 的网络协议  (PROTOCOL = TCP), 连接到了 IP地址为 192.168.56.11 上的服务器(也可以是主机名),希望连接的端口为 1521, 服务名为  (SERVICE_NAME = orcl)。
    连接20毫秒的意思是 一个预估的大概网络传输往返一次的时间。

    以上测试说明了,不论数据库是否运行,只要监听存在并在运行,tnsping 都可以成功解析! 
    =============



    试验二:
    停止数据库实例,更改监听的端口为 1522 , 启动监听:
    ------
    [oracle@ttdev admin]$ sqlplus / as sysdba
    SQL*Plus: Release 11.1.0.7.0 - Production on Tue Mar 25 21:07:28 2014
    Copyright (c) 1982, 2008, Oracle.  All rights reserved.
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> quit
    Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    [oracle@ttdev admin]$ ps -ef | grep smon
    oracle    4335  3326  0 21:08 pts/1    00:00:00 grep smon                  
    《====没有数据库实例进程运行

    [oracle@ttdev admin]$ lsnrctl status
    LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 25-MAR-2014 21:08:00
    Copyright (c) 1991, 2010, Oracle.  All rights reserved.
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.11)(PORT=1522)))  
    《====端口已经更改!
    STATUS of the LISTENER
    ------------------------
    Alias                     LISTENER
    Version                   TNSLSNR for Linux: Version 11.2.0.2.0 - Production
    Start Date                25-MAR-2014 21:01:31
    Uptime                    0 days 0 hr. 6 min. 29 sec
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Listener Parameter File   /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora
    Listener Log File         /home/oracle/app/oracle/diag/tnslsnr/ttdev/listener/alert/log.xml
    Listening Endpoints Summary...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.11)(PORT=1522)))   《======监听1522 正常运行 
    Services Summary...
    Service "PLSExtProc" has 1 instance(s).
      Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...  《====没有监听到 ORCL的服务
    The command completed successfully

    ------
    接下来,回到客户端,执行  tnsping ttorcl
    ------
    C:\Users\liyang>tnsping ttorcl
    TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 26-3月 -
    2014 12:09:48
    Copyright (c) 1997, 2010, Oracle.  All rights reserved.
    已使用的参数文件:
    C:\app\liyang\product\11.2.0\client_2\network\admin\sqlnet.ora
    已使用 TNSNAMES 适配器来解析别名
    尝试连接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.1   <===仍然返回成功解析和接受
    68.56.11)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))
    OK (0 毫秒)
    ------
    这个试验二证明了,tnsping 即使在数据库实例停止的情况下,并没有监听1521端口,只要监听运行,tnsping就可以返回正常!
    =============



    试验三:
    那我们再来测试一下,监听停止的情况
    ------
    [oracle@ttdev ~]$ lsnrctl stop
    LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 25-MAR-2014 19:26:31
    Copyright (c) 1991, 2010, Oracle.  All rights reserved.
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.11)(PORT=1521)))
    The command completed successfully

    [oracle@ttdev ~]$ lsnrctl status
    LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 25-MAR-2014 19:26:39
    Copyright (c) 1991, 2010, Oracle.  All rights reserved.
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.11)(PORT=1521))) 
    TNS-12541: TNS:no listener
    TNS-12560: TNS:protocol adapter error                                
    《=======监听停止
      TNS-00511: No listener
       Linux Error: 111: Connection refused

    [oracle@ttdev ~]$ ps -ef | grep smon
    oracle    3585  3326  0 19:26 pts/1    00:00:00 grep smon    
    《===没有数据库实例启动 
    ------
    此时,在客户端再次执行 tnsping:
    ------
    C:\Users\liyang>tnsping TTORCL
    TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 26-3月 -
    2014 10:27:55
    Copyright (c) 1997, 2010, Oracle.  All rights reserved.
    已使用的参数文件:
    C:\app\liyang\product\11.2.0\client_2\network\admin\sqlnet.ora
    已使用 TNSNAMES 适配器来解析别名
    尝试连接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.1
    68.56.11)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))
    TNS-12541: TNS: 无监听程序                    <============解析仍然成功,但是报出 TNS-12541 的错误!
    ------
    以上测试说明了,监听停止之后,tnsping 无法被远端监听接受
    =============



    以下试验四,五开始之前,我们将启动数据库实例和监听
    ------
    [oracle@ttdev admin]$ lsnrctl status
    LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 25-MAR-2014 21:02:31
    Copyright (c) 1991, 2010, Oracle.  All rights reserved.
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.11)(PORT=1521)))
    STATUS of the LISTENER
    ------------------------
    Alias                     LISTENER
    Version                   TNSLSNR for Linux: Version 11.2.0.2.0 - Production
    Start Date                25-MAR-2014 21:01:31
    Uptime                    0 days 0 hr. 1 min. 0 sec
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Listener Parameter File   /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora
    Listener Log File         /home/oracle/app/oracle/diag/tnslsnr/ttdev/listener/alert/log.xml
    Listening Endpoints Summary...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.11)(PORT=1521)))
    Services Summary...
    Service "PLSExtProc" has 1 instance(s).
      Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
    Service "orcl" has 1 instance(s).
      Instance "orcl", status READY, has 2 handler(s) for this service...
    Service "orclXDB" has 1 instance(s).
      Instance "orcl", status READY, has 1 handler(s) for this service...
    The command completed successfully

    [oracle@ttdev admin]$ ps -ef | grep smon
    oracle    4148     1  0 21:01 ?        00:00:00 ora_smon_orcl
    oracle    4261  3326  0 21:02 pts/1    00:00:00 grep smon
    ------



    试验四:
    删除本地的 tnsnames.ora,之后看一下会出现什么情况
    ------
    C:\Users\liyang>tnsping TTORCL
    TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 26-3月 -
    2014 10:31:38

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

    已使用的参数文件:
    C:\app\liyang\product\11.2.0\client_2\network\admin\sqlnet.ora 

    TNS-03505: 无法解析名称               《=====================这次,连解析都无法成功!

    ------

    注:编辑tnsnames.ora,如果我将TTORCL 修改为 ORCL,则返回同样的结果

    ------
    C:\Users\liyang>tnsping TTORCL
    TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 26-3月 -
    2014 10:33:36
    Copyright (c) 1997, 2010, Oracle.  All rights reserved.
    已使用的参数文件:
    C:\app\liyang\product\11.2.0\client_2\network\admin\sqlnet.ora
    TNS-03505: 无法解析名称

    ------
    =============

    试验五:
    再来测试一个IP地址输入错误的情景
    修改tnsnames.ora文件,从192.168.56.11 改为一个不存在的192.168.56.12
    ------
    TTORCL =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.12)(PORT = 1521))  《==更改IP 
        )
        (CONNECT_DATA =
          (SERVICE_NAME = orcl)
        )
      )

    ------
    C:\Users\liyang>ping 192.168.56.12

    正在 Ping 192.168.56.12 具有 32 字节的数据:
    来自 192.168.56.1 的回复: 无法访问目标主机。    <====ping 显示了该IP不存在

    C:\Users\liyang>tnsping ttorcl
    TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 26-3月 -
    2014 11:54:25
    Copyright (c) 1997, 2010, Oracle.  All rights reserved.
    已使用的参数文件:
    C:\app\liyang\product\11.2.0\client_2\network\admin\sqlnet.ora
    已使用 TNSNAMES 适配器来解析别名
    尝试连接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.1
    68.56.12)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))
    TNS-12535: TNS: 操作超时            《=======结果是等了较长时间报出超时错误

    ------

    总结: 
    tnsping 用于诊断各种客户端连接问题还是一个非常好的工具。
    但是我们要清楚的知道,这个工具能做什么(检查客户端TNS配置),什么不能做(检查数据库实例是否启动,监听端口是否在1521上)!

    从以上试验我们看到,tnsping的解析成功仅仅意味着本地的tnsnames.ora ,IP地址,TNS_ADMIN 变量等配置成功。
    但是,完全跟目标数据库实例连接没有任何关系!

    最后,sqlnet 跟数据库也完全是独立的两个问题。不要因为sqlnet连接方面出错,就肯定是数据库的问题。要从客户端自身先找原因。

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12798004/viewspace-1308253/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/12798004/viewspace-1308253/

    展开全文
  • tnsping不通的问题

    2010-02-26 11:24:48
    今天在虚拟机上redhat enterprise 5linux装完oracle10.2.0.1 碰到一个奇怪的问题,在l虚拟机里面我可以tnsping通(虚拟机里面linux下的oracle服务),我切换到xp系统下后,怎么也...

    今天在虚拟机上redhat enterprise 5 linux装完oracle10.2.0.1 碰到一个奇怪的问题,在l虚拟机里面我可以tnsping通(虚拟机里面linux下的oracle服务),我切换到xp系统下后,怎么也tnsping不通服务名,我怀疑网络问题,通过ping ip地址一切正常,后来我感觉是虚拟机里面linux的防火墙的问题,查看端口使用情况发现正常。最后我在xp系统下ping 虚拟机里面的主机名,发现不是我设定的静态ip地址,修改网络配置问题解决。

         我装完linux后用的是动态绑定的方式,后来装完oracle我改成静态ip,最后一个dhcp没有屏蔽掉,才出现刚才的问题。修改文件是/etc/sysconfig/network-scripts/ifcfg-etho里面注释掉#DHCP_HOSTNAME=loaclhost.localdomain后,问题消失。

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8113358/viewspace-627928/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/8113358/viewspace-627928/

    展开全文
  • orale的tnsping与TCPIP的ping命令的比较

    千次阅读 2009-06-10 13:08:00
    orale的tnsping与TCPIP的ping命令的比较 比较orale的tnsping与TCP/IP的ping命令: ----------------------------------------------------------------------------- Oracle Net 工具(命令)tnsping,是一个OSI...
  • tnsping TNS-12535: TNS:operation timed out

    千次阅读 2014-03-25 14:05:08
    源操作系统环境:redhat5.6-64bit 源端数据库:oracle11.2.0.1-64bit ...目标操作系统环境:windowsxp-32bit ...在源端数据库上配置好tns后,执行tnsping orcl命令,报TNS-12535: TNS:operation timed out,如下所
  • oracle的tnsping与TCPIP的ping命令的比较

    千次阅读 2014-05-06 16:36:35
    orale的tnsping与TCPIP的ping命令的比较        比较orale的tnsping与TCP/IP的ping命令:  -----------------------------------------------------------------------------  Oracle Net 工具(命令)tnsping...
  • tnsping,作为Oracle连接测试的一个小巧的工具,其实大家已经不陌生了,但是使用tnsping有一个问题,就是连接超时,当然这个和网络的安全策略等密不可分,但是摆在我面前的一个问题是,现在有大量的服务器,每台...
  • oracle 的tnsping命令(转) 2007年10月23日 星期二 下午 12:55 比较orale的tnsping与TCP/IP的ping命令:  ----------------------------------------------------------------------------- Oracle Net ...
  • 使用Oracle客户端的Net Configuration Assistant,在本地配置了一个tns连接一个远程的数据库,名称为romotedb。 然后通过tnsping该remotedb,连接成功。 想当然的...
  • Strace shows that the tnsping failed with below errors strace -o a.txt tnsping orcl $cat a.txt ........ getsockopt(4, SOL_SOCKET, SO_SNDBUF, 0x7fff2b16c0fc, 0x7fff2b16c0f8) = -1 ...
  •  然后通过tnsping该remotedb,连接成功。 想当然的使用sqlplus来连接remotedb,结果报错: ERROR:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务很是奇怪! ===================...
  • 同时,其他内部工具如tnsping、impdp、expdp等都有相同情况。 原理 数据库软件安装的有问题。 因为是采用的静默方式,命令行反馈的消息基本无价值。实际已经安装失败了,但没有发现。 实际报错信息
  • 刚才说过,如果你安装的是instant client,它不带tnsping工具,没关系,你只要明白tnsping是干什么的就行。事实上,它只做三件事:1.如果你指定了TNS别名,它将别名解析为连接字符串(如果你登录时直接使用了完整的...
  • oracle 10g : ORA-12514: TNS:listener does not currently know of service requested in connect descriptor error message: ORA-12514: TNS:listener does not currently know of service requested in con
  • 服务器端listener、instance运行均正常,在服务器本地通过sqlplus “/as sysdba”跳过...listener log中也同步报TNS-12518:TNS:listener could not hand off client connection / TNS-12547: TNS:lost contact/ TN
  • windows 2008上启用防火墙后Oracle tnsping不通  1、解决方法: 很简单,windows2008防火墙将Oracle 1521端口给封了,新建并开启就行了。当然,如果你的listener是其他端口,按照下述方法把其他的端口开了...
  • 这是我用tnsping系统显示的问题:TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 09-MAR-2008 10:07 :39Copyright (c) 1997, 2005, Oracle.All rights reserved.Used parameter files:/usr/app...
  • 在之前的博客:https://blog.csdn.net/whandgdh/article/details/99354252中讲解了oracle透明网关访问mysql 在windows系统中的实现,本文讲解在linux系统中的实现。 一 安装透明网关以及mysql odbc 1.1 下载oracle...
  • 配置完成后,切换到oracle用户: ...在oracle用户下执行tnsping 服务名(service_name)->这里指的是tnsname文件里的service_name 如果后面出现OK,则表示tns正常。如下图所示: ...
  • oracle客户端Linux版,带sqlldr,tnsping,上传到Linux系统,解压简单配置即可使用
  • linux系统安装arcgis server 10.3.1

    千次阅读 2019-04-17 22:47:40
    linux系统;centos 7.4 arcgis server 10.3.1 arcgis server 10.3.1 的安装需要oracle 服务的支撑。机器需要安装oracle 64位的服务端或者64位的客户端。(oracle 64位的服务端提供监听服务,所以机器不需要再安装64...
  • 【安装】Linux系统(X64)安装Oracle 11g 一、修改操作系统核心参数 在Root用户下执行以下步骤: ...
  • Linux系统(X64)安装Oracle11g完整安装

    千次阅读 2017-02-17 14:31:17
    Linux系统(X64)安装Oracle11g完整安装 根据自己实际安装操作,记录64位linux虚拟机安装Oracle 11g,分享给大家! 一、修改操作系统核心参数 在Root用户下执行以下步骤: 1)修改/etc/security/limits.conf文件,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,546
精华内容 1,018
关键字:

linux系统tnsping

linux 订阅