故障排除:为什么 EM Express 不工作 (文档 ID 2178532.1)

文档内容


用途

排错步骤
  1- 回顾 EM Express 的基本配置
  2- 确认 XML 数据库选项已经安装并有效
  3- 确认 XML DB 注册到监听
  4- 确认 SYSTEM 账户没有被锁或者过期
  5- 使用 SYSTEM 用户连接到 XDB 服务
  6- 尝试不同的浏览器(IE,Chrome,FireFox)和/或者尝试禁用所有浏览器插件
  7- 检查是否 Flash 插件已经启用
  Web 浏览器的需求
  关于 Firefox
  关于 Google Chrome
  8- 检查 Alert 日志以及 Listener 日志看是否存在启动 EM Express URL 时的报错
 
  9- 检查 XML DB HTTP 服务器的监听终端
  10- 影响 EM Express 的已知问题:
  ORA-00600: internal error code, arguments: [kziaulslt: lid], [1821]
  ORA-00600: internal error code, arguments: [kziaulslt: lid], [1818]
  Bug 16527374 : CDB:ORA-07445:EM EXPRESS HOME GOT IO ERROR
  Connection Fail : Connection with database failed. Database instance might be down. Try again once it is up
  Detail : [IOErrorEvent type='ioError' bubbles=false cancelable=false eventPhase=2 text='Error #2032']
  ORA-07445: exception encountered: core dump [qervwRowProcedure()+] [SIGSEGV] [ADDR:0x5] [PC:0xB5C0C21] [Address not mapped to object]
  ORA-07445: exception encountered: core dump [qervwFetch()+] [ACCESS_VIOLATION] [ADDR:0x8] [PC:0x1464D2038] [UNABLE_TO_READ] []
after successfully login to EM Express the chart of [Resources] & [SQL Monitor] Charts can not be loaded , and stays loading forever

  Bug 16102371 : EM EXPRESS URL DOES NOT WORK
  Bug 16219867 : EM Express URL displayed by the DBCA summary may not work

参考


适用于:

Oracle Database - Enterprise Edition - 版本 12.1.0.1 到 12.1.0.1 [发行版 12.1]
Oracle Database - Enterprise Edition - 版本 12.1.0.2 到 12.1.0.2 [发行版 12.1]
本文档所含信息适用于所有平台

用途

 本篇文档用于故障排除为什么 EM Express 不工作。

排错步骤

1- 回顾 EM Express 的基本配置

用户在 root 和 PDB 容器上都可以配置 EM Express,每个容器使用不同的 HTTP/HTTPS 端口。当连接到 root 容器时,显示的是包含所有 PDB 的整个数据库的信息。当连接到 PDB 时,显示的信息限于 PDB。

默认地,DBCA 从5500到5599之间选择一个空闲的端口用作 EM Express 端口。

如果你想使用一个特殊的端口用作 EM Express 端口,在启动 OUI 或者 DBCA 之前使用操作系统的环境变量 DBEXPRESS_HTTPS_PORT 来指定该端口。

为了启动 EM Express,使用 DBCA 提供的 EM Express URL,它是 DBCA 在配置数据库的时候提供的。

当连接到 CDB 或者 PDB 时使用下面的查询语句生成 URL:

For HTTPS :

SQL> SELECT 'https://'||SYS_CONTEXT('USERENV','SERVER_HOST')||'.'||SYS_CONTEXT('USERENV','DB_DOMAIN')||':'||dbms_xdb_config.gethttpsport()||'/em/' from dual;

SQL> SELECT 'https://'||SYS_CONTEXT('USERENV','SERVER_HOST')||':'||dbms_xdb_config.gethttpsport()||'/em/' from dual;

  

For HTTP :

SQL> SELECT 'http://'||SYS_CONTEXT('USERENV','SERVER_HOST')||'.'||SYS_CONTEXT('USERENV','DB_DOMAIN')||':'||dbms_xdb_config.gethttpport()||'/em/' from dual;

SQL> SELECT 'http://'||SYS_CONTEXT('USERENV','SERVER_HOST')||':'||dbms_xdb_config.gethttpport()||'/em/' from dual;

  

