求教:ORA-12154: TNS:could not resolve the connect identifie
在程序中访问数据库,该程序和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> 
-------------------------------------------------------------------------------- 
客户端在异机试一试,你的监听器不一定起来了,因为本地通信可能不会通过监听器连接(而使用进程间通信),你的sqlplus /nolog就是用进程间通信连接的。在主机执行$ORACLE_HOME/bin/lsnrctl status试一下,看看监听器到底起没起来. 
-------------------------------------------------------------------------------- 
监听器确定起来了,因为将这个访问数据库的程序放到另外一台主机中,该程序能正常的执行,并完成对数据库的操作。 
-------------------------------------------------------------------------------- 
如果是这样,说明listener没有问题,你同一台主机上运行程序有可能没有通过监听器连接,试一试将程序的oracle连接改成user/passwd,不使用tnsnames.ora解析。 
-------------------------------------------------------------------------------- 
解决方法: 
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!
这台机器开始报这个错误之前,程序都能正常的访问数据库,可是转眼之间,没有进行任何其他的操作,它就报错了。。。
既然程序以前能正常运行,那么,就说明程序本身应该没有问题吧
有没有在不修改程序的前提下解决问题的方法呢?
照着做了,重启了监听器,重启了数据库,但是,还是有这个问题。。。
QUOTE:原帖由 god_orz 于 2008-4-15 16:31 发表 
呼唤达人 
$tnsping <service_name >
and tell us the result
[oracle@localhost admin]$ tnsping FlowRT
TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production> 

 
 








