TNS學習

li__hl8888發表於2016-06-13

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,沒有再進行深入的分析。

問題的答案在看文件的時候被揭曉。原來OracleTNSNAMES.ORA中對格式存在要求,換行的下一行如果和上一行存在父子關係,則不能頂頭,至少要保留一個空格,來提示Oracle這不是一個新的配置,而是上面配置的繼續。

根據文件的描述,對於子配置項,如果要單獨一行,那麼至少要在換行後保留一個空格,否則就應該與主配置同屬一行。

本以為發現的是Oracle的一個bug,沒想到卻是文件中明確說明的特性,這就是文件沒有看全就自以為是亂下判斷的結果,引以為戒。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8568259/viewspace-2119627/,如需轉載,請註明出處,否則將追究法律責任。

相關文章