当 EM Express 提示你输入用户名和密码时,使用 DBA 权限的用户登录(比如 SYS)。

注意:当你第一次在浏览器中输入 EM Express 的 URL 时,你的浏览器可能会显示警告消息。

EM Express 是建立在 Oracle XML DB 上的一个小服务程序(servlet)。Oracle XML DB 默认的 wallet 有一个自签名证书(self-signed certificate),一些现有的浏览器认为自签名证书是不可信的,因为它们没有被受信任的 CA(certificate authority)签署。然而,自签名证书仍然是安全的,因为它确保 Oracle XML DB 服务器和客户端(浏览器)之间的通信是加密的。

因此,在你的浏览器中为 EM Express URL 加入一个安全例外。


手动配置 EM Express 的 HTTP/HTTPS 端口:

1- 如果 listener 是运行在一个非标准端口(例如,不是 1521),那么你想要使用 EM Express 管理的数据库的 init.ora 文件里必须包含local_listener 词条以便 HTTP/HTTPS 端口能够注册到正确的 listener。local_listener 词条参考指向正确 listener 的 TNSNAMES 词条。例如:

local_listener=inst1

inst1 就是一个 TNSNAMES 词条定义在 tnsnames.ora 文件中指向 listener。例如

inst1= (ADDRESS = (PROTOCOL = TCP)(HOST = HOSTNAME_OR_IP )(PORT = 1522))


2- 在 init.ora 文件中为你要使用 EM Express 管理的数据库添加下面的词条来启动 TCP 分发器:

dispatchers="(PROTOCOL=TCP)(SERVICE=XDB)"

例如,如果数据库的 SID 是 ORCL:

SQL> alter system set dispatchers="(PROTOCOL=TCP)(SERVICE=ORCLXDB)"; 

  

3- 使用 PL/SQL 存储过程 DBMS_XDB_CONFIG.SETHTTPSPORT 为 EM Express 设置 HTTPS 端口。这将更新 Oracle XML DB 资源库中的HTTPS 端口。必须使用 connect as SYS / AS SYSDBA 来运行该存储过程。例如:

SQL> connect sys/@ as sysdba

SQL> exec DBMS_XDB_CONFIG.SETHTTPSPORT(5500);

  

或者使用 PL/SQL 存储过程 DBMS_XDB_CONFIG.SETHTTPPORT 为 EM Express 设置 HTTP 端口。这将更新 Oracle XML DB 资源库中的 HTTP 端口。

SYSDBA 来运行该存储过程。例如:

SQL> connect sys/@ as sysdba

SQL> exec DBMS_XDB_CONFIG.SETHTTPPORT(2200);

  

2- 确认 XML 数据库选项已经安装并有效

EM Express 是建立在 Oracle XML DB 上的一个小服务程序(servlet)。

确认 XML 数据库选项已经安装并且有效:

输入下面的命令来验证是否 XML 数据库选项已经安装:

SQL> DESC RESOURCE_VIEW

如果 XML DB 没有安装,该命令会返回“对象不存在”的错误。

col comp_name for a20
col version for a15

SQL> -- 检查 XDB 的状态
SQL> select comp_name, version, status
     from dba_registry
     where comp_id = 'XDB';

SQL> -- 检查无效对象
SQL> select owner, object_name, object_type, status
     from dba_objects
     where status = 'INVALID'
     and owner in ('SYS', 'XDB');

  

启动时你将在 alert 日志文件中看到如下信息:

XDB installed.

XDB initialized.

 

3- 确认 XML DB 注册到监听

启动之后在 Listener 日志中将显示如下:

Started with pid=n

...

Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=xxx.us.oracle.com)(PORT=5500))(Security=(my_wallet_directory=$ORACLE_BASE\admin\$ORACLE_SID\xdb_wallet))(Presentation=HTTP)(Session=RAW)) --> this is For HTTPS

Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xxx.us.oracle.com)(PORT=8080))(Presentation=HTTP)(Session=RAW)) --> this is For HTTP

  


或者从 lsnrctl 工具:

lsnrctl status | grep HTTP

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=xxx.us.oracle.com)(PORT=5500))(Security=(my_wallet_directory=$ORACLE_BASE\admin\$ORACLE_SID\xdb_wallet))(Presentation=HTTP)(Session=RAW)) --> this is For HTTPS

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xxx.us.oracle.com)(PORT=8080))(Presentation=HTTP)(Session=RAW)) --> this is For HTTP

 

如上信息会从 lsnrctl stat 命令的"Listening Endpoints Summary"下面呈现。

 

4- 确认 SYSTEM 账户没有被锁或者过期

 

SQL> select USERNAME,NAME,ACCOUNT_STATUS,LOCK_DATE from cdb_users u,v$containers c
where u.CON_ID=c.CON_ID and USERNAME ='SYSTEM' ;

 

需要解锁 SYSTEM 账户来使 EM Express 工作,因为 EM Express 的连接会在内部使用该用户。

如果 SYSTEM 账户被锁,你将不能够使用 EM Express,而且当尝试登录 EM Express 时会显示如下错误:

Internal Server Error 

 

并且在 alert 日志中会显示如下:

Errors in file $ORACLE_BASE\diag\rdbms\db_name\instance_name\trace\db_name_s0nn_*.trc:
ORA-28000: the account is locked

  

可以使用如下语句解锁 SYSTEM 账户:

 

SQL> alter user system account unlock;

 

 

注意:登录到 EM Express/Sqlplus 时使用 SYS as sysdba 是可行的,即使 SYS 账户被锁。


注意:SYSTEM 账户必须解锁,即使是用 SYS 登录 EM Express。

  

5- 使用 SYSTEM 用户连接到 XDB 服务

 

确认你可以使用 SYSTEM 用户从 sqlplus 连接到 XDB 服务。

 

首先,你需要为 XDB 服务创建一个 tnsnames.ora 词条,该服务在 DISPATCHERS 参数中被引用到,例如:

 

SQL> show parameter dispa

 

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dispatchers string (PROTOCOL=TCP) (SERVICE=orcl12XDB)

 


然后为 XDB 服务创建一个 tnsnames.ora 词条:

 

ORCL12XDB =
  (DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
     (CONNECT_DATA =
    (SERVICE_NAME = orcl12XDB)
  )
)

从 sqlplus 连接 :


SQL> conn system/sys@ORCL12XDB

Connected.

  

并且你可以在 listener.log 文件中看到类似的词条:

 

TIMESTAMP * (CONNECT_DATA=(SERVICE_NAME=orcl12XDB)(CID=(PROGRAM=$ORACLE_HOME\BIN\sqlplus.exe)(HOST=MREHEEM-EG)(USER=mreheem))) * (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=50330)) * establish * orcl12XDB * 0

  

6- 尝试不同的浏览器(IE,Chrome,FireFox)和/或者尝试禁用所有浏览器插件

一些浏览器插件阻塞 Flash,比如 Flashblock Plugins Toggler , ... 

并且也会阻塞 EM Express,试着禁用这些浏览器插件然后尝试重新打开 EM Express。

7- 检查是否 Flash 插件已经启用

Web 浏览器的需求

Web 浏览器必须支持 Java Script,HTML 4.0 和 CSS 1.0 标准和 Flash。满足这些需求的浏览器清单可以在 My Oracle Support 上的 Enterprise Manager 认证矩阵中看到:

https://support.oracle.com


查看: Oracle Enterprise Manager Cloud Control Basic Installation Guide 关于如何访问 Enterprise Manager 认证矩阵的步骤

关于 Firefox


在 Add-ons 菜单项,确认 Shockwave Flash 一直是激活的。

为了确认它是激活的,在地址栏输入 about:plugins 来打开插件页面。

确认 Shockwave Flash,Adobe Flash 插件都是启动的。 

关于 Google Chrome


在地址栏输入 chrome://plugins/ 打开插件页面。

在呈现的插件页面上,找到“Flash”条目。

点击该条目下方的 Enable 来启用 Adobe Flash Player。

勾选“始终允许运行”

