尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️
眾所周知,SAP系統是一個企業級的大數據系統。為了保證系統性能,通常數據庫(Database)都是單獨跑在一個物理host上,換句話說,這個物理host上只有數據庫,沒有SAP實例(SAPapplicationserver)–所謂的StandaloneDBServer。由於系統的需要,我們需要在SAPapplicationserver上來管理數據庫(DB13T-code),這個時候,是用SAPXPG_DBDEST_<SAPDBHOST>RFC和數據庫server通信,通過SAPXPG去執行DBserver上的DBTools(比如:BRtools,BRconnect,BRbackup等等)來獲取相應的數據信息。(我想,這也是為什麼,這個RFC名字叫SAPXPG_DBDEST_<SAPDBHOST>)
SAPXPG是SAPkernel下的一個獨立library。在SAP系統層面執行OS層面的命令行、腳本的時候(比如:SM49/SM69,DB13,Jobstep),其實是通過SAPXPG來做到的。關於SAPXPG的詳細信息,可以參看SCNWIKIhttps://wiki.scn.sap.com/wiki/x/9gpmG。
有時,大家發現DB13的job運行失敗,在SM59發現SAPXPG_DBDEST_<SAPDBHOST>RFC測試不通,例如:
如何分析和解決這類問題呢?
當我們要分析一個RFC通信問題的時候,首先,我們需要弄清楚:誰是RFCClient,誰是RFCserver,雙方的通信方式又是什麼。針對本文的SAPXPG_DBDEST_<SAPDBHOST>RFC:
RFCClient是運行SAPXPG_DBDEST_<SAPDBHOST>這個RFC的SAPapplicationserver的gateway。
RFCserver是數據庫所在host上的SAPXPG。
根據具體的配置不同,通信方式有以下2種:
-
OSrshorssh(<SID>admuserorSAPService<SID>):
client(APservergateway)<=>OSrshorsshunder<SID>admuserorSAPService<SID><=>SAPXPGontargetDBserver
-
GatewayconnecttoremoteGateway:
client(APservergateway)<=>remoteconnecttoDBserverstandalonegateway<=>SAPXPGontargetDBserver
關於通信方式,SAP推薦在DBserver上安裝一個StandaloneGateway,用「GatewayconnecttoremoteGateway」這種通信方式(把StandaloneGateway的host以及port設定到SAPXPG_DBDEST_<SAPDBHOST>RFC的”GatewayOptions”里面)。因為,Gateway到Gateway的通信是由SAP系統來做到的,安全、高效,不易出現問題。相反,系統默認的OSrshorssh的通信方式容易出現各種各樣的問題。本文將主要針對系統默認的OSrshorssh的這種通信方式來為大家介紹如何分析SAPXPG_DBDEST_<SAPDBHOST>RFC不通的問題。
SAPXPG_DBDEST_<SAPDBHOST>RFC是系統自動生成出來的,系統默認的設定如下(OSrshorssh的通信方式):
基於以上的分析,我們可以知道,針對SAPXPG_DBDEST_<SAPDBHOST>RFC不通的問題,根本原因有可能在:
-
RFCclient-SAPAPserverGateway
-
RFCserver-DBserver上的SAPXPG
-
雙方的通信
我們可以逐一排查,具體如下:
1,檢查OS層面的rshorssh是否配置完好
為了驗證OS層面的rshorssh是否配置完好,你可以SAPGUI登入到SAPApplicationServer,SE38->RSBDCOS0,執行下面的命令:
/usr/bin/ssh<SAPXPG_DBDEST_<SAPDBHOST>里面設定的DBhost>-l<SID>ADMhostname
如果正確返回DBhost名字,那麼意味著APserver到DBserver的OSrshorssh配置沒問題。否則,你需要聯繫OS管理員來確保<SID>admorSAPService<SID>user的OSrshorssh是沒有問題的。
2,檢查目標DBhost上的RFCserverSAPXPG
你可以SAPGUI登入到SAPApplicationServer,SE38->RSBDCOS0,執行下面的命令:
/usr/bin/ssh<SAPXPG_DBDEST_<SAPDBHOST>里面設定的DBhost>-l<SID>ADMsapxpg-s-stdoutnhostname
這個命令的意思是,用sapxpg去執行DBhost上的hostname命令。如果正確返回DBhost名字,那麼意味著DBserver上的SAPXPG本身沒有問題。如果沒有得到DBhost名字,請用<SID>ADM用戶登入到DBserver上,檢查SAPXPG是否可以在DBserver的任何地方都能被找的到。在極少數的情況下,有可能是SAPXPG本身有問題,這時,你可以考慮替換一下SAPXPG。
3,檢查RFCclient(運行SAPXPG_DBDEST_<SAPDBHOST>RFC的SAPapplicationserver的Gateway):
如果SM59SAPXPG_DBDEST_<SAPDBHOST>RFC的測試錯誤是”ERROR:Nostorageallocationavailable”的話,那麼問題發生的原因在於APserver上的gateway的secinfo的設定。你可以參看SAPNotes1408081,調整secinfo。
SAPAPserver的kernel>=7.40,那麼,有可能是,DBhost不認識APserver的gateway服務(sapgwXX)。你可以SAPGUI登入到SAPApplicationServer,SE38->RSBDCOS0,執行下面的命令:
/usr/bin/ssh<SAPXPG_DBDEST_<SAPDBHOST>里面設定的DBhost>-l<SID>ADMniping-v-H<SAPXPG_DBDEST_<SAPDBHOST>里面設定的DBhost>-SsapgwXX
如果無法解析sapgwXX服務,請把gateway服務(例:sapgw003300/tcp)設定到DBhost的”/etc/services”里面。詳情,請參看SAPNote2052365-RFCdestinationSAPXPG_DBDEST_<DB-HOST>nolongerworks。
4,檢查network(域名解析等等)
在很多情況下,RFC失敗是因為hostname域名解析出現了問題。我們都知道,網路通信是雙向的,也就是說,我們需要確保,APserver到DBserver的通信沒有問題,並且,DBserver到APserver的通信也沒有問題。通常,您可以這樣測試:
SAPGUI登入到SAPApplicationServer,SE38->RSBDCOS0,執行下面的命令:
niping-v-H<SAPXPG_DBDEST_<SAPDBHOST>里面設定的DBhost>
登入到<SAPXPG_DBDEST_<SAPDBHOST>里面設定的DBhost>OS層面來執行命令:
niping-v-H<RFCclientAPserverhost>
這2個命令都應該OK,否則,需要聯繫網路管理員,確保,APserver到DBserver的通信沒有問題,並且,DBserver到APserver的通信也沒有問題。
相關的SAPnote如下:
-
980266-RFCdestinationSAPXPG_DBDEST_<DB-HOST>doesnotwork
-
2052365-RFCdestinationSAPXPG_DBDEST_<DB-HOST>nolongerworks
-
2132535-RFCDestinationfails#Nostorageallocationavailable#
-
2137321-DB13jobsfailedduetoconnectedtowrongSAPXPG_DBDEST_<SAPDBHOST>orDBhos
SAP 實時產品支持模式
Expert Chat 服務來了!
SAP於最近正式推出了 Expert Chat 服務 (將鏈接復制至網頁瀏覽器訪問:https://support.sap.com/kb-incidents/chat.html)– 通過實時聊天功能,將 SAP 的客戶與技術支持專家緊密的連結在一起。詳情請參考【SAP 實時產品支持模式:Expert Chat 服務來了!】
SAP「周常福利」送不停~
每周都有5名幸運會員
不定期還有特別豪華大獎哦~
趕快長按識別二維碼
搶福利吧~
還有
SAP官方培訓
SAP熱門市場活動
最新SAP技術文檔
你想要的乾貨都在這里