1、系統環境
OS:Windows Server 2008 R2
RDBMS:Oracle 11g R2(Server、Client同時存在)
BI:SAP Business Objects 4.2
2、問題描述
測試環境下BO系統安裝完畢,可以正常運行服務,登錄系統界面做一些簡單報表和ETL的操作。
但在一次工作需要重啟了服務器之后發現,CCM中央配置管理中的三項服務(1.Appache Tomcat;2.Server Intelligence Agent、3.World Wide Web Publish Services)可以正常啟動,但是無法登錄到CMS進行管理,也無法登錄BI Platform,如下圖:
3、解決步驟
(1)查看BO錯誤信息文檔(sbo42_error_messages_zh_CN.pdf)
一開始沒有這個文檔,首先按照以往解決BO錯誤信息問題的經驗,在Google上搜索錯誤信息關鍵,可以找到SAP提供的該文檔。
搜索界面上提示的錯誤信息:FWM 20031,如下圖:
提示需要參見error_cms<port>.log文件。
(2)查看error_log<port>.log錯誤日志文件
因為我這個BO系統的CMS端口默認的是6400,所以應該查找error_cms6400.log
在BO <INSTALLER>目錄下搜索”error_cms6400.log”或直接到
” D:\BI\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\logging”目錄下查找該日志文件,如下圖:
打開后,發現是由於【CMS:無法連接到 CMS 系統數據庫“WHNG”。原因:ORA-12154: TNS:could not resolve the connect identifier specified】,如下圖:
發現問題是由於oracle數據庫連接的問題導致的。
(3)查找Oracle錯誤:ora-12154
首先檢查操作系統的oracle環境,發現有一個oracle_server,還有一個oracle_client。按照以往經驗,oracle服務端和客戶端同時存在的情況很容易出現因為TNS配置指向混亂導致的無法連接錯誤。我們在cmd里使用【tnsping WHGN】查看當前系統連接的WHNG是由哪一個端配置的TNS,如下圖:
可以看到當前的WHNG連接是由oracle_client端配置的,oracle_client端是32位程序。
但是,SAP BO4.2是64位程序,不會去讀取32位的oracle_client配置的TNS。顯然是因為oracle_server64端的TNS配置出了問題。
(4)查看oracle_server的NetManager或者dbhome_1下的TNSlistener文件
發現oracle_server的TNS配置文件中,缺少”WHNG”。如下圖:
接下來就在oracle_server的TNS配置中增加一個”WHNG”測試連接並保存,如下圖:
在這里有一個知識點擴展
網上有人說ora-12154問題跟oracle服務端與客戶端的安裝順序有關,如果先安裝客戶端后安裝服務端就可能會出現這個問題,本質原因是oracle的安裝過程中,會在Windows系統環境變量Path中添加<oracle_home\bin>路徑。因為安裝順序的不同,填入Path中的<oracle_home\bin>順序也會不同,其他應用程序在調用oracle的TNS時,會優先選擇Path中第一個路徑。所以解決這個問題的方式也可以是調換系統環境變量Path中oracle客戶端與服務端的<oracle_home\bin>路徑的順序。但是此方法不能解決我們這篇文章中遇到的BO無法登錄的問題,因為BO42只認64位的oracle。
(5)重啟CCM三項服務
回到正題,打開CCM中央配置管理,重新啟動三項服務,如下圖:
啟動完成后,可以登錄到CMS管理服務,也可以正常登錄BIPlatform啟動板,如下圖:
注意:上圖中的狀態大部分是”已停止”,等待系統自啟動一段時間后,刷新一下即可正常為”運行中”。