pl/sql developer 登陆时 出现"ORA-12154: TNS:无法解析指定的连接标 ”!我在cmd里就能连接上。

在net manager里面测试也是连接成功!求助大侠,最好能说的具体点,我是新手

ORA-12154: TNS: 无法解析指定的连接标识符 问题

相信作为ORACLE数据库的开发人员没有少碰到“ORA-12154: TNS: 无法解析指定的连接标识符”,今天我也又碰到了类似的情况,将我的解决方法进行小结,希望能对碰到同样问题的友人们提供帮助。

问题场景描述:

服务器端版本:oracle 10.2.0.10

客户端版本:oracle 10.2.0.10

客户端开发工具:PL/SQL Developer

通过客户端来连接服务器,其主要文件就是通过客户端的tnsnames.ora来配置,在原文件的基础上增加:

SID别名 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SERVER_IP)(PORT = 1521))
)
(CONNECT_DATA =
(SID = SID_NAME)
)
)

例:

dev_db =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.168.10.5)(PORT = 1521))
)
(CONNECT_DATA =
(SID = ora10)
)
)

通过PL/SQL Developer连接dev_db时,报“ORA-12154: TNS: 无法解析指定的连接标识符”。(这个问题以前也碰到过,但解决方法不太一样,因具体的问题不太一样。)

我将自己知道的一些解决方法说一下:

1.先检查服务器端的监听服务是否打开,如果没有打开请启动其监听

 客户端:tnsping <tns_name>
服务器Linux下:

     #>lsnrctl status 查看监听状态

     #>lsnrctl start 启动监听

2.通过Sql Plus连接一下试试,如果Sql Plus连接能成功,那就说明你的tnsnames.ora内容有错误

我的问题就在别名dev_db前面有一个空格,这个可以通过文本编辑器(Edit Plus,UE等)来查看是否有空格,只要有空格那就肯定是不行的,而且如果那段内容是出现在文件的中间的话,将导致该文件里所有相应的连接别名都不成功,如果是在最后面就只有其自身连接别名不能成功,其他连接别名还是能连接成功。(注:我的tnsnames.ora配置了多个数据库实例的连接,所有才有多个连接别名。)

如:

空格dev_db =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.168.10.5)(PORT = 1521))
)
(CONNECT_DATA =
(SID = ora10)
)
)

3.如果确保你的tnsnames.ora内容没有错误,那请将%ORACLE_HOME%\product\10.2.0\db_1\NETWORK\ADMIN目录下的所有文件删了,然后重新连接,一般就能解决了。

说明一下:那个目录里的文件是在你建立连接的时候动态生成的,不要怕删了会有问题

4.进入PLSQL Developer的主界面,在登录界面选择取消即不登录进入主界面,然后选择菜单Tools(工具)-Preferences(首选项),在设置窗口中,选择Oracle-Connection(连接),对应设置窗口中,找到Oracle Home(Oracle主目录),选择你本地所安装客户端的版本,保存设置,然后重新启动PLSQL Developer,这时就可以正常登录了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-19
我也是用的PL/SQL ,你用什么连接数据库?我的是oracle,如果你也是把你的TNS COPY到这个文件下oracle\ora92\network\ADMIN,我的ORACLE9.0.追问

我就是连接oracle 我是10g。我没明白您说的是怎么copy

追答

那觉得是这个问题了,你把tnsnames.ora这个文件复制的admin这个文件下面就行了。tnsnames.ora这个文件就是连接服务器的地址 端口的文件
像这样orcl_md =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.6)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = orcl)
)
)

本回答被网友采纳
第2个回答  2012-03-27
你需要配置PLSQL 连接ORACLE 的OCI和ORACLE 主目录
在PL/SQL 里的工具-》首选项-》连接里配置
第3个回答  2012-03-19
1. A. 使用SID
a. 修改服务器上的listener.ora,增加SID项
即:在
SID_LIST_LISTENER =
(SID_LIST =
下,增加类似下面的内容:
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = C:\oracle\product\11.2.0\dbhome_1)
(ENVS = "EXTPROC_DLLS=ONLY:C:\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
b. 在客户端的tnsnames.ora中
orcl_md =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.6)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = orcl)
)
)

2. 使用PL/SQL Developer连接OracleX64版本:

•1. 下载32位Oracle InstantClient,并展开到某目录,例如C:\instantclient-basic-nt-11.2.0.2.0;
•2. 将系统的tnsnames.ora拷贝到该目录下;
•3. 在PLSQL Developer中设置Oracle_Home和OCI Library:
ToolsàPreferencesàOracleàConnection:

Oracle_Home: C:\instantclient-basic-nt-11.2.0.2.0

OCI Library: C:\instantclient-basic-nt-11.2.0.2.0\oci.dll
•4. 在PLSQL Developer目录下编辑如下bat文件,替换其快捷方式,启动PLSQL Developer:
@echo off
set path=C:\instantclient-basic-nt-11.2.0.2.0
set ORACLE_HOME=C:\instantclient-basic-nt-11.2.0.2.0
set TNS_ADMIN=C:\instantclient-basic-nt-11.2.0.2.0
set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
start plsqldev.exe
相似回答