免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9196 | 回复: 9
打印 上一主题 下一主题

求教:ORA-12154: TNS:could not resolve the connect identifier specified [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-15 10:39 |只看该作者 |倒序浏览
在程序中访问数据库,该程序和oracle数据库在同一台主机(服务器)上,但是,运行程序时,报错:ORA-12154: TNS:could not resolve the connect identifier specified

oracle数据库服务器端:
# listener.ora Network Configuration File: /opt/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
  )
-------
# tnsnames.ora Network Configuration File: /opt/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
~ = ~
FLOWRT =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = IP地址1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = AAA)
    )
  )
-------

1,确定监听器已经起来
2,
[oracle@localhost admin]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Apr 15 10:37:03 2008
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
SQL> conn / as sysdba
Connected.
...

-------
此外,将这一个访问数据库的程序放到另外一台主机中,该程序能正常的执行,并完成对数据库的操作
-------

本人刚刚接触oracle,对这方面不是很懂,希望大家指导,谢谢

论坛徽章:
0
2 [报告]
发表于 2008-04-15 10:50 |只看该作者
客户端在异机试一试,你的监听器不一定起来了,因为本地通信可能不会通过监听器连接(而使用进程间通信),你的sqlplus /nolog就是用进程间通信连接的。在主机执行$ORACLE_HOME/bin/lsnrctl status试一下,看看监听器到底起没起来.

论坛徽章:
0
3 [报告]
发表于 2008-04-15 13:18 |只看该作者

回复 #2 nalan_yc 的帖子

监听器确定起来了,因为将这个访问数据库的程序放到另外一台主机中,该程序能正常的执行,并完成对数据库的操作。

论坛徽章:
0
4 [报告]
发表于 2008-04-15 15:52 |只看该作者
如果是这样,说明listener没有问题,你同一台主机上运行程序有可能没有通过监听器连接,试一试将程序的oracle连接改成user/passwd,不使用tnsnames.ora解析。

论坛徽章:
0
5 [报告]
发表于 2008-04-15 15:56 |只看该作者

回复 #1 god_orz 的帖子

解决方法:
1. 打开<OracleHome>/network/admin/listener.ora文件,找到:

   SID_LIST_LISTENER =
   (SID_LIST =
     (SID_DESC =
       (SID_NAME = PLSExtProc)
       (ORACLE_HOME = /opt/app/oracle/product/10.2.0/db_1/)
       (PROGRAM = extproc)
     )
   )
  2. 添加:
    (SID_DESC =
       (GLOBAL_DBNAME = ORACLE)
       (ORACLE_HOME = /opt/app/oracle/product/10.2.0/db_1/)  
       (SID_NAME = ORACLE)
      )
  3. 最后变成:
SID_LIST_LISTENER =
   (SID_LIST =
     (SID_DESC =
       (SID_NAME = PLSExtProc)
       (ORACLE_HOME = /opt/app/oracle/product/10.2.0/db_1/)
       (PROGRAM = extproc)
     )
     (SID_DESC =
       (GLOBAL_DBNAME = AAA)
       (ORACLE_HOME = /opt/app/oracle/product/10.2.0/db_1/)  
       (SID_NAME = AAA)
      )
   )
  4. 保存文件,重启服务中的TNSListener,OK!

论坛徽章:
0
6 [报告]
发表于 2008-04-15 16:12 |只看该作者

回复 #4 nalan_yc 的帖子

这台机器开始报这个错误之前,程序都能正常的访问数据库,可是转眼之间,没有进行任何其他的操作,它就报错了。。。

既然程序以前能正常运行,那么,就说明程序本身应该没有问题吧
有没有在不修改程序的前提下解决问题的方法呢?

论坛徽章:
0
7 [报告]
发表于 2008-04-15 16:13 |只看该作者

回复 #5 diyworld 的帖子

照着做了,重启了监听器,重启了数据库,但是,还是有这个问题。。。

论坛徽章:
0
8 [报告]
发表于 2008-04-15 16:31 |只看该作者
呼唤达人

[ 本帖最后由 god_orz 于 2008-4-15 16:45 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2008-04-15 17:10 |只看该作者
原帖由 god_orz 于 2008-4-15 16:31 发表
呼唤达人


$tnsping <service_name >

and tell us the result

论坛徽章:
0
10 [报告]
发表于 2008-04-15 17:17 |只看该作者

回复 #9 Chinese_Dragon 的帖子

[oracle@localhost admin]$ tnsping FlowRT

TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 15-APR-2008 17:17:29

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

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.52.200)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = FlowRT)))
OK (0 msec)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP