在一台windows 服务器上安装了Oracle em grid control 10.2.0.2, 使用已有的数据库作为资料库的。
oracle emgrid 的agent 软件安装在各个linux 服务器上,用于监控oracle 数据库和rac 系统。我安装的agent 版本是10.2.0.5 。
这个版本安装决定导致了我最后遇到一个大问题,后面会介绍到。
在使用浏览器登录oms 服务端时,主机那个项都是正常访问的,可以显示主机的相关信息,如内存,IO 等。
但访问到数据库目标时,输入sys 连接,则出错了。
检查日志文件D:OracleEMGridControloms10gsysmanlogemoms.log ,报错如下:
2010-05-24 14:06:09,531 [Thread-27] ERROR em.jobs remoteOp.2114 - DBVerify.remoteOp(): CommException: 出现内部错误
2010-05-24 14:06:09,531 [Thread-27] ERROR db.rac populateStatusPage.772 - RacState.populateStatusPage: result from version retrieval had errors.
2010-05-24 14:06:11,593 [EMUI_14_06_11_/console/rac/racState] ERROR db.rac onEndProcess.1069 - RacStateController.onEndProcess: hasErr = true, errType = 6, errMsg= 出现内部错误
2010-05-24 14:06:58,312 [MetricCollector:RACHOMETAB_THREAD600:60] ERROR rt.RacMetricCollectorTarget _getAllData.184 - oracle.sysman.emSDK.emd.comm.CommException: Connection timed out: connect
oracle.sysman.emSDK.emd.comm.CommException: Connection timed out: connect
at oracle.sysman.emSDK.emd.comm.EMDClient.getResponseForRequest(EMDClient.java:1541)
at oracle.sysman.emSDK.emd.comm.EMDClient.getMetrics(EMDClient.java:913)
at oracle.sysman.emo.rac.perform.metric.rt.RacHomeTab._getAllData(RacHomeTab.java:180)
at oracle.sysman.emo.rac.perform.metric.rt.RacHomeTab.getData(RacHomeTab.java:91)
at oracle.sysman.emo.perf.metric.eng.MetricCached.collectCachedData(MetricCached.java:404)
at oracle.sysman.emo.perf.metric.eng.MetricCollectorThread._collectCachedData(MetricCollectorThread.java:596)
at oracle.sysman.emo.perf.metric.eng.MetricCollectorThread.run(MetricCollectorThread.java:320)
at java.lang.Thread.run(Thread.java:534)
分析和解决过程
第一步,在agent 服务器上分析agent 是否能将监控信息上传到OMS 服务器上
/u01/oracle/home@webdg1=>servdb1$emctl upload
Oracle Enterprise Manager 10g Release 5 Grid Control 10.2.0.5.0.
Copyright (c) 1996, 2009 Oracle Corporation. All rights reserved.
---------------------------------------------------------------
EMD upload completed successfully
/u01/oracle/home@webdg1=>servdb1$
如果这一步不成功,就要找agent 的问题,或者网络的问题。
第二步,检查OMS 端的状态
D:OracleEMGridControloms10gopmnbin>opmnctl status
Processes in Instance: EnterpriseManager0.gridctrl01.htsc.com
-------------------+--------------------+---------+---------
ias-component | process-type | pid | status
-------------------+--------------------+---------+---------
DSA | DSA | N/A | Down
LogLoader | logloaderd | N/A | Down
dcm-daemon | dcm-daemon | N/A | Down
OC4J | home | 4576 | Alive
OC4J | OC4J_EMPROV | 4536 | Alive
OC4J | OC4J_EM | 5344 | Alive
HTTP_Server | HTTP_Server | 6080 | Alive
WebCache | WebCache | 3088 | Alive
WebCache | WebCacheAdmin | 2280 | Alive
显示都是正常的
修改了OMS 服务器的所在/etc/hosts 文件,将所有监控的agent 服务器的ip 主机名称信息都加入进去。
这里监控的服务器是两台数据库服务器,组成的是一个RAC 集群。因此,需要将VIP 信息一起加进去。
192.168.15.215 webdg1.htsc.com webdg1
192.168.15.217 webdg2.htsc.com webdg2
192.168.15.216 webdg1-vip.htsc.com webdg1-vip
192.168.15.218 webdg2-vip.htsc.com webdg2-vip
再配置时,报错成这样了。
oracle.sysman.emSDK.emd.comm.CommException: SAXParseException in parsing Response :: Computed columns can be specified only after other columns - SAXParseException in parsing Response :: Computed columns can be specified only after other columns
在metalink 文档Cannot Configure Grid Targets [ID 840367.1] 中得到这样解释:
Cause
The OMS 10.2.0.2 is too old and its not able to parse the response of the 10.2.0.5 agent
Solution
Upgrade the OMS to 10.2.0.4 or 10.2.0.5
这个环境中agent 端确实是10.2.0.5 ,而oms 端是10.2.0.2 。只能升级OMS 了。
更多Oracle相关信息见 专题页面