1. 程式人生 > >OracleDBconsoleorcl服務無法啟動的原因及解決思路

OracleDBconsoleorcl服務無法啟動的原因及解決思路

被這個OracleDBconsole服務無法啟動的問題折磨了兩個星期了,今天很幸運,在網上無意間看到了一位大俠的思路,雖然錯誤的情況並不完全相同,但他的思路完全可以搬過來用。
環境:Windows XP, 裝Oracle 11g,裝完資料庫軟體、新建一個數據庫(資料庫的SID為orcl20120825),但是無法進入網頁版的企業管理器(EM),提示是“403,伺服器拒絕了您的訪問請求”。因為資料庫的ID是orcl20120825,因此對應的Windows服務名為OracleDbConsoleorcl20120825,原因不多說了,想必遇到過這個問題的朋友都知道,就是這個服務沒有啟動,所以進不了企業管理器。嘗試啟動這個服務,提示“W

indows 不能在 本地計算機 啟動 OracleDBConsoleorcl。有關更多資訊,查閱系統事件日誌。如果這是非 Microsoft 服務,請與服務廠商聯絡,並參考特定服務錯誤程式碼 2
至於具體的原因,網上有很多人討論,大概是計算機名改變、IP地址更改等情況,就不分別討論了。具體的出錯原因,只有計算機自己才能回答,所以,還是先問cmd吧~
       那就在cmd中啟動企業管理器試試吧:
       1.C:\Documents and Settings\Administrator>emctl start dbconsole
        這是啟動控制檯的命令,它當然報錯:
        Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique name.

雖然並不十分清楚,但可以肯定的是,不能啟動的原因一定和ID、SID之類的變數有關,也許是資料庫的名稱,也許是計算機的名稱,也許是某個檔案的名稱。繼續~
       2.既然cmd說要給資料庫設定一個ORACLE_UNQNAME,於是在網上搜了一下,大概是這個命令:
         C:\Documents and Settings\Administrator>set ORACLE_UNQNAME=orcl20120825
         敲了回車沒反應,額,,,於是再敲個分號,,,
         C:\Documents and Settings\Administrator>;

         還是沒反應,,,算了,就當是已經設定過了吧,那麼再嘗試著啟動一下企業管理器:
         C:\Documents and Settings\Administrator>emctl start dbconsole
         繼續報錯,不過這次的內容具體一點了:
         OC4J Configuration issue. E:\app\Administrator\product\11.2.0\dbhome_1/oc4j/j2ee /OC4J_DBConsole_180.111.140.106_orcl20120825 not found.
         很顯然,是因為Oracle找不到提示的這個檔案或資料夾而報錯。那麼理所當然得,可以去提示中給出的目錄看一看,如下圖:



果然,在這個目錄下並沒有OC4J_DBConsole_180.111.140.106_orcl20120825這個資料夾或者檔案。但是,注意到該目錄下有一個和提示中的檔名非常相似的資料夾
OC4J_DBConsole_localhost_orcl20120825,只有中間的部分不同。到這一步,情況開始明朗了。
很顯然,180.111.140.106看上去是個外網地址,似乎是出現在動態分配IP的情況下,可以驗證一下,重新開一個cmd,>ipconfig,如下圖:



         果然,這是個動態分配的本機IP地址。而上文目錄中的OC4J_DBConsole_localhost_orcl20120825資料夾,中間的localhost也代表了本機,到這一步,基本可以得出EM不能啟動的原因了,大概是因為Oracle預設會用localhost去標識一些變數或檔案,但是在後來的某個操作中,因為電腦已經處在連上外網的狀態,因此有了一個動態的IP,於是Oracle改用這個動態IP去標識一些變數或者檔案,所以就造成了一些有關聯的檔案或者系統設定出現了檔名前後不一致的問題。
故障原因找到了,接下來開始解決。這裡就要借用那位大俠的思路了:
       1.根據以往在Windows下折騰的經驗,可以猜測OC4J_DBConsole_localhost_orcl20120825資料夾和OC4J_DBConsole_180.111.140.106_orcl20120825資料夾中的內容是一樣的,只是資料夾的名稱不同而已。那既然提示說要找這個名字的資料夾,那是不是可以直接把OC4J_DBConsole_localhost_orcl20120825資料夾重新命名,把它檔名中的localhost改成180.111.140.106呢?也許可以,但為了保險起見,還是先複製一份,再重新命名。如下圖:



於是,該目錄下就有了名為OC4J_DBConsole_180.111.140.106_orcl20120825的資料夾。接下來,在cmd中繼續執行上一次的命令,嘗試啟動EM

C:\Documents and Settings\Administrator>emctl start dbconsole
雖然還是報錯,並且和上一個報錯資訊很相似:
EM Configuration issue. E:\app\Administrator\product\11.2.0\dbhome_1/180.111.140.106_orcl20120825 not found.
同樣是提示在某路徑下找不到某檔案的提示,那麼重複上一步的做法,到這次提示的目錄中去看一下,如下圖:



同樣地,在這個目錄下果然沒有提示中的180.111.140.106_orcl20120825資料夾,但是又出現了一個檔名極其相似的資料夾:localhost_orcl20120825,很顯然也是前文所說的IP地址改變造成的檔案命名前後不一致的原因。複製上一步的思路,猜測180.111.140.106_orcl20120825資料夾中的內容和localhost_orcl20120825中的內容是一樣的,於是複製一個localhost_orcl20120825資料夾並重命名為180.111.140.106_orcl20120825,如下圖:



於是,該目錄下就有了名為180.111.140.106_orcl20120825的資料夾。接下來,在cmd中繼續執行上一次的命令,嘗試啟動EM:
C:\Documents and Settings\Administrator>emctl start dbconsole
雖然還是報錯,並且和上一個報錯資訊很相似:
Unable to determine local host vide E:\app\Administrator\product\11.2.0\dbhome_1/180.111.140.106_orcl20120825/sysman/config/emd.properties : No such file or directory
這次的提示更具體了,是在指定的目錄下找不到指定的檔案。那麼,重複上一步的做法,到提示中給出的目錄下去看一看,如下圖:



這次情況稍微有點小複雜,180.111.140.106_orcl20120825/sysman/目錄下只有一個opmn資料夾,並沒有提示中的config資料夾,也沒有和“config”名稱相似的資料夾,怎麼辦呢?
舉一反三!既然上文猜測180.111.140.106_orcl20120825資料夾和localhost_orcl20120825資料夾中的內容一致,那麼自然而然就可以想到回上一步的localhost_orcl20120825資料夾中去看一看:如下圖:



在localhost_orcl20120825中的sysman目錄下,可以看到其實裡面的內容和180.111.140.106_orcl20120825下sysman目錄中的內容並不相同,但兩者都有一個opmn資料夾,並且localhost_orcl20120825\sysman目錄下多了四個資料夾,並且其中一個名為config,而上一步報錯提示的路徑中就有config目錄,並且這個config資料夾中就有一個和上一步報錯提示中同名的emd.properties的檔案,於是類似地重複之前的思路,把localhost_orcl20120825\sysman目錄下的config、emd、log、recv複製到180.111.140.106_orcl20120825\sysman目錄下(因為opmn資料夾還不知道有什麼用處,所以先不動它)。這樣,180.111.140.106_orcl20120825\sysman下的目錄結構就和localhost_orcl20120825\sysman下的目錄結構相同了,如下圖:



接下來,在cmd中繼續執行上一次的命令,嘗試啟動EM:
C:\Documents and Settings\Administrator>emctl start dbconsole
額,,,貌似沒報錯:
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0
Copyright (c) 1996, 2010 Oracle Corporation.  All rights reserved.
https://localhost:1158/em/console/aboutApplication
Starting Oracle Enterprise Manager 11g Database Control ...OracleDBConsoleorcl20
120825 服務正在啟動 ...............................................

OracleDBConsoleorcl20120825 服務已經啟動成功。
啟動了!
再去Windows服務中看一下:



這個服務果然啟動了!
不放心,再用瀏覽器進EM試試:


↓↓↓

↓↓↓


至此,解決了一塊長久以來的心病!