【茶包射手日記】加裝不同 Oracle Client 版本後 ODP.NET 程式異常

栏目: 数据库 · 发布时间: 5年前

内容简介:再遇到加裝 Oracle Client 其他版本後 ODP.NET 壞掉的案例,已不是第一次發生,但沒能歸納出明確規則,故留個記錄。問題主機是 Windows Server 2016,原本已經裝好 Oracle Client 11.2 及 12.1 的 32 位元版本。但因為上面有 SQL Server 需要連 Oracle Linked Server,故安裝 Oracle Client 12.1 x64 並重開機後,Oracle Linked Server 功能正確啟用。但不久後接到回報,該主機上跟 Or

再遇到加裝 Oracle Client 其他版本後 ODP.NET 壞掉的案例,已不是第一次發生,但沒能歸納出明確規則,故留個記錄。

問題主機是 Windows Server 2016,原本已經裝好 Oracle Client 11.2 及 12.1 的 32 位元版本。但因為上面有 SQL Server 需要連 Oracle Linked Server,故 需加裝 64 位元版 Oracle Provider for OLE DB

安裝 Oracle Client 12.1 x64 並重開機後,Oracle Linked Server 功能正確啟用。但不久後接到回報,該主機上跟 Oracle 查詢有關的網站全部壞光光!

早上還是好的,肯定剛才不知哪個渾球做了什麼把它搞壞! 嗯,真相只有一個,兇手就是 -- 我!

錯誤訊息並不一致,有趣的是連不依賴 Oracle Client 的Managed ODP.NET 也冒出 ORA-12154: TNS:could not resolve the connect identifier specified. 錯誤,Unmanaged ODP.NET 則是冒出 The provider is not compatible with the version of Oracle client

Managed ODP.NET 出現無法解析名稱應與 TNSNAMES.ORA 有關,檢查 TNS_ADMIN 環境變數與其所指位置,確定檔案存在無誤。(Managed ODP.NET TNSNAMES.ORA 尋找原則可參考介紹文章文末說明以及實務案例)

另我也用 ASP.NET /bin 組件載入跟你想的不一樣 文章裡 Inline ASPX 印出 typeof(Oracle.DataAccess.Client.OracleConnection).Assembly.CodeBase; 的技巧檢查網站,Unmanaged ODP.NET 版本是 11.2 32 位元版本沒錯,理論上不該發生 Oracle Client 版本不相容。

拳腳招式用盡,該放大絕了 - 祭出Process Monitor,茶包立刻現形!

【茶包射手日記】加裝不同 Oracle Client 版本後 ODP.NET 程式異常

如上圖所示,ODP.NET 試圖存取 oci.dll 及 OraOps11w.dll 遇上 ACCESS DENIED 吃了閉門羹,無法取得該版本所需的程式庫,是導致 The provider is not compatible with the version of Oracle client 錯誤的原因。而 Managed ODP.NET 無法解析連線主機,應該也是讀取 TNSNAMES.ORA 權限被拒造成。

對 product\xxx\client_1\ 資料夾套用 Authenticated User 讀取權限後問題排除(記得要套用覆寫每個檔案,只改資料夾有時無效,做完記得 IISRESET)。

而類似案例之前發生過:

由於網站設定並未變動,先前可以執行代表原本有開權限,為什麼安裝64位元Oracle Client會變更32位元Oracle Client目錄的權限,則是個謎。但在經驗中,因為Oracle Client目錄權限出錯已不是第一次,相信也不是最後一次。

重新下結論:

  1. 加裝 Oracle Client 時可能會更動原先安裝 Oracle Client 目錄的權限,把原本好好的網站或程式搞壞
  2. 可能出現的錯誤包含但不限於:
    • ORA-12154: TNS:could not resolve the connect identifier specified.
    • The provider is not compatible with the version of Oracle client
    • An attempt was made to load a program with an incorrect format
  3. 凡遇加裝 Oracle Client 害舊網站/程式壞掉, 先拆座墊 先檢查權限

Summary of errors you may ecounter after installing additional Oracle client and checking SOP.


以上所述就是小编给大家介绍的《【茶包射手日記】加裝不同 Oracle Client 版本後 ODP.NET 程式異常》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Understanding Computation

Understanding Computation

Tom Stuart / O'Reilly Media / 2013-6-3 / USD 39.99

Finally, you can learn computation theory and programming language design in an engaging, practical way. Understanding Computation explains theoretical computer science in a context you'll recognize, ......一起来看看 《Understanding Computation》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

随机密码生成器
随机密码生成器

多种字符组合密码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试