oracle EM 治理以及诊断 总结
10g推出的web版oem确实不错 简单 美观 使用 但是大多数的dba可能很少使用oem
所以一定oem出现问题了 绝大多数的人采取的方式就是---重建oem 关于oem的诊断
网上这类文章不多 那我就来个简单的总结吧 ? 抛砖引玉吧 写的不好 请拍砖
一、了解OEM的文件结构--log位置
$ORACLE_HOME/hostname_sid/sysman/log --单实例
$ORACLE_HOME/nodename_sid/sysman/log --rac
$ORACLE_HOME/hostname_sid/sysman/log/emdb.nohup --一些java进程的启动或退出信息(比如dbconsole,agent)
$ORACLE_HOME/hostname_sid/sysman/log/emagent.log,emagent.trc --aggent的trace信息
$ORACLE_HOME/hostname_sid/sysman/log/emoms.log,emoms.trc --management service trace信息
$ORACLE_HOME/hostname_sid/sysman/log/emdctl.trc,emdctl.log --emctl的trace信息
$ORACLE_HOME/hostname_sid/sysman/log/emagentfetchlet.trc,emagentfetlet.log --java fetchlets的trace信息
二、诊断OEM启动
1. 环境变量
--ORACLE_HOME ,PATH,LD_LIBRARY_PATH,LANG
如下错误:OC4J Configuration Issue: $ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_host_sid not found
通常来说是由于环境变量ORACLE_HOME设置错误或主机名设置错误
2. sysman/dbsnmp用户异常
--SELECT username,account_status from dba_users where username
in ('SYSMAN','DBSNMP');
备注:
--删除DBSNMP
@?/rdbms/admin/catnsnmp.sql
--重建DBSNMP
@?/rdbms/admin/catsnmp.sql
3. timezone 时区问题
--ORACLE_HOME/sysman/admin/supportedtzs.lst 检查该文件时区信息是否和当前环境变量timezone设置一致?
WINDOWS: 控制面板--日期和时间---时区 进行设置
UNIX、linux: export TZ=xxxx
手动配置时区
[color=red] emctl config agent getTZ
emctl config agent updateTZ --会更新 ORACLE_HOME/hostname_sid/sysman/config/emd.properties文件
[/color]
4. network 网络问题
--是否是静态IP(不推荐使用DHCP动态IP,其实也是可以的,不过需要进行特殊配置)
--hosts文件 主机名不能包好 下划线 _
--nslookup
--hosts文件格式
如下:
<ip> <full qualified domain name> <alias>
5. configuration 配置错误(比如端口,错误的连接字符串,通常来说跟hosts等有很大关系)
--lsnrctl status 查看监听log
--tnsping 通常来说相关的错误有ORA-12514 12560等等
--检查OEM配置文件
$ORACLE_HOME/hostname_sid/sysman/emd.proerties
$ORACLE_HOME/hostname_sid/sysman/emoms.properties
详细的信息大家可以参考: Troubleshooting Database Control Startup Issues [ID 549079.1]
三、如果手工重建OEM ?
1. 删除 db control configuration
10.1.x $ORACLE_HOME/bin/emca -x <sid>
10.2.x $ORACLE_HOME/bin/emca -deconfig dbconsole db
2. 删除db control 配置文件
手动删除如下目录:
ORACLE_HOME/hostname_sid
ORACLE_HOME/oc4j/j2ee/_OC4J_DBConsole_hostname_sid
如果是升级后的版本如下:
ORACLE_HOME/hostname_sid.upgrade
ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_hostname_sid.upgrade
注意:如果是windows环境,那么还需要删除db console services
步骤如下:
方法1:注册表删除
--运行 regedit
--HKEY_LOCAL_MANCHINE/SYSTEM/CurrentControlSet/Services
--删除 OracleDBConsole<sid>
方法2:命令行
nmesrvops delete <servicename>
3. 删除db control repository
10.1/10.2 :
-- cd $ORACLE_HOME/sysman/admin/emdrep/bin
-- ./RepManger <hostname> <listener_port> <sid> -action drop 相关信息可以参考375946.1
4. 删除 db control repository 对象
-- exec DBMS_AQADM.DROP_QUEUE_TABLE(queue_table=>'SYSMAN.MGMT_NOTIFY_QTABLE',force=>TRUE);
-- SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP RESTRICT;
SQL> EXEC sysman.emd_maintenance.remove_em_dbms_jobs;
SQL> EXEC sysman.setEMUserContext('',5);
SQL> REVOKE dba FROM sysman;
SQL> DECLARECURSOR
c1 ISSELECT owner, synonym_name nameFROM dba_synonyms
WHERE table_owner = 'SYSMAN';
BEGINFOR r1 IN c1
LOOPIF r1.owner = 'PUBLIC' THENEXECUTE IMMEDIATE
'DROP PUBLIC SYNONYM '||r1.name;ELSEEXECUTE IMMEDIATE 'DROP SYNONYM '||r1.owner||'.'||r1.name;
END IF;END LOOP;
END;
/
SQL> DROP USER mgmt_view CASCADE;
SQL> DROP ROLE mgmt_user;
SQL> DROP USER sysman CASCADE;
SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION;
通过下面的几个步骤可以更加彻底的删除:
SQL> drop user sysman cascade;
SQL> drop role MGMT_USER;
SQL> drop user MGMT_VIEW cascade;
SQL> drop public synonym MGMT_TARGET_BLACKOUTS;
SQL> drop public synonym SETEMVIEWUSERCONTEXT;
5. Delete DB Control Configuration Files and Repository Objects using EMCA
10.1 :
-- <ORACLE_HOME/bin/emca -x sid
---<ORACLE_HOME/sysman/admin/emdrep/bin/RepManager <hostname> <listener_port> <sid> -action drop
10.2:
--<ORACLE_HOME/bin/emca -dbconfig dbcontrol db -repos drop
6. 创建db control
1)创建db control配置文件
10.1 ---<ORACLE_HOME>/bin/emca -r
10.2 --<ORACLE_HOME>/bin/emca -config dbcontrol db
2)创建db control repostory
10.1 --<ORACLE_HOME>/bin/emca
10.2 --<ORACLE_HOME>bin/emca -config dbcontrol db -repos create/recreate
备注:rac环境需要添加cluter参数 如下:
emca -config dbcontrol db -repos create -cluster
10g推出的web版oem确实不错 简单 美观 使用 但是大多数的dba可能很少使用oem
所以一定oem出现问题了 绝大多数的人采取的方式就是---重建oem 关于oem的诊断
网上这类文章不多 那我就来个简单的总结吧 ? 抛砖引玉吧 写的不好 请拍砖
一、了解OEM的文件结构--log位置
$ORACLE_HOME/hostname_sid/sysman/log --单实例
$ORACLE_HOME/nodename_sid/sysman/log --rac
$ORACLE_HOME/hostname_sid/sysman/log/emdb.nohup --一些java进程的启动或退出信息(比如dbconsole,agent)
$ORACLE_HOME/hostname_sid/sysman/log/emagent.log,emagent.trc --aggent的trace信息
$ORACLE_HOME/hostname_sid/sysman/log/emoms.log,emoms.trc --management service trace信息
$ORACLE_HOME/hostname_sid/sysman/log/emdctl.trc,emdctl.log --emctl的trace信息
$ORACLE_HOME/hostname_sid/sysman/log/emagentfetchlet.trc,emagentfetlet.log --java fetchlets的trace信息
二、诊断OEM启动
1. 环境变量
--ORACLE_HOME ,PATH,LD_LIBRARY_PATH,LANG
如下错误:OC4J Configuration Issue: $ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_host_sid not found
通常来说是由于环境变量ORACLE_HOME设置错误或主机名设置错误
2. sysman/dbsnmp用户异常
--SELECT username,account_status from dba_users where username
in ('SYSMAN','DBSNMP');
备注:
--删除DBSNMP
@?/rdbms/admin/catnsnmp.sql
--重建DBSNMP
@?/rdbms/admin/catsnmp.sql
3. timezone 时区问题
--ORACLE_HOME/sysman/admin/supportedtzs.lst 检查该文件时区信息是否和当前环境变量timezone设置一致?
WINDOWS: 控制面板--日期和时间---时区 进行设置
UNIX、linux: export TZ=xxxx
手动配置时区
[color=red] emctl config agent getTZ
emctl config agent updateTZ --会更新 ORACLE_HOME/hostname_sid/sysman/config/emd.properties文件
[/color]
4. network 网络问题
--是否是静态IP(不推荐使用DHCP动态IP,其实也是可以的,不过需要进行特殊配置)
--hosts文件 主机名不能包好 下划线 _
--nslookup
--hosts文件格式
如下:
<ip> <full qualified domain name> <alias>
5. configuration 配置错误(比如端口,错误的连接字符串,通常来说跟hosts等有很大关系)
--lsnrctl status 查看监听log
--tnsping 通常来说相关的错误有ORA-12514 12560等等
--检查OEM配置文件
$ORACLE_HOME/hostname_sid/sysman/emd.proerties
$ORACLE_HOME/hostname_sid/sysman/emoms.properties
详细的信息大家可以参考: Troubleshooting Database Control Startup Issues [ID 549079.1]
三、如果手工重建OEM ?
1. 删除 db control configuration
10.1.x $ORACLE_HOME/bin/emca -x <sid>
10.2.x $ORACLE_HOME/bin/emca -deconfig dbconsole db
2. 删除db control 配置文件
手动删除如下目录:
ORACLE_HOME/hostname_sid
ORACLE_HOME/oc4j/j2ee/_OC4J_DBConsole_hostname_sid
如果是升级后的版本如下:
ORACLE_HOME/hostname_sid.upgrade
ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_hostname_sid.upgrade
注意:如果是windows环境,那么还需要删除db console services
步骤如下:
方法1:注册表删除
--运行 regedit
--HKEY_LOCAL_MANCHINE/SYSTEM/CurrentControlSet/Services
--删除 OracleDBConsole<sid>
方法2:命令行
nmesrvops delete <servicename>
3. 删除db control repository
10.1/10.2 :
-- cd $ORACLE_HOME/sysman/admin/emdrep/bin
-- ./RepManger <hostname> <listener_port> <sid> -action drop 相关信息可以参考375946.1
4. 删除 db control repository 对象
-- exec DBMS_AQADM.DROP_QUEUE_TABLE(queue_table=>'SYSMAN.MGMT_NOTIFY_QTABLE',force=>TRUE);
-- SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP RESTRICT;
SQL> EXEC sysman.emd_maintenance.remove_em_dbms_jobs;
SQL> EXEC sysman.setEMUserContext('',5);
SQL> REVOKE dba FROM sysman;
SQL> DECLARECURSOR
c1 ISSELECT owner, synonym_name nameFROM dba_synonyms
WHERE table_owner = 'SYSMAN';
BEGINFOR r1 IN c1
LOOPIF r1.owner = 'PUBLIC' THENEXECUTE IMMEDIATE
'DROP PUBLIC SYNONYM '||r1.name;ELSEEXECUTE IMMEDIATE 'DROP SYNONYM '||r1.owner||'.'||r1.name;
END IF;END LOOP;
END;
/
SQL> DROP USER mgmt_view CASCADE;
SQL> DROP ROLE mgmt_user;
SQL> DROP USER sysman CASCADE;
SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION;
通过下面的几个步骤可以更加彻底的删除:
SQL> drop user sysman cascade;
SQL> drop role MGMT_USER;
SQL> drop user MGMT_VIEW cascade;
SQL> drop public synonym MGMT_TARGET_BLACKOUTS;
SQL> drop public synonym SETEMVIEWUSERCONTEXT;
5. Delete DB Control Configuration Files and Repository Objects using EMCA
10.1 :
-- <ORACLE_HOME/bin/emca -x sid
---<ORACLE_HOME/sysman/admin/emdrep/bin/RepManager <hostname> <listener_port> <sid> -action drop
10.2:
--<ORACLE_HOME/bin/emca -dbconfig dbcontrol db -repos drop
6. 创建db control
1)创建db control配置文件
10.1 ---<ORACLE_HOME>/bin/emca -r
10.2 --<ORACLE_HOME>/bin/emca -config dbcontrol db
2)创建db control repostory
10.1 --<ORACLE_HOME>/bin/emca
10.2 --<ORACLE_HOME>bin/emca -config dbcontrol db -repos create/recreate
备注:rac环境需要添加cluter参数 如下:
emca -config dbcontrol db -repos create -cluster