今天在一个客户机上用netmanager配置完服务保存后,测试PASS。
但是用SQLPLUS访问这个服务的时候就提示TNS错误。
然后就将服务器上的TNSNAME.ORA里面复制了一段配置过来改改用,就能在SQLPLUS中访问了
很奇怪

解决方案 »

  1.   

    如何利用配置的网络服务名连接到数据库: 
    用sqlplus程序通过test网络服务名进行测试,如sqlplus system/manager@test。如果不能连接到数据库,则在tnsname.ora文件中的test网络服务名(net service)后面加上Oracle数据库的DB_Domain参数值,通过用sqlplus> show parameter db_domain命令察看。此处db_domain参数值为testserver.com,将其加到网络服务名后面,修改后的tnsname.ora中关于该网络服务名的内容为: 
    test.testserver.com = 
    (DESCRIPTION= 
    (ADDRESS_LIST= 
    (ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521)) 

    (CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com) 


    用sqlplus程序通过test.testserver.com网络服务名测试,如sqlplus system/[email protected]。 
      
    关于为什们在网络服务名后面加db_domain参数,需要了解sql*plus连接数据库的原理,解决12154常见故障中有详细的说明。
      

  2.   

    如果上面的招数还不奏效的话,只好用一下乾坤大挪移了。 
    将客户端的网络服务名部分 
    test.testserver.com = 
    (DESCRIPTION= 
    (ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521)) 

    (CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com) 


    拷贝到服务器的tnsnames.ora文件中。然后再服务器端用sqlplus system/[email protected]连接到数据库。 
    如果能连接成功,说明你的客户端与服务器端的网络有问题。 
      

  3.   

    netmanager配置完服务保存后,测试PASS
    将服务器上的TNSNAME.ORA里面复制了一段配置过来
    ======================================
    配置和服务器上的一样吗?
      

  4.   


    也特注意了一下CONNECT_DATA中的是SERVICE_NAME还是SERVICE_SID(数据库创建的时候全局名同SID是一样的)