我的机器有两个网卡,一个是外网的IP,一个是内网的IP,路由都已经设置好,内外网同时访问都没有问题的。Oracle服务器在内网上。
问题是我如果把外网网线插上,就会提示"TNS-12560: TNS: 协议适配器错误",而且我用netstat -a 命令查看,发现这个时候总是在连接 220.173.61.244 这个IP.
如果拔掉外网网线,就一切问题都没有了。
实在搞不明白究竟是什么问题,请专家帮忙给解决一下,谢谢啦。

解决方案 »

  1.   

    把LISTENTER.ORA和trsnames.ora贴出来
      

  2.   

    客户端的:
    # TNSNAMES.ORA Network Configuration File: D:\oracle\ora92\NETWORK\ADMIN\tnsnames.ora
    # Generated by Oracle configuration tools.
    lis =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 199.225.68.10)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = lisdb)
        )
      )# SQLNET.ORA Network Configuration File: D:\oracle\ora92\network\admin\sqlnet.ora
    # Generated by Oracle configuration tools.SQLNET.AUTHENTICATION_SERVICES= (NTS)NAMES.DIRECTORY_PATH= (TNSNAMES)服务器的:
    # C:\ORACLE\ORA81\NETWORK\ADMIN\LISTENER.ORA Configuration File:C:\Oracle\Ora81\NETWORK\ADMIN\listener.ora
    # Generated by Oracle Net8 AssistantLISTENER2 =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = lissrv)(PORT = 1541))
        (PROTOCOL_STACK =
          (PRESENTATION = TTC)
          (SESSION = NS)
        )
      )LISTENER1 =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = lissrv)(PORT = 1531))
        (PROTOCOL_STACK =
          (PRESENTATION = TTC)
          (SESSION = NS)
        )
      )LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
          (PROTOCOL_STACK =
            (PRESENTATION = TTC)
            (SESSION = NS)
          )
        )
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = lissrv)(PORT = 1521))
          (PROTOCOL_STACK =
            (PRESENTATION = TTC)
            (SESSION = NS)
          )
        )
      )SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = C:\Oracle\Ora81)
          (PROGRAM = extproc)
        )
        (SID_DESC =
          (GLOBAL_DBNAME = lisdb)
          (ORACLE_HOME = c:\oracle\ora81)
          (SID_NAME = lisdb)
        )
      )# C:\ORACLE\ORA81\NETWORK\ADMIN\TNSNAMES.ORA Configuration File:C:\Oracle\Ora81\NETWORK\ADMIN\tnsnames.ora
    # Generated by Oracle Net8 AssistantLISSRV =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 199.225.68.10)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = lisdb)
        )
      )EXTPROC_CONNECTION_DATA =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
        )
        (CONNECT_DATA =
          (SID = PLSExtProc)
          (PRESENTATION = RO)
        )
      )LIS =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 199.225.68.10)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = lisdb)
        )
      )
      

  3.   

    1.配置监听的时候使用 机器名 进行配置,不要使用IP地址进行配置。
    2.在hosts文件内增加 ip地址和机器名的对应。
      

  4.   

    环境:双网卡, 内外网IP
    数据库服务器的listener.ora如下:SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
          (PROGRAM = extproc)
        )
      )LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = dbsvr)(PORT = 1521))
        )
      )
      

  5.   

    hosts里面的ip和机器名已经是设置好了的。把IP改为机器名之后,sqlnet.log里面试这样的错误:***********************************************************************
    Fatal NI connect error 12535, connecting to:
     (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=lissrv)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=lisdb)(CID=(PROGRAM=d:\oracle\ora92\bin\sqlplus.exe)(HOST=YANGJING)(USER=yangjing))))  VERSION INFORMATION:
    TNS for 32-bit Windows: Version 9.0.1.1.0 - Production
    Windows NT TCP/IP NT Protocol Adapter for 32-bit Windows: Version 9.0.1.1.0 - Production
      Time: 04-6月 -2008 09:41:02
      Tracing not turned on.
      Tns error struct:
        nr err code: 0
        ns main err code: 12535
        TNS-12535: TNS: 操作超时
        ns secondary err code: 12560
        nt main err code: 505
        TNS-00505: 操作超时
        nt secondary err code: 60
        nt OS err code: 0
      

  6.   

    主要的问题是我把外网线拔掉后,能够连接上,然后把外网线重新插上,能够正常 SQL 操作。而且在内外网线都插上的时候,访问内外网都是没有问题的。
      

  7.   

    而且在连接上外网线的时候,用sqlplus访问内网数据库,我用netstat-a 命令看到总会有这个网络访问 local:1056 到 220.173.61.244:2397