环境:WindwsXP上装oracle10g,其中主机是在一个域里面。
数据库安装好以后,所有服务都能启动,但是一连实例
SQL>connect system/system@TEST_10.75.72.25 回车后就一直等待在那里listener.ora文件内容:SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = TEST)
      (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
      (GLOBAL_DBNAME = TEST)
    )
  )LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.75.72.25)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )
tnsnames.ora文件内容IT4X_10.75.72.25 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.75.72.25)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = TEST)
    )
  )EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )sqlnet.ora文件内容:SQLNET.AUTHENTICATION_SERVICES = (NTS)
sqlnet.log文件内容:Fatal NI connect error 12560, connecting to:
 (LOCAL=NO)  VERSION INFORMATION:
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
Oracle Bequeath NT Protocol Adapter for 32-bit Windows: Version 10.2.0.1.0 - Production
Windows NT TCP/IP NT Protocol Adapter for 32-bit Windows: Version 10.2.0.1.0 - Production
  Time: 23-9月 -2009 15:37:41
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12560
    TNS-12560: TNS: 协议适配器错误
    ns secondary err code: 0
    nt main err code: 0
    nt secondary err code: 0
    nt OS err code: 0
请大家帮我看看是怎么回事啊?我的IP是固定IP,是不是跟在域里面有关呢?

解决方案 »

  1.   

    tnsnames.ora文件内容 IT4X_10.75.72.25 = 
      (DESCRIPTION = 
        (ADDRESS_LIST = 
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.75.72.25)(PORT = 1521)) 
        ) 
        (CONNECT_DATA = 
          (SERVICE_NAME = TEST) 
        ) 
      ) 
    ----------------
    SQL>connect system/system@TEST_10.75.72.25 
    ------------
    这两者不对应。试试 connect system/system@IT4X_10.75.72.25 或者改一下tnsnames.ora文件内容为:TEST_10.75.72.25 = 
      (DESCRIPTION = 
        (ADDRESS_LIST = 
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.75.72.25)(PORT = 1521)) 
        ) 
        (CONNECT_DATA = 
          (SERVICE_NAME = TEST) 
        ) 
      ) 
      

  2.   

    或者改一下tnsnames.ora文件内容为: TEST_10.75.72.25 = 
      (DESCRIPTION = 
        (ADDRESS_LIST = 
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.75.72.25)(PORT = 1521)) 
        ) 
        (CONNECT_DATA = 
          (SERVICE_NAME = TEST) 
        ) 
      ) 再用connect system/system@TEST_10.75.72.25 
      

  3.   


    不好意思,是我发贴的时候写错了,tnsnames.ora的内容是
    TEST_10.75.72.25 =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.75.72.25)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = TEST)
        )
      )
      

  4.   

    connect system/system@TEST as sysdba
      

  5.   

    先ping 10.75.72.25看通不
    然后tnsping TEST_10.75.72.25看通不
      

  6.   


    C:\WINDOWS\system32\drivers\etc\hosts发上来看下
      

  7.   

    是window系统,需要关闭防火墙 或者开启shared socket参考
    window下如何开放Oracle的端口
      

  8.   


    127.0.0.1     localhost
    10.75.72.25   sansiro.域名
    10.75.5.100   域名不好意思,域名含有公司名字,用中文替代了
      

  9.   


    楼主把sqlnet.ora文件里的内容注释掉,在重启下lsnrctl,应该就可以:
    #SQLNET.AUTHENTICATION_SERVICES = (NTS) 
    Easy Connect指的是使用conn scott/tiger@hostname (or ip):port/global database name的方式连接数据库,这种方法不需要tnsnames.ora文件的任何内容.在sqlnet.ora中需要声明你使用的命名方法。需要注意的是default domain,如果你声明了,那么在tnsnames.ora中必须在net service name后面把域名附加上。这样才能保证你在conn scott/tiger@netsvname 时候能够成功。  
    楼主也可以不用这种方式连接数据库。
    set ORACLE_SID=SID
    sqlplus /nolog
    conn user/pwd;
    startup
      

  10.   


    sqlnet.ora文件决定找数据库服务器别名的方式
       
     默认的参数有
       NAMES.DEFAULT_DOMAIN = WORLD
       NAMES.DIRECTORY_PATH = (TNSNAMES, ONAMES, HOSTNAME)
       
    如果ORACLE客户端和服务器默认的域名不一样,需要用#号注释第一行
       #NAMES.DEFAULT_DOMAIN = WORLD
       使它不起作用。
       NAMES.DIRECTORY_PATH指定找服务器别名的顺序 (本地的tnsnames.ora文件, 命名服务器, 主机名方式) 
      

  11.   

    感谢大家的分析,我自己试出原因了。
    在系统重启后,如果先登VPN后起实例和监听的服务的话,就会出现这种始终连不上的情况。
    在系统重启后,如果先起实例和监听的服务,后登录VPN的话,就连接正常了。
    肯定是VPN捣鬼。这之前试过开启shared socket也不管用。SQLNET.AUTHENTICATION_SERVICES = (NTS)这句我没有注释