在 Oracle 10g 環境中,當主機名稱從 info 變更為 info-0073 後,Enterprise Manager (EM) Database Control 無法正常啟動。本文記錄完整的排查與修復過程,供遇到相同問題的 DBA 參考。
執行 emctl start dbconsole 時,首先提示 Environment variable Oracle_SID not defined,需先設定 ORACLE_SID:
C:\> set ORACLE_SID=WWMDB
C:\> emctl start dbconsole
隨後出現路徑錯誤:D:\Oracle\product\10.1.0\Db_1/info-0073_WWMDB not found。系統仍尋找舊主機名稱 info_WWMDB 的目錄。將目錄重命名為 info-0073_WWMDB 後再嘗試啟動,雖然進度推進,但服務啟動失敗:
Starting Oracle Enterprise Manager 10g Database Control ...The OracleDBConsolewwmdb service could not be started.
A service specific error occurred: 2.
嘗試修改以下關鍵設定檔中的主機名稱參考:
D:\Oracle\product\10.1.0\Db_1\info-0073_wwmdb\sysman\config\emd.propertiesD:\Oracle\product\10.1.0\Db_1\info-0073_wwmdb\sysman\config\emoms.propertiesD:\Oracle\product\10.1.0\Db_1\info-0073_wwmdb\sysman\emd\targets.xml需更新的關鍵參數包含:agentStateDir、chronosRoot、REPOSITORY_URL、EMD_URL、Oracle.sysman.emSDK.svlt.ConsoleServerHost、Oracle.sysman.eml.mntr.emdRepServer 以及連線描述符中的 HOST 參數。
修改完成後仍報錯,考量到需修改的設定檔眾多且易遺漏,決定改用 emca 重新配置服務。
執行 emca -r 進行重新配置,依提示輸入監聽埠號、資料庫 SID、服務名稱、郵件通知設定、dbsnmp、sysman、sys 密碼等資訊。配置過程中出現兩項前置檢查警告:
透過 SQL*Plus 修正參數:
SQL> ALTER SYSTEM SET shared_pool_size=80M SCOPE=BOTH;
SQL> ALTER SYSTEM SET job_queue_processes=10 SCOPE=BOTH;
修正後再次執行 emca -r,配置順利完成,輸出關鍵資訊:
信息: DBConsole 已成功啟動
信息: >>>>>>>>>>> Enterprise Manager URL 為 https://info-0073:5500/em <<<<<<<<<<
Enterprise Manager 配置已成功完成
修改主機名稱後,EM 相關設定檔散落於多個目錄,手動逐一修改極易遺漏。使用 emca -r 重新配置可一次性修正所有路徑、URL、服務註冊等資訊,並自動檢查必要的初始化參數,是最可靠、最省時的解決方案。