在 Windows 2012 服务器上,Flash Player 是内嵌的,不需要再安装。

有个功能标签叫“桌面体验”,在“用户界面与基础设施”下面,默认是没有选中的。你需要选中该复选框,服务器会重启两次,完成之后flash 就会呈现。

参考: https://social.technet.microsoft.com/Forums/windowsserver/en-US/4a178833-1fe0-4cec-81b0-bb8769f0ea03/how-do-i-install-flash-player-in-server-2012?forum=winserver8gen 

  

 

 

8- 检查 Alert 日志以及 Listener 日志看是否存在启动 EM Express URL 时的报错


如果使用 HTTPS 登录 EM Express 成功时,在 listener.log 中通常会看到20条与下面相似的记录:

 

* http * (ADDRESS=(PROTOCOL=tcps)(HOST=)(PORT=n)) * handoff * http * 0


如果使用 HTTP 登录 EM Express 成功时,在 listener.log 中会看到7条与下面相似的记录:

* http * (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=n)) * handoff * http * 0

 

9- 检查 XML DB HTTP 服务器的监听终端

 

DBMS_XDB_CONFIG.SETLISTENERLOCALACCESS 存储过程限定 XML DB HTTP 服务器的所有监听终端,仅监听本机接口(TRUE),或者本机和非本机接口都监听(FALSE)。

DBMS_XDB.SETLISTENERLOCALACCESS 存储过程有同样的功能,该存储过程在 12c 版本中已经过时。

该功能被 DBMS_XDB_CONFIG package 中的 SETLISTENERLOCALACCESS 存储过程所取代。

确认下面的 PLSQL 块返回’localhost and non-localhost’:

For HTTPS :

set serveroutput on
DECLARE
hval VARCHAR2(30);
pval NUMBER;
lval NUMBER;
BEGIN
dbms_xdb_config.getListenerEndPoint(dbms_xdb_config.xdb_endpoint_http2, hval, pval, lval);
dbms_output.put_line('Host: ' || NVL(hval,'localhost and non-localhost'));
dbms_output.put_line('Port: ' || TO_CHAR(pval));
dbms_output.put_line('Protocol: ' || CASE TO_CHAR(lval) WHEN 2 THEN 'https' WHEN 1 THEN 'http' ELSE TO_CHAR(lval) end);
END;
/

  

For HTTP :

set serveroutput on
DECLARE
hval VARCHAR2(30);
pval NUMBER;
lval NUMBER;
BEGIN
dbms_xdb_config.getListenerEndPoint(dbms_xdb_config.xdb_endpoint_http, hval, pval, lval);
dbms_output.put_line('Host: ' || NVL(hval,'localhost and non-localhost'));
dbms_output.put_line('Port: ' || TO_CHAR(pval));
dbms_output.put_line('Protocol: ' || CASE TO_CHAR(lval) WHEN 2 THEN 'https' WHEN 1 THEN 'http' ELSE TO_CHAR(lval) end);
END;
/

  

如果返回'localhost'那么 EM Express 只能使用如下方式访问:

https://localhost:portnumber/em/

如果返回’localhost and non-localhost’那么下面两种方式都可以访问 EM Express:

https://localhost:portnumber/em/ 

https://database-hostname:portnumber/em/

 

为了允许 EM Express 在 localhost 和 non-localhost 的接口上都能监听:

exec DBMS_XDB_CONFIG.SETLISTENERLOCALACCESS(false);

  

10- 影响 EM Express 的已知问题:

ORA-00600: internal error code, arguments: [kziaulslt: lid], [1821]


“1821”指的是 ORA-01821: date format not recognized,意思是 NLS_TIMESTAMP_FORMAT 和/或者 NLS_DATE_FORMAT 参数的值不正确。

例如:NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MIS.FF'

请修改 NLS_TIMESTAMP_FORMAT 和/或者 NLS_DATE_FORMAT 为有效值,例如:

SQL> alter system set NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH:MI:SS.FF' scope=spfile;

SQL> alter system set NLS_DATE_FORMAT = 'MM/DD/YYYY' scope=spfile;



