文档内容
|
|
用途 |
|
|
排错步骤 |
|
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] |
| 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=
例如,如果数据库的 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/
SQL> exec DBMS_XDB_CONFIG.SETHTTPSPORT(5500);
或者使用 PL/SQL 存储过程 DBMS_XDB_CONFIG.SETHTTPPORT 为 EM Express 设置 HTTP 端口。这将更新 Oracle XML DB 资源库中的 HTTP 端口。
SYSDBA 来运行该存储过程。例如:
SQL> connect sys/
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 a20col 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 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 账户没有被锁或者过期
where u.CON_ID=c.CON_ID and USERNAME ='SYSTEM' ;
需要解锁 SYSTEM 账户来使 EM Express 工作,因为 EM Express 的连接会在内部使用该用户。
如果 SYSTEM 账户被锁,你将不能够使用 EM Express,而且当尝试登录 EM Express 时会显示如下错误:
Internal Server Error
并且在 alert 日志中会显示如下:
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 文件中看到类似的词条:
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 认证矩阵的步骤
在 Add-ons 菜单项,确认 Shockwave Flash 一直是激活的。
为了确认它是激活的,在地址栏输入 about:plugins 来打开插件页面。
确认 Shockwave Flash,Adobe Flash 插件都是启动的。
在地址栏输入 chrome://plugins/ 打开插件页面。
在呈现的插件页面上,找到“Flash”条目。
点击该条目下方的 Enable 来启用 Adobe Flash Player。
勾选“始终允许运行”
在 Windows 2012 服务器上,Flash Player 是内嵌的,不需要再安装。
有个功能标签叫“桌面体验”,在“用户界面与基础设施”下面,默认是没有选中的。你需要选中该复选框,服务器会重启两次,完成之后flash 就会呈现。
8- 检查 Alert 日志以及 Listener 日志看是否存在启动 EM Express URL 时的报错
如果使用 HTTPS 登录 EM Express 成功时,在 listener.log 中通常会看到20条与下面相似的记录:
如果使用 HTTP 登录 EM Express 成功时,在 listener.log 中会看到7条与下面相似的记录:
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 :
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 :
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 的接口上都能监听:
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_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 的症状可以使下面任意一种:
after successfully login to EM Express the chart of [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]