【茶包射手日記】ORA-12514鬼打牆記

接獲報案,本機測試無誤的程式部署到測試台,Managed ODP.NET開啟連線時冒出ORA-12514錯誤,依照上回處理經驗,直覺又是IIS/machine.config相關的問題。

ORA-12514: TNS: 監聽器目前不知道連線描述區中要求的服務.
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

同事有提到錯誤代碼與文章所寫不同,12514 vs 12154,一時鬼迷心竅將二個錯誤代碼歸為同類,還是一頭栽進去調查為什麼讀不到web.config設定?(TNS名稱的解析順序可參考這裡

  <oracle.manageddataaccess.client>
    <version number="*">
      <dataSources>
        <dataSource alias="MYDB" descriptor="
                           (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)
                           (HOST=192.168.1.79)(PORT=1521))
                           (CONNECT_DATA=(SERVICE_NAME=MYDB))) " />
      </dataSources>
    </version>
  </oracle.manageddataaccess.client>

加上陰錯陽差一開始沒找對連線字串,刻意改壞設定也不會出錯讓人一頭霧水,東改西改鬼打牆半天,最後才發現是個低級錯誤:192.168.1.89被誤打成192.168.1.79! 理應來自複製貼上的設定值為什麼IP會打錯是個謎,但最讓我氣結的是-ORA-12514跟ORA-12154相似度高達「3A2B」,根本是完全不同的錯誤類型啊!

ORA-12154: TNS: 無法解析指定的連線ID
ORA-12154: TNS:could not resolve the connect identifier specified.

ORA-12514: TNS: 監聽器目前不知道連線描述區中要求的服務.
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

訊息本身說得清楚,web.config找不到alias或TNSNAMES.ORA會是ORA-12154,無法解析連線ID;而ORA-12514提到監聽器(Listener)不認得服務描述,明顯為連上ORACLE但找不到指定的服務名稱。

如果一開始有意識到ORA-12514與12154的明顯差異,仔細確認dataSource alias,就不會鬼打牆這麼久。悔不當初,特PO文以為警惕。

歡迎推文分享:
Published 10 June 2015 11:10 PM 由 Jeffrey
Filed under:
Views: 15,522



意見

# ChrisTorng said on 11 June, 2015 12:39 AM

「ORA-12514跟ORA-15154相似度」有沒有看到哪裡打錯了??? 哈哈哈...

# Jeffrey said on 11 June, 2015 04:19 AM

to ChrisTorng, 恭喜找到彩蛋!(抛彩帶)

已更正,感謝。無意間又再次展現本人捍衛「錯字天王」寶座的決心… orz

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<June 2015>
SunMonTueWedThuFriSat
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication