Oracle提供的图形化管理工具目前主要有三个版本:
EMDC:Enterprise Manager Database Control
EMGC:Enterprise Manager Grid Control
EMCC:Enterprise Manager Cloud Control
DC需要为每个实例创建一套,而GC则可以统一管理多实例,CC则运用了很火的“云”概念来做统一管理数据库,可谓是增强版的GC。
Oracle官网上已经删除了几乎所有11g GC下载链接,主推12c和13c的CC,用心良苦。。。
最近,由于不同项目的开发测试库越来越杂,所以想对其进行统一的管理,虽然流行的是CC,但还是想任性的装一把GC。
对于普通的安装过程就不过多介绍,主要聊聊我在部署GC过程中碰见的N多坑,可能有些问题在各位看来已经不是问题了,但至少作为小白的我,所能碰到的问题想必会有其他人也会碰见,至少是总结一下自己的部署过程,还是有许多值得思考的地方。
坑1:安装介质
(1) 操作系统是Red Hat 6.4,64位。
(2) 资料库:我用的是11.2.0.4版本:
p13390677_112040_Linux-x86-64_1of7.zip
p13390677_112040_Linux-x86-64_2of7.zip
(3) weblogic:从官方网站上没有找到推荐的10.3.2版本,只有10.3.6版本的下载链接(http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-main-097127.html),为了不因版本问题产生差异,还是找了10.3.2版本:
wls1032_linux32.bin。
(4) GC:这就更费劲了,官网已经不提供下载链接,找了其他渠道下载了11.1.0.1.0版本的镜像:
GridControl_11.1.0.1.0_Linux_x86-64_1of3.zip
GridControl_11.1.0.1.0_Linux_x86-64_2of3.zip
GridControl_11.1.0.1.0_Linux_x86-64_3of3.zip
坑2:weblogic安装
./wls1032_linux32.bin,提示无法开启图形界面,但命令行方式依然可用:
Unable to instantiate GUI, defaulting to console mode.
有两点注意:
(1) Middleware Home路径会有一个默认值,若要使用另一个路径,则此处需要输入一个新路径,例如/u01/app/oracle/Middleware,接下来就选择这个路径,非默认路径:
"Middleware Home" = [Enter new value or use default
"/slot/ems13782/appmgr/Oracle/Middleware"]
Enter new Middleware Home OR [Exit][Previous][Next]> /u01/app/oracle/Middleware
(2) 此处3选择是否接收安全更新,可以选择否,参考如下四步操作,设置Receive Security Update为No:
Provide your email address for security updates and to initiate configuration manager.
1|Email:[]
2|Support Password:[]
3|Receive Security Update:[Yes]
Enter index number to select OR [Exit][Previous][Next]> 3
Provide your email address for security updates and to initiate configuration manager.
"Receive Security Update:" = [Enter new value or use default "Yes"]
Enter [Yes][No]? NO
Provide your email address for security updates and to initiate configuration manager.
"Receive Security Update:" = [Enter new value or use default "Yes"]
** Do you wish to bypass initiation of the configuration manager and
** remain uninformed of critical security issues in your configuration?
Enter [Yes][No]? Yes
Provide your email address for security updates and to initiate configuration manager.
1|Email:[]
2|Support Password:[]
3|Receive Security Update:[No]
Enter index number to select OR [Exit][Previous][Next]>
而且有可能在64位环境下执行32位的安装程序,会报错:
./wls1032_linux32.bin
-bash: ./wls1032_linux32.bin: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
经查证(http://www.2cto.com/os/201207/142437.html),其需要32位的glibc,
yum install glibc.i686
若需要使用scp传送介质,报错:
scp p13390677_112040_Linux-x86-64_1of7.zip root@172.30.38.66:/opt/software/.
root@172.30.38.66's password:
bash: scp: command not found
lost connection
无论从远端下载,还是从远端上传,都会报这个错误,原因是没有安装scp命令,需要:
yum install openssh-clients
即可使用scp。
坑3:资料库参数
按照建议,或者安装GC会有错误提示,需要设置以下参数的最低值:
alter system set session_cached_cursors=201 scope=spfile;
alter system set job_queue_processes=11 scope=spfile;
alter system set open_cursors=301;
alter system set log_buffer=10485760 scope=spfile;
alter system set processes=501 scope=spfile;
坑4:GC安装未识别中间件
此处即使手工输入或选择,均提示错误:
此时可以排查下/etc/hosts文件是否增加了主机名的映射关系:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
x.x.x.x emrep11
若第一行localhost.localdomain改为emrep11,则也会报错。
在做的过程中,曾怀疑是weblogic安装的有问题,重装,先卸载weblogic,脚本如下:
/u01/app/oracle/Middleware/wlserver_10.3/uninstall
./uninstall.sh
坑5:资料库的可访问方式
如果选择资料库提示如下报错,则可能是库信息有误、监听未启动或者库未启动,
我这碰见的问题是,由于资料库是手工创建,忘了创建密码文件,因此此处报错,orapwd生成密码文件后正常。其使用sysdba权限登录需要口令文件,未创建之前,使用如下EZCONNECT方式访问(sysdba权限 )报的同样是ORA-01017错误:
sqlplus sys/oracle@emrep11:1521/EMREP as sysdba
坑6:密码
安装过程中,密码的要求是至少8位,字母开始,至少包含一位数字:
坑7:安装过程报错1-删除SYSMAN重装
第一次安装,Repository Configuration失败。
重装提示SYSMAN已存在,需要删除,此时可以使用如下命令删除,或者根据secooler的建议,直接drop user … cascade删除:
/u01/app/oracle/11.2.0.4/dbhome_1/sysman/admin/emdrep/bin/RepManager emrep11 1521 EMREP -action drop
坑8:安装过程报错-删除SYSMAN_MDS
提示MDS Schema Configuration安装错误:
重新安装会提示SYSMAN_MDS已存在:
要求删除sysman_mds的信息,如果仅使用drop user sysman_mds删除,则会提示报错,指出信息不匹配,此时可以使用脚本:
SQL> @/u01/app/oracle/11.2.0.4/dbhome_1/sysman/admin/emdrep/sql/core/latest/admin/admin_recompile_invalid.sql
Enter value for 1: SYSMAN_MDS
old 16: WHERE owner ='&EM_REPOS_USER'
new 16: WHERE owner ='SYSMAN_MDS'
old 65: AND ds.table_owner = '&EM_REPOS_USER'
new 65: AND ds.table_owner = 'SYSMAN_MDS'
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
完成删除。
若再有问题,可能还是SYSMAN/SYSMAN_MDS删除不完全的原因,(参考:
http://blog.csdn.net/qingqingxuelang/article/details/7546888)
select count(*) FROM SCHEMA_VERSION_REGISTRY t WHERE t.mrc_name = 'SYSMAN';
返回1
delete from SCHEMA_VERSION_REGISTRY t WHERE t.mrc_name = 'SYSMAN';
1 row deleted.
再继续安装。
坑9:安装过程报错-SYSTEM表空间容量不足
查看日志:
/u01/app/oracle/Middleware/oms11g/cfgtoollogs/cfgfw/CfmLogger_2016-06-23_01-18-02-PM.log
ORA-00604: error occurred at recursive SQL level 1
ORA-01654: unable to extend index SYS.I_SOURCE1 by 128 in tablespace SYSTEM
发现提示的是SYSTEM表空间不足,所以安装之前预留出充足的表空间容量很重要。
坑10:安装过程报错-主机名
安装至OMS Configuration报错:
查看日志:
/u01/app/oracle/Middleware/oms11g/cfgtoollogs/omsca/omsca_20160623150240.log
Caused by: com.bea.plateng.domain.script.ScriptException: com.bea.plateng.domain.ValidateExceptio n: Property "Listen address" of Server "EMGC_ADMINSERVER" is invalid.
970 The entered value is not a valid hostname. Please use only alphanumeric characters and dot (.) an d dash (-).
发现提示的是hostname主机名要求不能使用.和-,开始我设置的主机名是emrep-11,不符合要求。
一言不合即重装,先卸载之前安装的组件,可以执行以下脚本调用:
/u01/app/oracle/11.2.0.4/dbhome_1/oui/bin/runInstaller
关于主机名的变更,需要两步:
(1) hostname可以修改session的主机名,临时生效。
(2) /etc/sysconfig/network中的HOSTNAME,永久生效。
同时,需要注意/etc/hosts等文件中已经定义的主机名需要替换。
坑11:open files限制值
启动oms时,提示了错误:
[oracle@emrep11 bin]$ ./emctl start oms
Oracle Enterprise Manager 11g Release 1 Grid Control
Copyright (c) 1996, 2010 Oracle Corporation. All rights reserved.
Starting WebTier...
WebTier Successfully Started
Starting Oracle Management Server...
Oracle Management Server Already Started
Oracle Management Server is Up
WARNING: Limit of open file descriptors is found to be 1024.
The OMS has been started but it may run out of descriptors under heavy usage.
For proper functioning of OMS, please set "ulimit -n" to be at least 4096.
错误很明显,open files参数值需要至少4096,此处实际只有1024,因此需要改动,
(1) ulimit -n 4096,临时生效。
(2) /etc/security/limits.conf修改
oracle11g soft nofile 4096
oracle11g hard nofile 65536
重新登录生效。
坑12:GC控制台界面乱码
GC的显示是根据浏览器语言决定的,我是用chrome,加入了英语语言:
显示仍有乱码:
原因就是需要调整顺序,默认英语:
坑13:端口无法访问
GC的访问设置了很多端口,如果开启了防火墙,则需要增加这些端口例外,要么关闭防火墙,否则就会得到例如”failed: No route to host.”这样的错误。
加入例外:
vi /etc/sysconfig/iptables
增加
-A INPUT -m state --state NEW -m tcp -p tcp --dport 4903 -j ACCEPT
重启iptables,永久生效:
service iptabels restart
坑14:agent安装过程报错-SEVERE:The Oracle Home name is not valid. Oracle Home names must be 128 characters or less and contain only alphanumeric characters and underscores.
参考官方文档,执行:
./$<ORACLE_HOME>/oui/bin/runInstaller -clone -forceClone ORACLE_HOME=/u01/app/oracle/agent11g ORACLE_HOME_NAME=/u01/app/oracle/11.2.0.4/dbhome_1 -noconfig -silent OMS_HOST=emrep11 OMS_PORT=4903
其实这ORACLE_HOME_NAME不是要求路径,而是要求一个名称标识,改为:
./runInstaller -clone -forceClone ORACLE_HOME=/u01/app/oracle/agent11g ORACLE_HOME_NAME="APP" -noconfig -silent OMS_HOST=emrep11 OMS_PORT=4903
坑15:agent安装过程报错-agentca报错
执行agentca -f报错:
[oracle@deptestvm001 bin]$ ./agentca -f
Stopping the agent using /u01/app/oracle/agent11g/bin/emctl stop agent
Oracle Enterprise Manager 11g Release 1 Grid Control 11.1.0.1.0
Copyright (c) 1996, 2010 Oracle Corporation. All rights reserved.
Running agentca using /u01/app/oracle/agent11g/oui/bin/runConfig.sh ORACLE_HOME=/u01/app/oracle/agent11g ACTION=Configure MODE=Perform RESPONSE_FILE=/u01/app/oracle/agent11g/response_file RERUN=TRUE INV_PTR_LOC=/u01/app/oracle/agent11g/oraInst.loc COMPONENT_XML={oracle.sysman.top.agent.10_2_0_1_0.xml}
Perform - mode is starting for action: Configure
java.io.FileNotFoundException: /u01/app/oracle/Middleware/.gcinstall_temp/staticports.ini (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileReader.<init>(FileReader.java:55)
at oracle.sysman.emcp.util.FileUtil.loadPortsFromPropertyFile(FileUtil.java:1313)
at oracle.sysman.emcp.agent.AgentPlugIn.fetchParameters(AgentPlugIn.java:615)
at oracle.sysman.emcp.agent.AgentPlugIn.<init>(AgentPlugIn.java:202)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at oracle.sysman.emCfg.support.CfmUtil.getTheObject(CfmUtil.java:171)
at oracle.sysman.emCfg.core.PerformMicroStep.getInstanceOfPlugIn(PerformMicroStep.java:404)
at oracle.sysman.emCfg.core.PerformMicroStep.runJavaClass(PerformMicroStep.java:500)
at oracle.sysman.emCfg.core.PerformMicroStep.executeMicroStep(PerformMicroStep.java:120)
at oracle.sysman.emCfg.core.ActionPerformer.performMicroStep(ActionPerformer.java:917)
at oracle.sysman.emCfg.core.ActionPerformer$Performer.run(ActionPerformer.java:1038)
java.lang.NullPointerException
at oracle.sysman.emcp.util.FileUtil.loadPortsFromPropertyFile(FileUtil.java:1320)
at oracle.sysman.emcp.agent.AgentPlugIn.fetchParameters(AgentPlugIn.java:615)
at oracle.sysman.emcp.agent.AgentPlugIn.<init>(AgentPlugIn.java:202)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at oracle.sysman.emCfg.support.CfmUtil.getTheObject(CfmUtil.java:171)
at oracle.sysman.emCfg.core.PerformMicroStep.getInstanceOfPlugIn(PerformMicroStep.java:404)
at oracle.sysman.emCfg.core.PerformMicroStep.runJavaClass(PerformMicroStep.java:500)
at oracle.sysman.emCfg.core.PerformMicroStep.executeMicroStep(PerformMicroStep.java:120)
at oracle.sysman.emCfg.core.ActionPerformer.performMicroStep(ActionPerformer.java:917)
at oracle.sysman.emCfg.core.ActionPerformer$Performer.run(ActionPerformer.java:1038)
说缺少这个文件:
/u01/app/oracle/Middleware/.gcinstall_temp/staticports.ini
于是从OMS服务器复制了一份,内容就是所有相关的端口定义:
Enterprise Manager Upload Http Port=4889
Enterprise Manager Upload Http SSL Port=4903
Enterprise Manager Central Console Http SSL Port=7802
Node Manager Http SSL Port=7403
Managed Server Http Port=7202
Enterprise Manager Central Console Http Port=7788
Oracle Management Agent Port=3872
Admin Server Http SSL Port=7102
Managed Server Http SSL Port=7301
坑16:GC无法新增远程数据库
如图所示,新增Database资源时,提示vm001.cs1cloud.internal找不着:
实际这台安装了agent的机器名是vm001,没有域名。
开始我是在agent根目录下查找所有包含vm001.cs1cloud.internal的文件:
find . -name '*.*' | xargs grep 'vm001.cs1cloud.internal' -n
实际不能这么做。换了一种方法,在/etc/hosts中增加:
x.x.x.x vm001.cs1clouod.internal
让OMS可以识别这个域名即可。当然这种方式是一种workaround,若哪位有更准确的方法,可以提出来,共同学习。
坑17:opmnctl指令错误
http://www.gokhanatil.com/2011/06/enterprise-manager-grid-control-11g-and-opmnctl.html
In Grid Control 10g, we use opmnctl utility to stop, start and get status of Oracle Application Server 10g and OMS (Oracle Management Service). In new Grid Control (11g), OMS is deployed on weblogic server so we need to use emctl instead of opmnctl to start OMS.
10g使用opmnctl查看OMS状态,11g中OMS部署在weblogic服务器上,所以使用emctl来管理OMS。
使用opmnctl,需要设置ORACLE_INSTANCE环境变量。
开始设置:
export ORACLE_INSTANCE=/u01/app/oracle/gc_inst
./opmnctl status
opmnctl: Invalid ORACLE_INSTANCE (/u01/app/oracle/gc_inst/config/OPMN/opmn/opmn.xml is missing).
应该使用
export ORACLE_INSTANCE=/u01/app/oracle/gc_inst/WebTierIH1
就可以使用opmnctl了:
[oracle@emrep66 bin]$ ./opmnctl status
Processes in Instance: instance1
---------------------------------+--------------------+---------+---------
ias-component | process-type | pid | status
---------------------------------+--------------------+---------+---------
ohs1 | OHS | 9912 | Alive
坑18:删除agent
要彻底删除agent,从资料库中可以执行以下语句删除agent信息:
exec mgmt_admin.cleanup_agent('vm001.cs1cloud.internal:4903');
其中参数信息来自于:
vi /u01/app/oracle/agent11g/sysman/config/emd.properties
EMD_URL=http://vm001.cs1cloud.internal:%EM_SERVLET_PORT%/emd/main/
重新安装agent,可以先删除旧agent的记录信息:
vi /u01/app/oracle/oraInventory/ContentsXML/inventory.xml
删除
<HOME NAME="BTRACER" LOC="/u01/app/oracle/agent11g" TYPE="O" IDX="2"/>
未解决问题:
问题1:Firefox无法访问GC控制台
OMS本机和远程都是这个报错。使用chrome可以,怀疑可能和证书有关,本想从chrome中找出证书再导入Firefox,但未找着对应的证书。
问题2:agentdownload方式安装agent报错
./agentDownload.linux_x64 -b /u01/app/oracle
总提示:
/home/oracle/agent/linux_x64/agentDownload11.1.0.1.0Oui/oui_linux_x64.jar appears to be corrupt!
Command failed: mv unzip /home/oracle/agent/linux_x64/agentDownload11.1.0.1.0Oui/Disk1/UnzipUtl
尝试了agentDownload方式,还尝试了将OMS本机可用的agent打包到远程机器,执行其中的agentDownload,让然报这个错误。
总结:
11g GC安装过程:
(1) 安装资料库,本次使用的是11.2.0.4,创建EMREP资料库,修改需要的参数。
(2) 安装weblogic,本次使用的是10.3.2,需要选择典型安装,关闭安全更新。
(3) 安装Grid Control,注意SYSTEM表空间容量,500M可以,还要注意本机磁盘空间,占用会较多,建议预留20G,每一个组件的安装报错,对应的解决方法可能不同,若选择重新安装,需要先卸载。
(4) agent安装,OMS本机安装无问题,远程download方式仍有问题,本次使用了clone方法,将OMS的agent复制至其他节点,命令操作:
cd $ORACLE_HOME/oui/bin
./runInstaller -clone -forceClone ORACLE_HOME=<Location_to_Agent's_OracleHome> ORACLE_HOME_NAME=<alphanumeric_without_special_characters> -noconfig -silent OMS_HOST=<oms_host> OMS_PORT=<oms_port>
$<ORACLE_HOME>/bin/agentca -f
参考:
Advanced Installation and Configuration Guide - 16 Cloning Oracle Management Agent Using ZIP File
然后:
./emctl secure agent
./emctl start agent
./emctl upload
./emctl status agent
确保返回结果中,如下两项有值,则表明本机信息已经由agent上传至OMS:
Last successful upload
Last successful heartbeat to OMS
11g的GC安装,还是有些艰难,坑不少,但趟过了之后,就应该积累了不少经验值,可依然留了上面三个问题,如果哪位有好的解法,还请告知,共同学习,谢谢。