解决oracle关于OEM 中“Enterprise Manager 无法连接到数据库实例”的问题

简介: 前段时间,我的OEM忽然打不开了,上面显示“Enterprise Manager 无法连接到数据库实例”,而下面的提示则是数据库实例已开启,还有代理连接也能连上,但就是打不开OEM。
前段时间,我的OEM忽然打不开了,上面显示“Enterprise Manager 无法连接到数据库实例”,而下面的提示则是数据库实例已开启,还有代理连接也能连上,但就是打不开OEM。
后来,我去网上,找了很多方法,它们不是无效,就是不能正常实行,经过了一周蛋疼的奋战,在一次重新配置DBConsole失败后,我的oracle完全坏掉了,不止是OEM的问题了,很多服务都不见了,再次尝试修复未果后,只好重装了。
然后,就是又过了一段时间,当我再次打开OEM时,它又出现这个问题了,我就发飙了,遂发誓一定要把它解决。这次我总算成功地解决了这个问题了,现把我第二次解决的经历与方法分享与下:
首先是关于网上说的sysman用户的账户问题,当时查到这么一个解决方案,说是OEM打不开是因为该账户被锁定了,于是我尝试着使用这个方法:
1、使用SQL PLUS.
    在DOS模式下运行SQL PLUS.
    SQL> conn
    请输入用户名:  sys as sysdba
    输入密码:
    连接成功
    SQL>desc dba_users                  注意:如果此时提示发现该视图无效。用D:\oracle\product\10.2.0\db_1\RDBMS\ADMINsql.bsq 新建立user_astatus_map , DBA_USERS . 否则会显示如下信息:
 名称                                      是否为空? 类型
----------------------------------------- -------- ----------------------------
USERNAME                                  NOT NULL VARCHAR2(30)
USER_ID                                   NOT NULL NUMBER
PASSWORD                                           VARCHAR2(30)
ACCOUNT_STATUS                            NOT NULL VARCHAR2(32)
LOCK_DATE                                          DATE
EXPIRY_DATE                                        DATE
DEFAULT_TABLESPACE                        NOT NULL VARCHAR2(30)
TEMPORARY_TABLESPACE                      NOT NULL VARCHAR2(30)
CREATED                                   NOT NULL DATE
PROFILE                                   NOT NULL VARCHAR2(30)
INITIAL_RSRC_CONSUMER_GROUP                        VARCHAR2(30)
EXTERNAL_NAME                                      VARCHAR2(4000)
SQL> select username,account_status from dba_users where username='SYSMAN' ;
USERNAME                       ACCOUNT_STATUS
------------------------------ --------------------------------
SYSMAN                         LOCKED
SQL>alter user sysman account unlock;
    用户已更改。
    此时系统就可以连接到数据库了。
结果发现我的账户果然是被锁定了的,按照该方法进行解锁后,再次打开OEM,还是进不去,然后在sqlplus下查看sysman用户的状态,发现又被锁定了。开始以为是因为没有在管理员权限下运行的原因(以前采用其他办法时,的确碰见过部分原因是这个),于是在管理员模式下继续改办法,无效。而且,我发现,只要每次解锁后,再次打开OEM都会在次被锁上,我就无语了。
只好再次去茫茫网络中搜寻,又被我找到了貌似的答案,由于OEM打开时会尝试使用这些这些用户连接数据库,由于profiles的限制造成锁定,于是以管理 员用户登陆到数据库:
SQL> ALTER PROFILE DEFAULT LIMITfailed_login_attempts UNLIMITED ;
配置文件已更改
然后还是不行,又有说法是密码必须改回初始密码,否则多次登录错误会造成账户被锁定,于是修改sysman密码为初始密码:
SQL> alter user system identified by ***;
用户已更改。
然后还是登不上OEM,唯一的变换就是sysman用户不会再因为登录OEM而被锁定了,每次都是OPEN,可这样我就更不知道该怎么办了。只好放弃这条路,去采取别的办法,然后再网上我又找到另外一种方式:
1、重新配置em

C:\Documents and Settings\Administrator>emca -config dbcontrol db 


EMCA 开始于 2008-12-18 13:55:39
EM Configuration Assistant 10.2.0.1.0 正式版
版权所有 (c) 2003, 2005, Oracle。保留所有权利。

