您的位置:首页 > 数据库 > Oracle

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

2014-11-13 14:41 162 查看
子云:”吾日三省吾身“,我的思想导师智立方杨石头也说过,”每天要有十个思想“。

今天遇到一个问题,在浪费了一上午加下午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的区别上,该问题留待后期考证。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: