记录一下在RHEL4.6上部署安装10G Grid Control的过程。
Grid Control需要有自己的数据库用来存放管理数据,此处我们使用已经建立好的数据库实例来安装Grid Control。
GC安装在ocmdb1主机上,GC的repository database已经事先在ocmdb1主机上上安装完毕。
1.调整repository database数据库
1)数据库参数调整
参考《【GC】安装GC之前需要调整的几个参数》(http://space.itpub.net/519536/viewspace-667627)
SQL> alter system set session_cached_cursors = 201 scope=spfile;
SQL> alter system set job_queue_processes = 11 scope=spfile;
SQL> alter system set open_cursors = 301 scope=spfile;
SQL> alter system set dispatchers='';
SQL> alter system set aq_tm_processes=2;
SQL> alter system set sga_target=500m;
2)执行脚本dbmspool.sql脚本
@?/rdbms/admin/dbmspool
脚本注释信息如下:
rem
rem $Header: dbmspool.sql 15-jun-99.08:54:18 mjungerm Exp $
rem
Rem Copyright (c) 1991, 1996, 1997, 1998, 1999 by Oracle Corporation
Rem NAME
Rem dbmspool.sql - dbms_shared_pool utility package.
Rem DESCRIPTION
Rem This package allows you to display the sizes of objects in the
Rem shared pool, and mark them for keeping or unkeeping in order to
Rem reduce memory fragmentation.
3)解锁DBSNMP用户
SQL> alter user DBSNMP identified by oracle1 account unlock;
2.检查/etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.190.32 ocmdb2.localdomain ocmdb2
192.168.190.31 ocmdb1.localdomain ocmdb1
3.GC安装过程
1)root用户下执行“xhost +”命令保证图形化安装界面可以启动
[root@ocmdb2 ~]# xhost +
access control disabled, clients can connect from any host
2)切换到oracle用户进行安装
[root@ocmdb2 ~]# su - oracle
[oracle@ocmdb2 ~]$ cd /hsw_media/Disk1/
[oracle@ocmdb2 Disk1]$ ./runInstaller
Starting Oracle Universal Installer...
Checking installer requirements...
Checking operating system version: must be enterprise-4, enterprise-5, redhat-3, redhat-4, redhat-5, redhat-5.1, SuSE-9, SuSE-10, UnitedLinux-1.0, asianux-1 or asianux-2
Passed
All installer requirements met.
3)这里选择“Enterprise Manager 10g Grid Control Using an Existing Database”选项,点击“Next”
4)修改Parent Directory内容为“/u01/app/oracle/OracleHomes”,点击“Next”
5)系统自动完成先决条件的检查,确保无误,点击“Next”
6)提供事先准备好的Repository Database的基本信息,点击“Next”
注意:下面表空间的位置需要重点修改一下,保证Repository Database所在的主机上存在相应的目录!
另外,我在输入sys的密码之后,老提示密码不对,后来alter user sys identified by xxx才好。
7)其他可选配置页,这里保持默认,不进行配置,点击“Next”
8)密码安全设定,设置完成后,点击“Next”
注意:给定的密码要求至少是5位,并且需要包含数字,我们这里统一设置为“oracle1”!
9)安装配置总结页面,确保无误后点击“Install”进行安装
10)安装完成后,需要在root用户下执行allroot.sh脚本,执行完成后点击“OK”进入到漫长的配置页面
[root@ocmdb2 ~]# sh /u01/app/oracle/OracleHomes/oms10g/allroot.sh
Starting to execute allroot.sh .........
Starting to execute /u01/app/oracle/OracleHomes/oms10g/root.sh ......
Running Oracle10 root.sh script...
\nThe following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/OracleHomes/oms10g
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Adding entry to /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
Finished execution of /u01/app/oracle/OracleHomes/oms10g/root.sh ......
Starting to execute /u01/app/oracle/OracleHomes/agent10g/root.sh ......
Running Oracle10 root.sh script...
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/OracleHomes/agent10g
Enter the full pathname of the local bin directory: [/usr/local/bin]:
The file "dbhome" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]:
The file "oraenv" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]:
The file "coraenv" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]:
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
Finished execution of /u01/app/oracle/OracleHomes/agent10g/root.sh ......
11)配置页面,这里是最耗时,但是最省心的无人值守的阶段,可以小憩一下
注意:一定要保证这个配置过程的完整和正确,否则会对使用产生重大的影响,如发现问题,按照提示查看报错日志中给出的内容。
可以使用“find . -cmin 1”命令辅助获得涉及到的安装日志文件。
下面这个步骤耗时最长,也最容易出错,并且很有可能遇到BUG,根据日志提示,其一会是repository DB出问题,
需要重建DB(我试过删除SYSMAN,MGMT_VIEW这2用户与MGMT_TABLESPACE,MGMT_ECM_DEPOT_TS这
2个表空间都无济于事);其二会是HTTP_Server启动失败,需要安装补丁包(8430622):opatch apply,完了
还需要执行:emctl secure oms -reset,最后回到图形安装界面“Retry”即可通过了。
12)配置结束界面。部署安装GC完成。
13)打开FireFox,地址栏中输入“http://ocmdb2.localdomain:4889/em”进入到Grid Control登陆页面
注意:如果你在其他机器访问这个网址,请先修改host文件,把服务器的ip地址与hostname加入进去,然后使用
http://hostname:4899/em这个网址打开,不要使用http://ip:4899/em,因为这是打不开滴~~~~
14)输入用户名“sysman”,密码“oracle1”进入到Grid Control的首页
15)点击“Targets”,因为没有添加其他Agent,此时只能看到本机的信息
4.应用代理
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
或者:($ORACLE_HOME/OracleHomes/oms10g/sysman/agent_download/10.2.0.3.0/linux_x64/agentDownload.linux_x64)--此乃64位系统的路径
d:在需要部署agent的机器上,首先给该脚本可执行的权限。
e:运行安装脚本:
./agent_download.linux -b /opt/oracle/OracleHomes
其中-b参数指定agent安装的路径。
中间不需要交互,Oracle使用的是silent方式的安装。
安装成功或者失败都有日志.
注意:如果以前部署过agent,只删除$AGENT_HOME目录重新部署不会成功,会遇到下面错误而终止:
Initializing Java Virtual Machine from /tmp/OraInstall2010-01-26_03-45-43PM/jre/1.4.2/bin/java. Please wait...
Completed with Status=255
要解决此问题,需要编辑oraInventory目录下的ContentsXML/inventory.xml文件,移除以前安装过的HOME NAME条目。
另外,我用此方法部署好agent,但总是启动失败,检查emagent.log,发现有如下错误信息:
2011-01-27 15:13:25 Thread-4136883904 <Ping Manager> Invalid TIMEZONE for agent not compatible with OMS timezone, Agent will shutdown. Update agentTZRegion property in /opt/oracle/agent10g/sysman/config/emd.properties file (00900)
原来是时区的问题,比较OMS主机与目标主机上agent的参数配置文件(emd.properties)最后一行,发现目标主机是agentTZRegion=PRC,
而OMS主机是agentTZRegion=Asia/Chungking,
看来设置时区环境变量(set TZ=PRC)没有作用,于是去除时区环境变量,将目标主机改成与OMS主机相同,即:agentTZRegion=Asia/Chungking
之后就启动成功了。
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来说,这是个不错的工具。