你可能还需要在启动数据库的用户配置文件中,设置该参数为 OS 环境变量。

然后重启数据库和监听并尝试重新打开 EM Express。

ORA-00600: internal error code, arguments: [kziaulslt: lid], [1818]


“1818”指的是:ORA-01818 : HH24' precludes use of meridiann

意思是 NLS_TIMESTAMP_FORMAT 和/或者 NLS_DATE_FORMAT 参数值,参考日期值使用24小时指标(hh24)和子午线指标(AM 或PM)。

例如:NLS_TIMESTAMP_FORMAT = 'DD/MON/YY HH24:MI:SSXFF AM'

请修改 NLS_TIMESTAMP_FORMAT 和/或者 NLS_DATE_FORMAT 为有效值,例如: SQL> alter system set NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH:MI:SS.FF' scope=spfile;


SQL> alter system set NLS_DATE_FORMAT = 'MM/DD/YYYY' scope=spfile;


你可能还需要在启动数据库的用户配置文件中,设置该参数为 OS 环境变量。

然后重启数据库和监听并尝试重新打开 EM Express。

 

Bug 16527374 : CDB:ORA-07445:EM EXPRESS HOME GOT IO ERROR

在 CDB 环境中,使用 EM Express 登录到 Root。在 Non-cdb 的环境中没有这样的问题。

Bug 的症状可以使下面任意一种:

Connection Fail : Connection with database failed. Database instance might be down. Try again once it is up Detail : [IOErrorEvent type='ioError' bubbles=false cancelable=false eventPhase=2 text='Error #2032']

TypeError: Error #1009

Connection with database failed. Database instance might be down. Try again once it is up.

ORA-07445: exception encountered: core dump [qervwRowProcedure()+] [SIGSEGV] [ADDR:0x5] [PC:0xB5C0C21] [Address not mapped to object] ORA-07445: exception encountered: core dump [qervwFetch()+] [ACCESS_VIOLATION] [ADDR:0x8] [PC:0x1464D2038] [UNABLE_TO_READ] []
after successfully login to EM Express the chart of [Resources] & [SQL Monitor] Charts can not be loaded , and stays loading forever

 [Resources] & [SQL Monitor] Charts can not be loaded , and stays loading forever

 

主页面上的其它所有部分都正确地显示,其它的分页比如配置,存储,安全,性能等,也都正确地显示。

 

这是由未公开的 bug 导致 Bug 16527374 : [12100-LIN64-130318]CDB:ORA-07445:EM EXPRESS HOME GOT IO ERROR

请安装补丁 Patch 16527374

在 Windows 平台上,该 bug 在 12.1.0.1 Bundle Patch 3 及以上的 Bundle Patches 中被修复。

Bug 16102371 : EM EXPRESS URL DOES NOT WORK

Oracle Enterprise Manager Database Express (EM Express) URL 可能在 Oracle RAC 的一个节点上不工作。

Workaround:该 bug 在 Oracle RAC 安装过程中可能会遇到。如果 EM Express URL 在 Oracle RAC 的一个节点上不工作,重启那台机器上的节点监听。

Bug 16219867 : EM Express URL displayed by the DBCA summary may not work

当 DBCA 创建了 Oracle RAC 策略管理数据库时,DBCA 概要页面上显示的 EM Express URL 可能不工作。如果本地节点不是承载数据库服务器池的一部分,该问题可能会发生。该问题只会发生在策略管理的 Oracle RAC 数据库。

EM Express 是从数据库实例正在运行的节点上配置和访问。也可以使用 scan 名来访问。

Workaround:在 EM Express URL 中使用 scan 名代替主机名。例如,考虑下面的 EM Express URL(racnode1 是节点名字):

https://racnode1.oracle.com:5500/em

你可以指定如下(scan1 是集群的 scan 名字):

https://scan1.oracle.com:5500/em

 

参考




NOTE:1601454.1 - EM Express 12c Database Administration Page FAQ




BUG:17837856 - ORA-600 [KZIAULSLT: LID], [1821]
请使用浏览器的分享功能分享到微信等