输入以下信息:
数据库 SID:best

已为数据库 XBOMS 配置了 Database Control
您已选择配置 Database Control, 以便管理数据库 XBOMS
此操作将移去现有配置和默认设置, 并重新执行配置
是否继续? [yes(Y)/no(N)]:Y
监听程序端口号:1521
SYS 用户的口令:
DBSNMP 用户的口令:
SYSMAN 用户的口令: (如果提示密码不对的话,用alter user SYSMAN identified by xxx 来改)
通知的电子邮件地址 (可选):
通知的发件 (SMTP) 服务器 (可选):
-----------------------------------------------------------------

已指定以下设置

数据库 ORACLE_HOME ................ E:\oracle\product\10.2.0\db_1

数据库主机名 ................ wuhao

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

-----------------------------------------------------------------
是否继续? [yes(Y)/no(N)]:Y
2008-12-18 13:57:04 oracle.sysman.emcp.EMConfig perform
信息: 正在将此操作记录到 E:\oracle\product\10.2.0\db_1\cfgtoollogs\emca\XBOMS\em
ca_2008-12-18_01-55-39-下午.log。
2008-12-18 13:57:12 oracle.sysman.emcp.util.DBControlUtil stopOMS
信息: 正在停止 Database Control (此操作可能需要一段时间)...
2008-12-18 13:57:59 oracle.sysman.emcp.util.DBControlUtil startOMS
信息: 正在启动 Database Control (此操作可能需要一段时间)...
2008-12-18 13:58:39 oracle.sysman.emcp.EMDBPostConfig performConfiguration
信息: 已成功启动 Database Control
2008-12-18 13:58:39 oracle.sysman.emcp.EMDBPostConfig performConfiguration
警告: 无法创建 Database Control 快捷方式
2008-12-18 13:58:39 oracle.sysman.emcp.EMDBPostConfig performConfiguration
信息: >>>>>>>>>>> Database Control URL 为 http://wuhao:5500/em<<<<<<<<<<<
已成功完成 Enterprise Manager 的配置
EMCA 结束于 2008-12-18 13:58:39

再次打开成功!
上帝总是希望熊猫能多承受一些苦难,所以理所当然,“再次打开成功” 没有应验在我的电脑上,而且我记得以前用过这种方式,触动错误还是一模一样的:
2011-8-3 3:05:05 oracle.sysman.emcp.EMConfig perform
信息: 正在将此操作记录到 D:\app\zhou\cfgtoollogs\emca\orcl\emca_2011_08_03_03_04_31.log。
2011-8-3 3:05:05 oracle.sysman.emcp.EMConfig perform
严重: 监听程序未启动或数据库服务未注册到该监听程序。启动该监听程序并注册数据库服务, 然后重新运行 EM Configuration Assistant。
有关详细资料, 请参阅 D:\app\zhou\cfgtoollogs\emca\orcl\emca_2011_08_03_03_04_31.log 中的日志文件。
无法完成配置。 有关详细资料, 请参阅 D:\app\zhou\cfgtoollogs\emca\orcl\emca_2011_08_03_03_04_31.log 中的日志文件。
  很显然,我的监听器是打开的,很不甘心,于是这次我专门针对这个严重错误去搜索,有很多种说法,有用net manager配置路径的,但我好不容易找到它在哪里,打开后却发现不知道怎么配置,于是换个方案:
 
  
不重建emca,先emca -repos drop删除emca,然后emca -config dbcontrol db重建emca吧。
  看到这个方案就伤心,还记得上一次我的oracle就是被这个方案搞坏的,终于这次没敢尝试,于是继续搜索:
 
  

经过仔细研究发现,在emConfig.log中使用如下hostname:

配置: connectDesc : (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=BlueAeri-PC)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))

但是在listener.ora中是这样的:

