各位高手,小弟服务器为2003,用oracle9i数据库,本来好好的,小弟昨天添加了一个监听listener1,结果提示冲突,等小弟启动listener1监听后发现原来的数据库监听不到了,提示“监听进程不能解析在连接描述符中给出的SERVICE_NAME问题”我把所有监听都删除了重新配置也不行,小弟研究了一下午也没有解决问题,但是通过这个监听监听其他服务器上的数据库可以成功,我对比了一下,都没有什么问题,请教高手我该怎么办,小弟拜谢~~现监听为listener3# LISTENER.ORA Network Configuration File: C:\oracle\ora90\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.LISTENER3 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
  )SID_LIST_LISTENER3 =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oracle\ora90)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = ZHLDQZB)
      (ORACLE_HOME = C:\oracle\ora90)
      (SID_NAME = ZHLDQZB)
    )
  )tnsnames.ora文件如下# TNSNAMES.ORA Network Configuration File: C:\oracle\ora90\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.BJZJW_218.8.245.6 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 218.8.245.6)(PORT = 1522))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = BJZJW)
    )
  )ZHLDQZB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ZHLDQZB)
    )
  )
现在BJZJW可以连通,但是ZHLDQZB就连不同了,求高手给看看,谢谢了

解决方案 »

  1.   

    自己顶一下,这么大的csdn这个问题没有高手知道?
      

  2.   

    看看lsnrctl services命令的输出是什么?另外给你一个listener.ora参考:LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100 )(PORT = 1521))
          )
          (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
          )
        )
      )SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = /oracle/app/oracle/product/9.2.0)
          (PROGRAM = extproc)
        )
        (SID_DESC =
          (GLOBAL_DBNAME = bsnbill)
          (ORACLE_HOME = /oracle/app/oracle/product/9.2.0)
          (SID_NAME = app)
        )
      )
      

  3.   

    1,你的服务器的IP地址是:127.0.0.1吗?请确认。2,如果还是不行的话,将HOST改为服务器的名称,试一下。当然,也要修改TNSNAMES.ORA文件中的相应的内容。
      

  4.   


    这里你指的是listener没有起来,还是值客户端连接的时候报错。
    如果是后者
    你可以tsnping ZHLDQZB 看能不能ping通,不过根据的你错误信息,感觉是service_name不能解析,也就是说,可能是实例没有成功启动,你检查一下数据库实例的服务是不是成功起来了。
    ==================================================================================== 
    Inthirties关注Oracle数据库 优化,安全,备份,恢复,迁移 如果你需要帮助或想和我一起学习的请联系 
    联系方式QQ:370140387 
    QQ群:  85837884(注明:数据库) 
    电子邮件:[email protected] 
    网站: http://www.inthirties.com 
      

  5.   

    有的时候如果在netca中配置的命名中使用重复的sid可能会出现这样的问题,这是可以在tnsnames.ora中的服务名改掉,例如:出现两个orcl
    orcl = 
      (DESCRIPTION = 
        (ADDRESS_LIST = 
          (ADDRESS = (PROTOCOL = TCP)(HOST = x.x.x.x)(PORT = 1521)) 
        ) 
        (CONNECT_DATA = 
          (SERVICE_NAME = orcl) 
        ) 
      ) 
    这是可以将一个的名称修改,例如将其中一个改为:
    orcl = 
      (DESCRIPTION = 
        (ADDRESS_LIST = 
          (ADDRESS = (PROTOCOL = TCP)(HOST = x.x.x.x)(PORT = 1521)) 
        ) 
        (CONNECT_DATA = 
          (SERVICE_NAME = orcl) 
        ) 
      ) 
    只要不改变最外层括号里面的内容就不影响连接。
    注意:修改后是要重新启动客户端才可以看到更改后的效果。例如在pl developer中,要重新启动程序才能看到改动后的效果。
    =====================================================================================================
    对于你说的问题,可以先改正名称,然后在netca或者oem中测试下连接。
    如果还不行的话,可以现在tnsnames中删除后添加的tnsname,再测试原有的连接。如果连接成功的话,再按照上面的方法添加新的命名。
      

  6.   


    有些概念你需要整理一下Listener是服务器端的,默认是1521,可以配置多个Listener,但是端口要分开。
    Tns是客户端用来描述远程服务器连接的配置,这个是客户端需要用的。你可以试着把所有的lisener都去掉,注意是listener,不是tns,然后重启监听服务,在net manager里先删除掉有问题的连接,然后新建一个,新建的最后一步就是test test OK就成功了