福爾壽司ForSource的辦案手札 Case 1. OraOps9.dll無法載入

  • 4248
  • 0
  • 2011-08-28

摘要:福爾壽司ForSource的辦案手札 Case 1. OraOsp.dll無法載入

現場:

AP環境:

  • VM架設的server 2k3 sp2
  • IIS 6.0
  • ODP .NET 9.2.0.4.01

DB環境

  • VM架設的server 2k3 sp2
  • Oracle 9i

案件說明:

AP主機上建立了一個網站,

在原本只裝ODP的情況下可以正常的登入(帳戶資料存在DB主機的Oracle上面)。

某天,系統的排程需要用到SQLLDR.EXE這支程式。

因此需要安裝Oracle Client ,但是安裝完成之後,網站就無法登入。

出現「無法載入DLL(OraOps9.dll)」錯誤訊息。

(圖片加工移除機敏資料)

線索:

  1. 無法載入DLL(OraOps9.dll)

辦案過程:

以前沒有使用Oracle的經驗,所以有問題當然都是直接拜google。

在網路上確是口徑一致的指向以下的方法。

  1. 以Administrator許可權登錄Windows
  2. 找到ORACLE_HOME目錄,例如 C:\Oracle\ora92
  3. 右鍵功能表,選擇 “屬性”
  4. 在“屬性”框上,點擊 “安全” 頁
  5. 在組和用戶名稱列表中點擊“Authenticated Users” 項
  6. 在該用戶的許可權列表中,將“讀取和運行”的選擇框的勾去掉
  7. 再次點擊“讀取和運行”的選擇框,將它的勾打上
  8. 點擊“高級”按鈕並在許可權專案中確定“Authenticated Users” 是否擁有“讀取並運行”許可權並應用於“該文件夾,及子文件夾和文件”. 如果不是,雙擊這項,確保許可權應用於 “該文件夾,及子文件夾和文件”. 該項非常重要你一定要核查.
  9. 一直點擊“確定” 按鈕,直到關閉所有視窗
  10. 建議重啟作業系統, 確保所有的修改生效.

看起來蠻多人遇到相同的問題,而且透過上述的方法得到了解決。

但是網路上也還有人表示按表操作卻仍然失敗的窘境(其實就是我= =)。

因為權限有問題的可能性比較高,仔細比較只裝ODP與安裝了Oracle Client的兩個ora92資料夾權限,

發現只裝ODP的資料夾權限如下。

比起同時安裝了Oracle Client與ODP的資料夾權限

多了好多的使用者,這時候不僅懷疑起網路的解法(錯誤的第一步)。(盛X如:殊不知~~這個決策,竟將偵辦方向帶進了五里霧中~~~)

陸續替ora92資料夾新增了ASP.NET Machine Account、NETWORK SERVICE、Users等帳戶,並開起相關權限(錯誤的第二步)。

結果,仍舊無法登入,甚至火大直接開起EveryOne完全控制的權限(錯誤的第三步),這是非常糟糕的作法,

但想說就全部都給你,看你還不載入嗎?

結果還真的依舊是「無法載入DLL(OraOps9.dll)」。= =

 

此時,甚至開始考慮不是權限的問題了(越陷越深)。

重新拜google大神,卻似乎沒有別的作法。大概卡了整兩個禮拜,

已經是半放棄的狀態下,重新開啟ora92的權限設定,不論怎麼設仍無法登入,忽然想起線索中提到的OraOps9.dll,

徹底搜尋了整部電腦,確定只有一個OraOps9.dll,但是就是無法載入,這樣看來還是權限問題了(網路上早就說過n遍了…)

 

開啟OraOps9.dll的權限,意外的竟然和心中預期的不同,完全沒有後來自已加的那些哩哩叩叩帳號…難道當初設定時沒有套用到子資料夾與檔案嗎?

開啟ora92資料夾的進階,發現之前都沒有勾選下圖紅框之處

以顯示於此套用到子物件的項目,取代所有子項物件上的權限項目

打勾,套用,出現以下設定安全性資料的畫面(帳號當然是網路上流傳的Authenticated Users)

設定完成後,重新開機,成功登入!!!破案!!!

心得:

  1. 盡信網路不如沒有網路,但是在懷疑之前先想清楚為什麼別人會成功?
  2. 只看父層的資料夾權限是不夠的,還要看看裡面的子資料夾與項目。
  3. 用VM,重置設定真的很方便,沒有VM的話這個問題我可能會重灌N遍測試機。
  4. 隨時記錄自己測試過的結果,不要犯同樣的錯。(這次測試我照表操課不下10次,若有記錄或許會及早更正測試方法與步驟,也興起開始寫blog的想法)

助手馬生筆2011.08.26

案外案:

安裝Oracle Client時發生錯誤,導致無法安裝。

解決方式:

        暫時停止IIS伺服器,在命令提示字元執行「iisreset  /stop」指令。

安裝完畢,記得執行「iisreset  /start」重新啟動。