(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

显然 BlueAeri-PC 是不能访问 localhost的,因此有两个解决方法:

1、单机用户适用:增加操作系统环境变量:ORACLE_HOSTNAME=localhost

2、服务器适用:在listener.ora中增加对BlueAeri-PC或ip地址的侦听

提示,在emConfig.log中仍然会报以下错误,不过不用理会:

配置: 未设置参数 ORACLE_HOSTNAME 的值。

我记得以前找过的许多方法都说是IP问题了,于是兴致勃勃的去找到这两个文件打开一看,又傻眼了,他们都是localhost,我就无语了,最后在抱着试一试的心态下,我给电脑配置了ORACLE_HOSTNAME的环境变量,然后,重新配置em,十多分钟后……竟然配置成功了,接着,我怀着七上八下的心打开浏览器,终于见到了我可爱的登陆界面,尝试登陆也成功了,有时候,幸福就是来的这么突然,在你快要放弃的时候它就突然出现在你眼前。

总结:oracle的服务是很脆弱的,对IP特别敏感,在个人电脑上(因为服务器一般不会随便变更IP地址)这点尤为重要,所以我们在关电脑前最好先把oracle的服务都关了。(其实对于这个问题的解决的麻烦过程,主要还在于对oracle的三层结果不是很清楚,其底层配置命令的用途究竟为何也不甚了解,所以以后如果选择oracle数据库的童鞋一定要首先对其整个结构有了基础的了解,才不会在这些蛋疼的问题上浪费时间,OVER!!!)

目录
相关文章
|
7天前
|
DataWorks Oracle 关系型数据库
DataWorks操作报错合集之尝试从Oracle数据库同步数据到TDSQL的PG版本,并遇到了与RAW字段相关的语法错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
26 0
|
7天前
|
SQL 关系型数据库 MySQL
【Go语言专栏】使用Go语言连接MySQL数据库
【4月更文挑战第30天】本文介绍了如何使用Go语言连接和操作MySQL数据库,包括选择`go-sql-driver/mysql`驱动、安装导入、建立连接、执行SQL查询、插入/更新/删除操作、事务处理以及性能优化和最佳实践。通过示例代码,展示了连接数据库、使用连接池、事务管理和性能调优的方法,帮助开发者构建高效、稳定的Web应用。
|
1天前
|
SQL JSON 关系型数据库
[UE虚幻引擎插件DTPostgreSQL] PostgreSQL Connector 使用蓝图连接操作 PostgreSQL 数据库说明
本插件主要是支持在UE蓝图中连接和操作PostgreSQL 数据库。
|
5天前
|
Java 关系型数据库 数据库连接
【C 言专栏】C 语言与数据库的连接与操作
【5月更文挑战第2天】本文探讨了C语言如何连接和操作数据库,介绍了数据库连接的基本原理,如通过ODBC、JDBC或原生接口与数据库交互。文章详细阐述了使用ODBC连接的步骤,并列举了C语言在数据库操作中的常见任务,强调了错误处理、数据类型匹配和性能优化的重要性。通过实际案例,展示了在学生信息管理系统中应用C语言与数据库交互的过程。本文旨在帮助读者更好地理解和应用C语言进行数据库管理。
|
7天前
|
分布式计算 DataWorks 安全
DataWorks产品使用合集之在DataWorks中,“项目空间”、“数据库”和“引擎实例”之间存在怎样的关系
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
23 0
|
7天前
|
关系型数据库 MySQL PHP
【PHP 开发专栏】PHP 连接 MySQL 数据库的方法
【4月更文挑战第30天】本文介绍了 PHP 连接 MySQL 的两种主要方法:mysqli 和 PDO 扩展,包括连接、查询和处理结果的基本步骤。还讨论了连接参数设置、常见问题及解决方法,如连接失败、权限和字符集问题。此外,提到了高级技巧如使用连接池和缓存连接信息以优化性能。最后,通过实际案例分析了在用户登录系统和数据管理中的应用。
|
7天前
|
运维 分布式计算 DataWorks
DataWorks产品使用合集之dataworks为子账号创建DataWorks访问密钥的基本步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
25 0
|
7天前
|
DataWorks 安全 数据库
DataWorks产品使用合集之在DataWorks中,使用Power BI Desktop来连接Hologres数据库需要设置白名单如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
29 2
|
8天前
|
SQL DataWorks 网络安全
DataWorks操作报错合集之DataWorks连接Hive数据库时出现连接超时的问题如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
10 1
|
8天前
|
弹性计算 关系型数据库 MySQL
检测MySQL 数据库连接数量
【4月更文挑战第29天】
6 0

推荐镜像

更多