ORA 12154 連線串引起的鬧心的小問題總結

2021-07-22 01:55:54 字數 1331 閱讀 1619

一、問題

某個應用系統需要從l伺服器連線到oracle資料庫r上採集資料,我將連線串新增至$oracle_home/network/admin/tnsnames.ora檔案中,但是發現應用連線不到資料庫。這時我使用sqlplus連線資料庫,發現報錯ora-12154:無法解析指定的連線識別符號,又用tnsping 連線串名,發現報錯tns-03505: failed to resolve name。此時就懷疑是連線串寫法有誤,通過各種比對,又在網上找解決方案一直無法解決。後來師傅將這個問題解決了,而且這個問題是網上沒有找到過的,因此在這裡將問題和解決方案與大家分享下。

二、思路和解決方案

1. 發現應用連線不到資料庫後,先在l伺服器上使用sqlplus登入資料庫。

# su - oracle

$ sqlplus /nolog

sql> conn system/password@x86_rcount_1523_p4

輸入登入命令後,報錯ora-12154:無法解析指定的連線識別符號。此時可以確定問題是在連線串的寫法上。

2.tnsping r伺服器的vip,是通的。基本可以確定網路沒有問題。

3.我又使用自己的電腦,將連線串新增至$oracle_home/network/admin/tnsnames.ora,再通過sqlplus居然能夠登入!

此時可以確定:r伺服器的監聽沒有問題、l至r的網路沒有問題、連線串本身沒有問題。那問題出在了**?

根據本次問題和之前的問題,我總結成3點。

1.連線串從windows系統拷貝至linux/unix系統時,引入了不可見的空格、tab符等。連線串本身是對格式、縮排有要求的,因此可能導致連線串不可用。此問題不常見,也很好解決。

2.密碼中含有了@字樣。

例如:conn  system/pwd@123@

x86_rcount_1523_p4

第乙個@是密碼中的字元,第二個@是表示連線串名。如果這麼寫的話,程式會誤認為第乙個@後的是連線串名,導致無法正確連線遠端資料庫。解決辦法一是避免密碼中使用@;二是轉義,可以用這種方法登入:conn  system/\"pwd@123\"@x86_rcount_1523,p4 使用\"  \"將密碼包含進去避免程式解析出現錯誤。

這種問題也比較常見,值得注意!

3.上乙個連線串的縮排格式錯誤!這個問題也是我這次遇到的。我將之前所有遇到的問題都排查了一遍,也沒有發現有什麼問題。

後來得知,是我這個連線串的上乙個連線串就出現了問題1,而且那個連線串也沒有應用使用,因此它的問題就一直在那裡沒有人處理。但是上乙個連線串出現這個問題會影響到我這個連線串,將上乙個連線串格式改好後,馬上就可以使用了!



ora 12154 無法解析指定的連線識別符號

ora 12154 無法解析指定的連線識別符號 經過排查是因為 tnsnames.ora 配置前 多了乙個空格 空格orcl 202.116.0.0 description address list address protocol tcp host 202.116.0.0 port 1521 co...

ORA 12154 無法解析指定的連線識別符號

今天在配置oracle時發現乙個問題,在tnsnames.ora中新增乙個遠端連線資料庫時,所有配置都正確但老提示 ora 12154 無法解析指定的連線識別符號 後來發現引起錯誤的竟然是乙個空格符!orcl description address protocol tcp host renpc p...

ORA 06413連線未開啟的錯誤的原因和解決方法

有個 程式,在64位機子上可以連線mssql,連不了oracle。把程式放在32位的機子上,mssql和oracle都可以連線。那麼問題來了。詳細描述 啟動程式,查詢的時候,程式報錯ora 06413連線未打。遇到這樣的提示,都無語了。講了等於什麼都沒講。解決過程 省略,很操蛋的我沒能解決。最後請求...