【JAVA】PL/SQL连接:ORA-12154:TNS:无法解析指定的连接标识符

今天用pl/sql时出现一个问题,本是可以连接的一个数据库,在添加了一个数据库配置以后,就出现了“ORA-12154:TNS:无法解析指定的连接标识符”的问题。网上查了这个问题的解决办法。先贴一部分:
pl/sql 每当oracle client中service name发生变化,都会按照client安装目录下最新的tnsnames.ora,去作为它的读取文件;如果该文件在卸载oracle client后被手工删除或手工改动过后,未在oracle client中修改;则会报“ORA-12514:tns:无法解析指定的连接标识符”错误。

解决方法:

1、用tnsping 检测 plSQL登陆时database(数据库)别名是否可正确解析,如报“TNS-03505:无法解析名称”,则此database别名有冲突,需更改。

2、手工改动tnsnames.ora后,在oracle client中修改主机名(“对象”–“将数据库添加到树”–“从本地的……”,然后把错误主机名删除或从树中移除)

3、重新打开plSQL,用正确的database别名登陆,即恢复正常

4、如仍有问题,不登陆进入plSQL界面,进入”tools”–“Preferences”–“Oracle”–“Connection”,把”home”(oracle主目录名)里的数据清空,应用后,重新启动plSQL即可。

附录:在做以上更改后oracle自带的sqlPLUS,可能会出现不能正常登陆远程服务器的情况;因为其访问的是database下的tnsnames.ora文件,目录与client的不一样,默认为 X(盘符):\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora

解决方法:只需将client下tnsnames.ora中定义的主机字符串(service_name)的命令行复制到database 下的tnsnames.ora内,然后保存就可以了。

然而本人遇到的却不是这样的一个问题,本人添加的数据库别名与之前的并不冲突,在添加之前是这样:

<!-- 数据库1 -->
orcl = 
    (DESCRIPTION = 
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
        (CONNECT_DATA = 
            (SERVER = DEDICATED)
            (SERVICE_NAME = orcl)
        )
    )

添加了一个这样的配置

     <!-- 数据库1 -->
orcl = 
    (DESCRIPTION = 
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
        (CONNECT_DATA = 
            (SERVER = DEDICATED)
            (SERVICE_NAME = orcl)
        )
    )
     <!-- 新添数据库 -->
index123 = 
    (DESCRIPTION = 
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.222)(PORT = 1521))
        (CONNECT_DATA = 
            (SERVER = DEDICATED)
            (SERVICE_NAME = index123)
        )
    )

然而,就这样一个操作导致连接出现“ORA-12154:TNS:无法解析指定的连接标识符”错误。
经过多番试验检验,发现只要在orcl这个别名下,写一个空格+注释行

<!-- 数据库1 -->
orcl = 
    (DESCRIPTION = 
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
        (CONNECT_DATA = 
            (SERVER = DEDICATED)
            (SERVICE_NAME = orcl)
        )
    )
      <!--  任意内容 -->

就会报这个错,我分析应该是oracle在orcl这个别名配置下加空格加注释行的话,默认识别空格为配置体内容,于是会继续解析成特殊含义。当然,也不知道是不是软件版本bug,总之如遇到这种错误无法解决时可查看是否在orcl别名下有空格加注释行,如有,将其整行删去或者是删去注释行前的空格再试试。

p.s.:
不是说对于特定的这个orcl别名会出现这种情况,是对于所有要登录的别名配置下,只要有空格加注释行就会出现该错误。如果我在之前新添加的index123配置下也加注释行的话,是没法登陆成功的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值