Oracle10g 以后的版本提供了web UI的 EM管理平台,省去了很多Oralce命令。但是这个EM平台很脆弱,当安装oracle的机器变了机器名,或者变了ip地址,那么原来的 DBConsole service 就起不来了。
当然最好的办法是使用原来的IP地址。如果不能改变IP地址参考以下步骤。
本方法同样适用于windows,unix,linux其他原因导致DBCONSOLE无法正常启动。
1,修改DBSNMP密码:
重新配置DBCONSOLE,需要输入DBSNMP密码,先检查 DBSNMP,SYS 的密码,如果密码显示错误,需要预先修改。
sql>alter user dbsnmp identified by xxx;
2,删除早期DBCONSOLE创建的用户:
sql>drop role MGMT_USER;
sql>drop user MGMT_VIEW cascade;
sql>drop user sysman cascade;
3,删除早期DBCONSOLE创建的对象:
sql>drop PUBLIC SYNONYM MGMT_TARGET_BLACKOUTS;
sql>drop public synonym SETEMVIEWUSERCONTEXT;
4,重新创建DBCONSOLE:
如果是windows 用户,还需要删除注册表Oracle选项下的 ../SYSMAN/OracleDBConsole<SID>条目。
c:\>emca 或者 emca -repos create
MCA 开始于 Mon Jan 14 10:30:44 CST 2008
输入以下有关要配置的数据库的信息
监听程序端口号: 1521
数据库 SID: 根据实际
服务名: 根据实际
通知的电子邮件地址: 可不填
通知的电子邮件网关:可不填
dbsnmp 口令:刚才改的xxx(sql>alter user dbsnmp identified by xxx;)
sysman 口令:自己输一个
sys 口令:据实
然后输入“是”系统开始自动创建。
5,创建成功后,检查状态 emctl status dbconsole。
6,服务已经启动了。如果想手动重起:
emctl stop dbconsole
emctl start dbconsole
-------------------------------------
实际上,在修改过sysman口令之后,系统就会自动将sysman锁定。每次都需要手工解锁,非常麻烦:具体问题如下:
英文版本报"The database status is currently unavailable. It is possible that the database is in mount or nomount state. Click 'Startup' to obtain the current status and open the database. If the database cannot be opened, click 'Perform Recovery' to perform an appropriate recovery operation.",中文版报“数据库状态当前不可用。可能是因为数据库的状态为装载或不装载。单击 '启动' 可以获得当前状态并打开数据库。如果无法打开数据库, 单击 '执行恢复' 可执行相应的恢复操作。”,确认Listener与服务都是正常的,数据库的状态也是启动的,无论是重新启动dbconsole还是重新配置都不起作用。
解决方法如下:
1、停止dbconsole
[oracle@abcca2210028 ~]$ emctl stop dbconsole
查看状态,确认dbconsole已经停止
[oracle@abcca2210028 ~]$ emctl status dbconsole
2、修改sysman用户的密码,我把密码改成oracle123
[oracle@abcca2210028 ~]$ sqlplus / as sysdba
SQL> alter user sysman identified by oracle123
2 /
解锁用户
SQL> alter user sysman account unlock
2 /
确认密码已修改
SQL> conn sysman/oracle123@csc
Connected.
3、转到$ORACLE_HOME/host_sid/sysman/config目录下
a. 把emoms.properties另存为emoms.properties.old
b. 修改emoms.properties文件
找到oracle.sysman.eml.mntr.emdRepPwd=把等于后的加密字串替换成刚才更改的密码oracle123;
找到oracle.sysman.eml.mntr.emdRepPwdEncrypted=TRUE 把TRUE换成FALSE。
4、重启dbconsole,访问EM恢复正常
[oracle@abcca2210028 ~]$ emctl start dbconsole
----------------------
按如上所说操作完毕之后,dbconsole可以登录,但是无法做维护。报io的一个异常:
解决:$ emctl stop dbconsole
$emca -r
修复完毕,dbconsole 可以正常使用了
附emca常用命令:
创建一个EM资料库
emca -repos create
重建一个EM资料库
emca -repos recreate
删除一个EM资料库
emca -repos drop
配置数据库的 Database Control
emca -config dbcontrol db
删除数据库的 Database Control配置
emca -deconfig dbcontrol db
重新配置db control的端口,默认端口在1158
emca -reconfig ports
emca -reconfig ports -dbcontrol_http_port 1160
emca -reconfig ports -agent_port 3940
先设置ORACLE_SID环境变量后,启动EM console服务
emctl start dbconsole
emctl stop dbconsole
emctl status dbconsole
重新配置dbconsole的步骤
emca -repos drop 删除DBConsole
emca -repos create 重建
emca -config dbcontrol db 配置
emctl start dbconsole 启动