ITPub博客

首页 > 数字化转型 > ERP > TNSNAMES配置中空格导致的bug(二)

TNSNAMES配置中空格导致的bug(二)

ERP 作者:dbhelper 时间:2015-01-15 15:37:09 0 删除 编辑

之前一直认为这是Oracle的一个bug,直到前一段时间通读网络服务参考手册时,才发现问题的真相。

TNSNAMES配置中空格导致的bug:http://yangtingkun.itpub.net/post/468/487506

[@more@]

当时测试发现,只要在SERVICE_NAME下面的一行缺少空格,就会导致错误的产生:

TEST08 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.13.229)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test08)
)
)

替换下划线的版本为:

TEST08 =
__(DESCRIPTION =
____(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.13.229)(PORT = 1521))
____(CONNECT_DATA =
______(SERVER = DEDICATED)
______(SERVICE_NAME = test08)
)
__)

后来发现,却是这种情况会引发TNSNAMES.ORA解析错误,但是如果这里添加了空格,而在其他位置删除空格,会引发同样的问题。不过由于一直把这个现象当做了BUG,没有再进行深入的分析。

问题的答案在看文档的时候被揭晓。原来Oracle的TNSNAMES.ORA中对格式存在要求,换行的下一行如果和上一行存在父子关系,则不能顶头,至少要保留一个空格,来提示Oracle这不是一个新的配置,而是上面配置的继续。

根据文档的描述,对于子配置项,如果要单独一行,那么至少要在换行后保留一个空格,否则就应该与主配置同属一行。

本以为发现的是Oracle的一个bug,没想到却是文档中明确说明的特性,这就是文档没有看全就自以为是乱下判断的结果,引以为戒。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8494287/viewspace-1402964/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2017-10-14

  • 博文量
    651
  • 访问量
    392225