1:软件下载
Oem10g grid control 可以从oracle官方网站上直接免费下载(唯一需要做的是注册一个用户)。我们的试验环境是redhat as3 和as4.所以我们下载了for linux x86的版本。
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 角色。
5:登陆成功后,恭喜你,你的oem server端安装成功了。注意,在安装oem过程中,它会自动在本地装一个agent,所以对于本机,你可以省事了。
ok,到现在为止,我们安装好了服务器端的软件,依旧是oem的核心部分已经安装好了,如果你只有一台数据库服务器,那你的工作基本上完成了,而我们的环境里有三台机器,所以下面的工作是要在剩下的2台机器上部署oem的agent。
我觉得我们在部署之前有必要了解一下oem10g grid control的架构,
以便于对它有更好的理解。
oem10g是一个基于web的管理架构,这和9i之前的笨重的java客户端有很大的区别。(oracle能把web功能发挥到这种地步,小弟真实佩服佩服)。
所以我们可以从2块来研究它的架构,一个是管理的架构,一个是后台数据采集的架构。
管理的架构:管理者(或者使用者)不需要再自己的机器上安装任何软件,只需要一个浏览器就可以搞定所有的工作。使用者只需要在浏览器里输入如下的地址,就可以进入oem,就行数据库管理。
http://oem_hostname:4889/em
我们可以看到首先我们需要连接到oracle的一个中间层,成为
Oracle application server的东西,通过它再登陆到oem上,然后进行数据库的监控,管理和维护。所以中间层的后台是一个数据库,也就是我们在创建oem时创建的数据库,所有Oem管理的数据库信息,包括登陆信息都保存在这个数据库中。
后台数据采集的架构:
oem 收集管理的数据库的信息的方法是在被管理的节点上部署它的代理软禁(agent),通过代理软件来收集本机的所有信息,以xml的信息存储到本地,在通过 数据上载的进程,将xml文件上载到oem server机器上,server端的程序再将这些xml信息写入到oem数据库里。这些xml文件也是通过http方式发给Oem服务器的app server,再通过它转给oem service.
弄清楚了Oem架构这后,我们接着往下进行,就是要在另外两台数据库服务器上部署 oem 的agent.
oracle为agent部署提供了4种方案(记得开始部署时,四种都用过了,没有一个成功的-_-|.此是后话)。
1:直接从网上下载agent软件,安装到需要管理的节点上,配置一下相关的信息,使之能够连接到Oem上。
2:称为脚本安装,只需在oem 上下载一个script到本机,然后运行它(貌似简单,嘿嘿)。
3:克隆大法,就是将已经安装好,并正常运行的机器上的agent目录整个的搬来用。
4:直接在oem界面上进行部署。
当 时看到居然有四种方法,真是欢欣雀跃,没想到在部署过程中却屡遭失败,失败也就罢了,我最不能忍受的是它在trc文件中爆出的一大坨错误,竟丝毫不能反映 出错误的来源,也许我的水平不够,不过它真的不直观,因此我越来越佩服oracle的dba们了,都是在这样一次又一次莫名其妙的失败中成长起来的。
闲话少叙,进入正题。
1:下载agent软件进行安装。
这 个方法在部署另外2台服务器时没用上,应为oracle说在oem里已经有了,但是在安装完这2台机器之后,却有幸试了一次,原因是我的客户端是 windows机器,我突然想看看oem是不是可以像oracle吹得那样跨平台管理,所以就又跑到www.oracle.com上down了一个 agent for windows的(哎,说起来这个oracle官方网站来,真是不赖,我记得我至少在那里down下来上几10个g的东西,货源足,而且全部免费,童叟无 欺,我建议大家也经常去down一down,闲着干嘛,你说那)。
于是我干脆在我的客户端机器上又装了一个oracle9i,忘记说了,之前说的那3台机器都是10g db,所有装个9i,看看管理上有啥不同。
这些都很容易装,我就靠这个吃饭哪,没事的时候都要装上几十次,熟的很。
装完了,9i会在windows服务里装一大坨服务,我们只要起db和listerner就可以了。其他的不管。agent软件会在服务里装3个服务(windows真烦),只需要起agent那一个就ok了。
我发现我天生不是搞技术的,把一个技术文档说的像个什么一样,真是丢人,没办法,我也要吃饭啊,我也不想啊,可是我也很为难啊。
你看,说这说着我就忘了一个很重要的步骤了,就是在安装egnet时,有一步会提示oms的地址,注意啊,很关键啊,写什么哪?上面已经说过了,忘了?你刚说过的,你就不记得了,比我还健忘,你真行。
就是这个啊:http://oms_hostname:4889
哦,在agent安装过程中还有一个步骤,提示输入数据安全密码?
不明白?不明白你问啊?你不问。。。。。那我就说吧。
oms和agent之间的通讯是加密的,就是那个https啦,加个s
记住啊,是加密的,数据加密的。数据加密的用密码干嘛?解密啊?哦,你说的也是,我也没想清楚,你输了就是了。回去自己想吧,监听器不也可以设置密码吗?
呼,总算装完了。然后那?
然后? 然后看看好不好用啊。
说道这里,我突然发现还有一个很重要的问题没有说。
首先我要说的是oem相关的命令(包括agent)都是通过emctl命令来完成的。记住啊,记住这个命令,你基本上就可以搞定70%以上的问题了。
恩,命令说完了,总觉得还有点什么东西没说,你看我是不是很罗嗦,你别生气,我说过我天生不是做技术的料,但我还要吃饭,还有老婆孩子,你说我容易嘛?
对,我要说的是,你在运行这条命令时,一定要进入到这个命令所在的目录下。
不 好,有人要朝我丢东西了,那要一个$path干什么?当饭吃啊?是的,你丢的对,我怀疑我说错了话,可是是老O(racle)高速我的,我开始也想朝它丢 东西,直到我在Oem机器上(注意是oem机器上),随便的运行了一个emctl之后才知道有问题的,应为在Oem机器上有2个这个文件。只是不再同一个 目录下,一个在oms/,一个在agent/,所以当你随便在一个地方打入emctl,谁直到那个被执行了。
不好,又有人在骂了,你不是说 在windows机器上嘛?对哦,是在我自己的windows机器上,又没有装oms,自然只有一个emctl了。是,是,您说的对,可是保不准你那天心 血来潮在这个机器上装一个,那时候你随便运行一个emctl,如果不灵,你可不要说我的文档有问题啊。
好了,都好了,我运行了一下agent,发现居然连上了,心理一阵狂喜。苍天啊,大地啊,还是windows下的东西好用啊。
至于怎么运行,怎样察看状态,请看后面的oem的管理和维护。
上一边唠唠叨叨说了一堆无用的东西,本篇尽量不再说废话,接着介绍agent的部署方法。
ok,here we go!
2:基于脚本的部署。
在oem10g的体系中对安全的要求比较高,所以在文件传递上也使用了hhtps的加密协议。在机器的访问上Oracle采用的是ssh方式访问,所以在oem体系中,所以机器上启用ssh是必须的,至于ssh的启用方法不在本文档的讨论之列。
首先要在oms端运行以下命令,以便于确保数据通过ssh方式在server端和client段进行传递。
OMS_HOME/sysman/prov/resources/scripts/
具体的命令如下:
sshUserSetup.sh -hosts "host1 host2" -user sjohn
其中-hosts是你要部署agent的机器的名称,如果此处你写hostname,那么你需要把hostname和机器的Ip对应信息写到oms机器的/etc/hosts上,否则可能无法解析hostname。这里可以写很多个需要部署的hosts的名字。
-user是登录到该机器的用户名,密码则在运行过程中输入。
在各个过程中,该脚本首先测试到远程机器的可用性,使用ping的命令,然后使用ssh命令进行登录验证,确保ssh可用。
以上工作完成后就可以进行部署了,oracle文档上还有几个步骤,我觉得可以省略,反正我没用到。
Ok 现在开始在一台机器上进行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的图形界面进行配置,适合做企业级的大规模的部署。
做这个的前提是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:看一下,运行结果,对于运行失败的节点,要看相应的安装日志。
Ok,OEM的部署基本上就使这样,上面说到的只是方法,我们在安装过程中出现了很多错误,也察看了很多文档,下一篇会对这些错误作一些解释和讨论。
前几篇已经介绍了Oms和agent的部署方法,这一部分笔者准备把使用中遇到的问题和使用的心得汇总一下。
一:一些比较重要的路径和文件
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文件中的告警信息也可以弄出来,我们单位原原本也有一套数据库监控系统,可是和这个比,简直是小巫见大巫了。
oem10g 另外一个令人激动的特点是提供了一个叫adviser的建议功能,它可以帮助你对内存,Undo segent,sql进行相应的优化调整,给出好的建议。但这个功能只能对10g数据库可用。尽管oem10g可以管理从8.1.7.4以后的数据库,但 这个功能只对10g的数据库可用。
报表,oem10g提供了很好的报表功能,包括所有该节点上所有监控的信息,而且报表很漂亮。对于那些定期需要向领导作报表的dba来说,这是个不错的工具。
转自:http://alantany.itpub.net/post/120/113165