关于Oracle能报ora-12514的一些想法

   子云:”吾日三省吾身“,我的思想导师智立方杨石头也说过,”每天要有十个思想“。

   今天遇到一个问题,在浪费了一上午加下午1小时的时间之后,问题得以解决,但是仍不甚解,先记下,之后再进行相应的研究,也请各大神能给于建议。

   问题出处是这样的,系统分为两部分,其中一部分位于远程数据库中。今天发现远程数据库中原本应该存在的一张表无法找到,经过询问,得知,数据库迁移了,迁移前的地址为:jdbc:oracle:thin:@10.1.5.2:1521:orcl,当时告知我迁移后地址10.1.5.7,SID=DEVEL,使用pl/sql dev连接地址设置为了10.1.5.7:1521/DEVEL,无法连接,报ora_12514无法解析标识符,按照常理来说,按上面填写的话,就算没有配置tnsnames.ora也是可以登录的,但是最后得出的结论是不能登录,但是例如10.1.5.2:1521:orcl这样的却可以登录,包括本机Oracle的也是可以,按照网上的说法也修改过很多次(附带说一句,个人使用的是Oracle简易版服务器,没有Net Manager),使用tnsping检查过,服务器是开启的,使用tnsping 10.1.5.7:1521/DEVEL通过,但是就是无法使用pl/sql dev进行连接,报无法解析标识符。

   之后开始对tnsnames.ora进行配置,配置内容如下:

ORCL =
  (DESCRIPTION =
(ADDRESS_LIST=
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
  
devel=
  (DESCRIPTION =
(ADDRESS_LIST=
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.5.7)(PORT = 1521))
)
    (CONNECT_DATA =
      (SERVICE_NAME = devel)
    )
  )

   使用10.1.5.7:1521/devel依然显示无法解析标识符,使用devel也显示无法解析标识符。

   此时思考陷入僵局,网上查找的结果,大部分是更改listener.ora、sqlnet.ora和tnsnames.ora,但是没有多少可取性。

   无意中想到之前曾经报过一个无法解析service_name的错,遂将service_name改为server_name,依然无效。

   最后,看到一个论坛中问及到在CONNECT_DATA中service_name和sid以及sid_name的不同,虽然下面没有结果,但是本着瞎猫碰到死耗子的想法,将tnsnames.ora改成下面的样子:

ORCL =
  (DESCRIPTION =
(ADDRESS_LIST=
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
  
devel=
  (DESCRIPTION =
(ADDRESS_LIST=
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.5.7)(PORT = 1521))
)
    (CONNECT_DATA =
      (SID = devel)
    )
  )

   可以登陆了,皆大欢喜,可以进行远程库的操作了。

   因为目前有事做,没有对其原因进行深入的探究,个人思想应该是在建库时设置的各项参数不一致,因为个人之前创建库时能使用相同名称的地方坚决使用相同的名称,所以一直没有出现过这种为,外加上pl/sql dev连接的方式太奇特,公司其他人都不使用pl/sql dev,所以没有都可以顺利的连接,问题是出在SID和SERVICE_NAME的区别上,该问题留待后期考证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值