Orale10g OEM Grid Control是Oracle公司提供的一种企业级数据库(数据库节点数在几十台以上的规模)部署,管理和监控的解决方案,较之10g之前的oem有了本质的区别,它基本上重写了所有的代码,变成了一种基于web的架构,使用户无需再在客户机上安装笨重的java
控制台了。最近由于笔者负责维护的数据库数据增长到接近500台,因此在管理上采用了企业级的Oracle10g oem grid control来进行日常的管理和维护。在使用过程中发现它的功能比想象中强大的多,管理的集成性作的也非常好,以下是笔者在实际使用中积累的文档和一些心得体会。
一 oem10g grid control 应用篇:部署
1: 相关软件的获得
如果作为学习用途,Oem10g grid control 可以从oracle官方网站上直接免费下载。
1)下载oem10g grid control软件,当前版本是10.2.0.1.0
2)下载agent软件(对于同一个平台的agent软件已经包含在oem里了,对于不适一种平台的os,需要安装适合该平台的agent
.
2: 创建oracle的环境
这个可以参考网上的Oracle安装的文档,基本上就是创建一个Oracle用户,一个dba组,配置一下oracle用户的 环境变量.bash_profile),修改一下内核参数(主要是起用大内存等,也可以随便在网上找到,这些不做为讨论的内容)。
3:安装
解开下载的文件包,启用图形界面,进入安装界面,其中需要注意的是它会提示你oem的资料库是创建在一个现有的数据库中还是新建个数据库,这个按照你的情况来选择,如果使用现在的数据库,它就会提示你连接到现在的数据库中,然后创建一大堆东西-_-|.我们采用的是创建一个新的数据库,以便于管理,然后一路Next,
最后创建成功。
这里没有太大的问题,如果你对这些不熟悉,建议你先练习一下在linux下安装数据库,基本上是一样的,所以不做太多讨论。
4:收尾
程序提示Oem连接方式,就是下面这样。http://oem_hostname:4889/em
你可以打开一个浏览器,输入这个地址,会提示你登录信息,登陆用户是在创建oem数据库时指定,用户名是sysman,记住这个用户,在oem里他就是dba
角色。
登陆成功后,恭喜你,你的oem server端安装成功了。注意,在安装oem过程中,它会自动在本地装一个agent,所以对于本机,你可以省事了。
ok,到现在为止,我们安装好了服务器端的软件,也就是说oem的核心部分已经安装好了,如果你只有一台数据库服务器,那你的工作基本上完成了,否则的话你要在其他所有的节点上部署agent,以便于oem进行管理。
5:10g oem grid control 架构
在部署agent之前有必要了解一下oem10g grid control的架构,以便于对它有更好的理解。
10g oem是一个基于web的管理架构,这和10g之前的笨重的java客户端有很大的区别。我们可以从2方面来研究它的架构,一个是管理的架构,一个是后台数据采集的架构。
1) 10g oem管理的架构:
管理者(或者使用者)不需要再自己的机器上安装任何软件,只需要一个浏览器就可以搞定所有的工作。使用者只需要在浏览器里输入如下的地址,就可以进入oem,进行数据库管理。
http://oem_hostname:4889/em
我们可以看到首先我们需要连接到oracle的一个中间层,称作
Oracle application server,通过它再登陆到oem上,然后进行数据库的监控,管理和维护。所以中间层的后台是一个数据库,也就是我们在创建oem时创建的数据库,所有Oem管理的数据库信息,包括登陆信息都保存在这个数据库中。
2)后台数据采集的架构:
oem 收集管理数据库信息的方法是在被管理的节点上部署它的代理软件(agent),通过代理软件来收集本机的所有信息,以xml的信息存储到本地,再通过数据上载的进程,将xml文件上载到oem
server机器上,server端的程序再将这些xml信息写入到oem数据库里。这些xml文件也是通过http方式发给Oem服务器的app
server,再通过它转给oem service.
弄清楚了Oem架构这后,我们接着往下进行,就是在需要管理的机器上部署10g oem agent.
二 oem10g grid control 应用篇 -部署
oracle为agent部署提供了4种方案.
1:直接在需要部署的节点上安装agent软件
2:脚本安装
3:克隆
4:直接在oem界面上进行批量部署。
下面对每一种安装方案作具体的描述,读者可以根据自己的实际情况选择安装。
1:通过agent软件安装
这种方法比较传统和直观,就是在需要部署的节点上直接在本地安装agent软件,安装成功后通过在配置文件中指定一个oms地址来保证agent和oms的正确通讯。
另外一种需要这种安装方式的是当这个节点和oms使用的不是一种OS平台的情况下,必须要使用这种方式,这个需要用户自己到Oracle网站上下载适于本平台的agent软件,但这并不会影响oms的管理。
由于这种安装比较简单,所以在这里不作过多的解释。
2:基于脚本的部署。
在oem10g的体系中对安全的要求比较高,所以在文件传递上也使用了hhtps的加密协议。在机器的访问上Oracle采用的是ssh方式访问,所以在oem体系中,机器上启用ssh是必须的,至于ssh的启用方法不在本文档的讨论之列。
首先要在oms端运行以下命令,以便于确保数据通过ssh方式在server端和client段进行传递。
OMS_HOME/sysman/prov/resources/scripts/sshUserSetup.sh
具体的命令如下:
sshUserSetup.sh -hosts "host1 host2" -user sjohn
其中-hosts是你要部署agent的机器的名称,如果此处你写hostname,那么你需要把hostname和机器的Ip对应信息写到oms机器的/etc/hosts上,否则可能无法解析hostname。这里可以写很多个需要部署的hosts的名字。
-user是登录到该机器的用户名,密码则在运行过程中输入。
在各个过程中,该脚本首先测试到远程机器的可用性,使用ping的命令,然后使用ssh命令进行登录验证,确保ssh可用。
以上工作完成后就可以进行部署了,oracle文档上还有几个步骤,我觉得可以省略,反正我没用到。
下面那一台机器举例进行agent部署。
a:用oracle用户登录需要部署agent的机器,在oracle用户默认路径下编辑c shell profile:./bashrc
在最后加入:
set TZ=PRC
设置时区,保存退出。
source ./bashrc 使环境变量生效。
注:这个操作是设置agent host的时区time zone,是agent和oms数据传递时必需的,不能忽略。
b:首先用oracle用户在ORACLE_HOME/下创建一个目录,一般是OracleHomes,
c:使用ftp,或者http,scp等方法,从Oms机器上下载安装脚本,该安装脚本路径如下:
$ORACLE_HOME/OracleHomes/oms10g/sysman/agent_download/linux/agent_download.linux
d:在需要部署agent的机器上,首先给该脚本可执行的权限。
e:运行安装脚本:
./agent_download.linux -b /home/oracle/OracleHomes
其中-b参数指定agent安装的路径。
中间不需要交互,Oracle使用的是silent方式的安装。
安装成功或者失败都有日志.
3: clone 方式部署agent。
这个比较简单。
首先需要有一个已经装好的可以正常运行的agent节点,然后将这个节点下agent/目录下所有的文件打一个tar,传到需要部署的节点上,解tar,确定目录正确。
然后运行emca -f 重新配置agent。
检查agent是否运行正常。
4:通过oem进行agent部署。
这个部署是通过oem的web界面进行配置,适合做企业级的大规模的部署。
做这个的前提是oms已经安装,并且可以正常访问,oms的安装和访问前便已经提到了。
步骤如下:
1:登陆oms。
2:选择部署(deplay)签,选择安装(fresh install).
3:进入安装界面,首先和安装路径,输入你agent想要的安装路径。然后选择你的agent的运行平台,这种部署,我发现这中部署agent的平台只能和oms相同的平台,其他的平台需要到
Oracle的官方网站上下载相应平台的agent软件进行安装。
4:Host栏,输入需要部署的host的Ip,或者hostname,如果中间用逗号分隔。如果输入的是hostname,需要保证oms机器可以通过hostname解析出Ip地址,可以通过修改/ect/hosts文件来达到hostname和ip的对应。
5:输入一个操作系统的用户名和密码,基本上就是你的oracle用户和密码。
6:输入Oms的安全口令,随便输一个,自己记住就可以了。
其他的基本上都可以不添,记住最后运行完之后执行一个agent/下的root.sh脚本就可以了。
7:看一下,运行结果,对于运行失败的节点,要看相应的安装日志。
OEM的部署基本上就是这样,上面说到的只是方法,我们在安装过程中出现了很多错误,也察看了很多文档,下面会对这些错误作一些解释和讨论。
三 oem10g grid control 应用之总结
前面已经介绍了Oms和agent的部署方法,这一部分笔者准备把使用10g oem grid control 遇到的问题和使用的心得汇总一下。
一些比较重要的路径和文件
Oms server端和agent端的目录结构基本上相似:区别在于oms端路径的最上层叫oms10g,而agent端的最上层的路径叫agent10g.下面的结构基本上相似,下面说一下几个比较重要的路径和文件。
1: oms10g/bin 和agent10g/bin分别存放了Oms和agent各自的可执行文件,其中emctl文件时用来管理oms或agent的命令,前面说过,由于在
oms server端,也同时安装了agent,所以在oms server上运行emctl命令时要特别主要,需要进入到各自的bin./下面运行,否则可能会出错。
比如想启动oms,可以进入到oms10g/bin 下执行:
./emctl start oms 这个命令会同时启动其他oms需要的服务,比如http server。
具体的所有用法可以通过敲入:./emctl 回车就可以看到。
对于agent的管理,须要进入到agent10g/bin下,以下是一些有用的命令:
./emctl start agent 启动agent service
./emctl stop agent 停止agent service
./emctl status agent 察看agent的运行情况,在出现的信息当中,有一个信息比较重要,last successfully
upload time,如果值为null,说明没有数据上传,需要检查一下相关的配置是否正确。或者直接发出:./emctl upload看看信息。
oms 和agent的错误信息都存放在:oms10g(agent10g)/sysman/log
我在安装的过程中出现过很多次agent无法upload的情况,原因大多是本地的TZ变量没有设置正确。TZ就是time zone时区,是oem10g中比较重要的一个变量,它要求agent节点上必须设置时区变量,并且时区变量的值需要符合oracle要求的时区变量值,
这个值了一在agent10g/sysman/admin/emd/supportedtz.lst文件中找到。设置TZ的方法在部署篇里已经讲过了。
oem10g的原理和工作方式
oem10g的agent端的数据收集全部通过perl脚本来完成。扩展名为:*.pl,这些脚本可以在agent10g/sysman/admin/scripts/下找到。
agent 程序首先会把采集到的信息写到本地的xml文件当中,然后再将该文件upload到oms端去,oms service再将xml文件写入到oms自己的repository库里。刚才我们说的./emctl
upload其实就是手工上载本地的xml文件。这些生成的文件可以在:agent10g/sysman/admin/upload下找到。
agent程序的发现方式:
当agent 部署到一个节点上时,他首先搜索$ORACLE_HOME/oraInventory下安装的所有oracle产品。以便确定需要收集那些产品的信息,比
如他只发现了一个数据库产品,他们它就会只运行收集数据库和主机信息的脚本。对于一个节点来说,agent确定需要收集那些内容的信息写在如下文件中,可
以手工修改:agent10g/sysman/emd/targets.xml。
另外一个比较重要的文件是 agent10g/sysman/config/emd.properties 他就是没一个agent的配置文件,agent所有的属性都在里面,比如oms的url,TZ啊什么的,可以手工修改,修改完之后,通过执行.
/emctl reload来使之生效。
oem10g的使用心得
oem10g在易用性较8i,9i笨重的java客户端来看,真是有一种脱胎换骨的轻松感觉。你不需要再花很多的时间等待那个图形界面的出现了,只要通过浏览器输入hhtp://oemhost:
4889/em就可以轻松登陆oem.感觉速度比8i和9i都快不少。而且界面有很多图标,看起来很舒服。
oem10g另外一个功能就是加入了告警功能,它会将所有认为有问题的信息以在首页上提示出来,甚至连alert文件中的告警信息也可以弄出来,并且所有的指标都可以自己定义告警阈值,我们单位原原本也有一套数据库监控系统,可是和这个比,简直是小巫见大巫了。
10g oem另外一个令人激动的特点是提供了一个叫adviser的建议功能,它可以帮助你对内存,Undo segent,sql进行相应的优化调整,给出好的建议。但这个功能只能对10g数据库可用。尽管oem10g可以管理从8.1.7.4以后的数据库,但
这个功能只对10g的数据库可用。
报表,oem10g提供了很好的报表功能,包括所有该节点上所有监控的信息,而且报表很漂亮。对于那些定期需要向领导作报表的dba来说,这是个不错的工具。
|