2015年4月14日星期二

11g的em

http://docs.oracle.com/cd/B14099_19/manage.1012/b16242/structure.htm
11g的em有3个产品
1.Database Control,这个针对一个数据库的管理,可以rac
2.Application Server Control 可以管理多个application server
3.Grid Control,这个可以管理多个数据库和application server
Database Control安装是可以直接用,其他两个是单独安装。这里只对Database Control来说事。
   
11g的em是用一个oc4j(oracle container for j2ee)的application server(类似tomcat),程序在
$ORALCLE_HOME/oc4j 下。这个server是oc4j.jar,oc4j/j2ee/home/applications目录下放着应用,也其实Database Control只是oc4j的一个应用而已。配置文件是各自的ORACLE_UNQNAME目录下的server.xml。比如
/ORADATA/app/product/11.2.0/dbhome_1/oc4j/j2ee/OC4J_DBConsole_192.168.101.40_orcl11g/config/server.xml 。
所以,理论上,respo报错的db和要监控的target db可以不一样,但是实际是不可以的。

11g的em,Enterprise Manager Agent来收集数据,然后汇报给

如果开始没给db挂em,用这个
emca -config dbcontrol db -repos recreate

 emctl status dbconsole看状态,如果说没定义ORACLE_UNQNAME,那么设置环境变量,这个值是数据库的DB_UNIQUE_NAME参数,没修改一般就是ORACLE_SID。但是这个参数设置了,用在哪里还是不知道。
[oracle@NKV2DEVDB_O 192.168.101.40_orcl11g]$ emctl status dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0
Copyright (c) 1996, 2009 Oracle Corporation.  All rights reserved.
https://192.168.101.40:1158/em/console/aboutApplication
Oracle Enterprise Manager 11g is running.
------------------------------------------------------------------
Logs are generated in directory /ORADATA/app/product/11.2.0/dbhome_1/192.168.101.40_orcl11g/sysman/log  

这里可以看见em log的位置,这个是ORACLE_HOSTNAME_sid拼出来的,由于我的hostname里面有下划线,所以我单独定义了ORACLE_HOSTNAME。

 常用的命令
emctl start console  启动
emctl stop console 停止
emca -repos create创建repos库,这个是设置将repos保存在哪个数据库。会在这个库里增加sysman用户,会让设置sysman的密码,然后创建一堆表。
emca -repos recreate重新创建repos库 
emca -repos drop 删除repos库
emca -config dbcontrol db 配置Database Control要监控的target db,得先有repos才能配置,因为要输入创建repos时设置的sysman的密码
emca -deconfig dbcontrol db 删除Database Control
emca -reconfig ports 修改db control和agent的端口
或许要问为啥repos和dbconsole要分开配置,因为repos是一个大的仓库,而dbconsle指示仓库里面的一个物件罢了,repos还可以放很多别的东西。

cat $ORACLE_HOME/install/portlist.ini可以看到console和agent的端口分别是1158,3938。
这里看到了agent,agent是真正采集监控数据库的程序,它监控了target数据库的一切,然后将内容上载到oms,oms入repos。设计上,agent是完全可以独立于oms,这也是grid的设计思想。
可以
emctl status agent
查看agent的状态
可以看到这里
Agent URL         : https://192.168.101.40:3938/emd/main
Repository URL    : https://192.168.101.40:1158/em/upload/
所以agent其实也开了一个http的server,它同oms的heartbeat就靠这个了。进程是bin/emagent

emca -reconfig ports -dbcontrol_http_port 1159
emca -reconfig ports -agent_port 3939

一个em只能挂一个instance,grid的em才可以挂多个。
所以em只能管理自己 ,并且repos也只能存自己里面(以sysman用户)。一台机器可以启动多个instance,想来em也应该可以启动多个分别管理自己的instance,如何搞?我尝试了一下。
 其实oracle已经考虑到这个问题,直接执行
 emca -config dbcontrol db -repos create后,在sid的db里创建完库后,会根据当前的情况选择别的端口来进行配置。
 cat $ORACLE_HOME/install/portlist.ini可以得到
Enterprise Manager Console HTTP Port (orcl11g) = 1158
Enterprise Manager Agent Port (orcl11g) = 3938
Enterprise Manager Console HTTP Port (orcl11g2) = 5500
Enterprise Manager Agent Port (orcl11g2) = 1830

这也就是起了两个em,管理着两个instance了。但是emctl没有instance的参数啊,所以需要 ORACLE_SID(不是用ORACLE_UNQNAME)来切换着管理

 

没有评论:

发表评论