先说下已经安装但无法访问的问题,有可能是以下几种原因导致:
1. 用户 sysman 或 dbsnmp 的密码失效或被锁定
2. 未启动
3. 当然还有数据库压根就没有正常运行
(当然一定要检查服务器的hostname名称是否配置一致,主要是这三个文件要检查:etc文件夹下hosts、network和oracle的配

置文件listener.ora里的名字是否设置相同,下面都会提到)

无论如何,如果重新配置EM 首先要用以下两个步骤(emca命令)清除em的原配置:
1、使用emca -deconfig dbcontrol db  #命令删除配置
2、使用emca -repos drop             #删除repository
清除步骤一定要做,否则可能会遇到各种奇怪的报错,如ORA-20001: SYSMAN already exists..
如果发现有ORA-12541: TNS:no listener,一定要检查lsnrctl是否启动,如果不能启动,检查$ORACLE_HOME/network/admin

下的lisener.ora和tnsnames.ora是否正确。


一、配置前的检查

A. 在重新配置前一定要先查看监听程序的状态,如果没有打开,则要打开监听:

shell> lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 21-JUL-2010 18:18:19

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                21-JUL-2010 00:49:58
Uptime                    0 days 17 hr. 28 min. 20 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/redhat/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=redhat)(PORT=1521)))
Services Summary...
Service "ORCL" has 1 instance(s).
  Instance "ORCL", status READY, has 1 handler(s) for this service...
Service "ORCLXDB" has 1 instance(s).
  Instance "ORCL", status READY, has 1 handler(s) for this service...
The command completed successfully

 
B. 要搞清楚oracle的SID、监听端口、用户sysman/dbsnmp/sys的密码和当前状态,尤其是sysman/dbsnmp不要处在锁定或失

效状态,具体怎么查询和修改,最后附带有。
 

C. 接下来配置em
使用emca -config dbcontrol db -repos create 创建Database Control
输入以下信息:
数据库 SID: ORCL
监听程序端口号: 1521
SYS 用户的口令:
DBSNMP 用户的口令:
SYSMAN 用户的口令:
通知的电子邮件地址 (可选):
通知的发件 (SMTP) 服务器 (可选):
-----------------------------------------------------------------

已指定以下设置

数据库 ORACLE_HOME ................ F:/oracle/product/10.2.0/db_1

数据库主机名 ................ redhat
监听程序端口号 ................ 1521
数据库 SID ................ ORCL
通知的电子邮件地址 ...............
通知的发件 (SMTP) 服务器 ...............

-----------------------------------------------------------------

C. 启动em:emctl start dbconsole  (关闭的话把start改成stop)
如果还是报错,检查密码文件,如果是因为密码文件不存在,要重建密码文件:
shell> orapwd file=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwORCL password=*** entries=10
给SYS赋予权限:grant sysdba to sys;
查看权限是否正常:select * from v$pwfile_users;
USERNAME                       SYSDB SYSOP SYSAS
------------------------------ ----- ----- -----
SYS                            TRUE  TRUE  FALSE

再次启动emctl start dbconsole,OK,成功了:
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0
Copyright (c) 1996, 2009 Oracle Corporation.  All rights reserved.
https://redhat:1158/em/console/aboutApplication
 - An instance of Oracle Enterprise Manager 11g Database Control is already running

接下来就可以通过http访问em:https://redhat:1158/em/console

 

如果发现 错误:The inventory pointer location /etc/oraInst.loc is either not readable or does not exist

那就检查下权限,如果没有这文件,那就用root账户新建一个,其中内容写成:

inventory_loc=/usr/oracle/oraInventory
inst_group=oracle

这里假如oracle安装在usr目录下,并且实例启动的用户和用户组为oracle

 

 

 


附:修改DBSnmp和SYSMAN密码的方法

SYSMAN和DBSNMP涉及到Oracle的EM,所以跟其他的用户修改密码方式有所区别。下面是这两个用户的默认密码和作用说

明:---------------------------------------------------------------------------

DBSNMP

DBSNMP

The account used by the Management Agent component of Oracle Enterprise Manager to monitor and manage the

database .

Oracle Enterprise Manager Grid Control Installation and Basic Configuration.

SYSMAN
CHANGE_ON_INSTALL

The account used to perform Oracle Enterprise Manager database administration tasks. Note that SYS and SYSTEM

can also perform these tasks.

Oracle Enterprise Manager Grid Control Installation and Basic Configuration

---------------------------------------------------------------------------------

错误修改可能造成的问题
如果像修改其它用户的方式修改其密码的话,登陆em,可能出现如下状态:

(1)提示Enterprise Manager 无法连接到数据库实例

(2)数据库实例,是红色向下的箭头

(3)到数据库的实例链接,是红色向下的箭头

(4)监听,绿色向上的箭头

(5)检查SYSMAN用户,处于锁定状态,使用解锁命令,又会自动锁定。

但是数据库其它一起正常。

正确的修改方式
一、SYSMAN密码修改

1、 停止dbconsole

[oracle@xxx ~]$ emctl stop dbconsole

查看状态,确认dbconsole已经停止,如果有代理要 emctl stop agent,然后 emctl status agent 查看状态。

[oracle@xxx ~]$ emctl status dbconsole

2、修改sysman用户的密码

[oracle@xxx ~]$ sqlplus / as sysdba

SQL> alter user sysman identified by "yyyy";

   不过首先你得确认一下sysman是否被锁定,就是执行
  
SQL->select username,account_status from dba_users;

   查看其中常用的用户状态是否是EXPIRED 还是LOCKED
   有的是LOCKED<TIME>,如果是LOCKED,那么你先得解锁:

SQL->alter user sysman account unlock;

   解锁完成后再修改密码,或者修改后再解锁都行,步骤可以颠倒,但是绝对不能少。

SQL> conn sysman/ yyyy @qqq

Connected.

3、转到$ORACLE_HOME/(host)_(sid)/sysman/config目录下

a. 把emoms.properties另存为emoms.properties.old

b. 修改emoms.properties文件

找到oracle.sysman.eml.mntr.emdRepPwd=把等于后的加密字串替换成刚才更改的密码yyyy;

找到oracle.sysman.eml.mntr.emdRepPwdEncrypted=TRUE 把TRUE换成FALSE。

找到后把[Your encrypted password]改成你这个用户要改的密码(明文哦,不过不用担心,重新启动后oracle会自己把False又改回去,而且会自动给你的密码加密。哈哈这个还是比较智能的!),然后把下面的True改成False.


4、重启dbconsole

[oracle@xxx ~]$emctl start dbconsole 如果有代理就启动下代理 emctl start agent

  都启动了以后你再到emoms.properties里看,是不是密码给你加密了,而且emdRepPwdEncrypted变成了True!


二、修改DBSNMP密码

修改的流程类似修改SYSMAN,只不过第3步如下:

转到$ORACLE_HOME/(host)_(sid)/sysman/emd目录下

[oracle@xxx ~]$ cp targets.xml targets.xml.bak

[oracle@xxx ~]$vi targets.xml

修改些列代码中:

<Property NAME="UserName" VALUE="6f5848a4f53a2d0a" ENCRYPTED="TRUE"/>

<Property NAME="password" VALUE="829e1a25401de489" ENCRYPTED="TRUE"/>

用新的dbsnmp的密码代替上列password的Value值,ENCRYPTED的值修改成FALSE。


三,以后sysman的密码修改不能直接在数据库里修改。

应该使用:emctl setpasswd dbconsole