Oracle 12c Express Enterprise Manager 网页未加载

Wou*_*ter 15 oracle enterprise-manager oracle-enterprise-manager oracle-12c

问题总结

浏览到 Oracle 12c EM Express Web 界面时,使用以下 URL 时页面超时:

  • http(s)://hostname:5500/em
  • http(s)://hostname.domain:5500/em

使用包含 IP 地址或 localhost 的 url 时,页面会加载,但速度非常慢(最多 5 分钟)。

  • http(s)://ip-address/em
  • http(s)://localhost/em

使用主机名时,侦听器日志显示错误(其中多个):

03-DEC-2015 11:25:33 * http * (ADDRESS=(PROTOCOL=tcps)(HOST=<ip address>%14)(PORT=52925)) * handoff * http * 12518
TNS-12518: TNS:listener could not hand off client connection
TNS-12560: TNS:protocol adapter error
Run Code Online (Sandbox Code Playgroud)

使用 IP 地址或 localhost 时,侦听器日志没有显示错误:

03-DEC-2015 11:23:39 * http * (ADDRESS=(PROTOCOL=tcps)(HOST=<ip address>)(PORT=52902)) * handoff * http * 0
Run Code Online (Sandbox Code Playgroud)

这个问题出现在整个网络上(参见页脚中的参考资料),似乎没有人能够找到原因。我已经尝试了所有我能找到的建议,并在下面列出了结果。我会让这个伟大的社区尝试一下,然后就交给 Oracle 支持了……

平台信息

  • Windows Server 2012 R2 x64
  • 甲骨文 12.1.0.2.0
  • 具有两个可插拔数据库 (PDB) 的多租户容器数据库 (CDB)
  • 使用自动存储管理 (ASM)
  • 在服务器本地执行测试,完全禁用防火墙

已经执行的测试

emctl
很多人会建议出于习惯检查“emctl”。这在 12c 中不存在,因为它使用 EM Express 而不是数据库控制。

http/https
我已经设置好了,并针对 http 和 https 测试了这个。没有不同。

浏览器
我已经在 IE 11、chrome 和 firefox 的 vanilla 安装中对此进行了测试。未启用附加组件。

数据库访问
CDB 和 PDB 都可以通过 SQLPlus 访问和查询

Telnet
打开到端口(例如 5500)的 telnet 连接是有效的。

警报日志
Oracle 警报日志不包含任何错误消息。

我的假设

  • 与主机名查找相关的东西,因为它在使用 IP 地址而不是主机名时 - 轻微 - 工作。
  • 与证书相关的内容,尽管 http 出现了同样的问题。
  • 与 XDB 或侦听器服务的配置相关的内容。
  • 与主机名的域部分是否包含相关的内容。因为这是在大多数配置文件中添加的,但可能不是无处不在?

详细的平台信息

注意:在这些片段中,我总是用“HOSTNAME”替换实际主机名,用“域”替换实际域。如果使用“HOSTNAME”,则表示它没有以域名结尾。案例代表显示主机名的实际案例。

SYS_CONTEXT('USERENV','SERVER_HOST')
主机名

CMD
HOSTNAME 中的主机名变量

SYS_CONTEXT('USERENV','DB_DOMAIN')

dbms_xdb_config.gethttpsport()
5500

dbms_xdb_config.gethttpport()
2200

“lsnrctl 状态”输出

    LSNRCTL for 64-bit Windows: Version 12.1.0.2.0 - Production on 03-DEC-2015 15:33:12

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

    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=hostname.domain)(PORT=1521)))
    STATUS of the LISTENER
    ------------------------
    Alias                     listener
    Version                   TNSLSNR for 64-bit Windows: Version 12.1.0.2.0 - Production
    Start Date                03-DEC-2015 12:27:51
    Uptime                    0 days 3 hr. 5 min. 21 sec
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Listener Parameter File   C:\ORACLE\HOME\network\admin\listener.ora
    Listener Log File         C:\ORACLE\diag\tnslsnr\HOSTNAME\listener\alert\log.xml
    Listening Endpoints Summary...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=HOSTNAME.domain)(PORT=1521)))
      (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=HOSTNAME.domain)(PORT=2200))(Presentation=HTTP)(Session=RAW))
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=HOSTNAME.domain)(PORT=5501))(Security=(my_wallet_directory=C:\ORACLE\admin\ecoomdb\xdb_wallet))(Presentation=HTTP)(Session=RAW))
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=HOSTNAME.domain)(PORT=5500))(Security=(my_wallet_directory=C:\ORACLE\admin\ecoomdb\xdb_wallet))(Presentation=HTTP)(Session=RAW))
    Services Summary...
    Service "CLRExtProc" has 1 instance(s).
      Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
    Service "bibliodb.domain" has 1 instance(s).
      Instance "ecoomdb", status READY, has 1 handler(s) for this service...
    Service "ecoomdb.domain" has 1 instance(s).
      Instance "ecoomdb", status READY, has 1 handler(s) for this service...
    Service "ecoomdbXDB.domain" has 1 instance(s).
      Instance "ecoomdb", status READY, has 1 handler(s) for this service...
    Service "technodb.domain" has 1 instance(s).
      Instance "ecoomdb", status READY, has 1 handler(s) for this service...
    The command completed successfully
Run Code Online (Sandbox Code Playgroud)

“lsnrctl 服务”输出

    LSNRCTL for 64-bit Windows: Version 12.1.0.2.0 - Production on 03-DEC-2015 15:34:22

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

    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=HOSTNAME.domain)(PORT=1521)))
    Services Summary...
    Service "CLRExtProc" has 1 instance(s).
      Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
        Handler(s):
          "DEDICATED" established:0 refused:0
             LOCAL SERVER
    Service "bibliodb.domain" has 1 instance(s).
      Instance "ecoomdb", status READY, has 1 handler(s) for this service...
        Handler(s):
          "DEDICATED" established:9 refused:0 state:ready
             LOCAL SERVER
    Service "ecoomdb.domain" has 1 instance(s).
      Instance "ecoomdb", status READY, has 1 handler(s) for this service...
        Handler(s):
          "DEDICATED" established:9 refused:0 state:ready
             LOCAL SERVER
    Service "ecoomdbXDB.domain" has 1 instance(s).
      Instance "ecoomdb", status READY, has 1 handler(s) for this service...
        Handler(s):
          "D000" established:8 refused:21 current:0 max:1022 state:ready
             DISPATCHER <machine: HOSTNAME, pid: 4040>
             (ADDRESS=(PROTOCOL=tcp)(HOST=HOSTNAME.domain)(PORT=49179))
    Service "technodb.domain" has 1 instance(s).
      Instance "ecoomdb", status READY, has 1 handler(s) for this service...
        Handler(s):
          "DEDICATED" established:9 refused:0 state:ready
             LOCAL SERVER
    The command completed successfully
Run Code Online (Sandbox Code Playgroud)

听者.ora

    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = CLRExtProc)
          (ORACLE_HOME = C:\ORACLE\HOME)
          (PROGRAM = extproc)
          (ENVS = "EXTPROC_DLLS=ONLY:C:\ORACLE\HOME\bin\oraclr12.dll")
        )
      )

    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = HOSTNAME.domain)(PORT = 1521))
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
        )
      )
Run Code Online (Sandbox Code Playgroud)

init.ora (已修剪,还包含其他设置...)

db_domain=domain
db_name="ecoomdb"
dispatchers="(PROTOCOL=TCP) (SERVICE=ecoomdbXDB)"
local_listener=LISTENER*
Run Code Online (Sandbox Code Playgroud)

netstat -a
(相关选择)

 TCP    0.0.0.0:1521           ECONECOOMDB1:0         LISTENING
TCP    0.0.0.0:5500           ECONECOOMDB1:0         LISTENING
TCP    0.0.0.0:5501           ECONECOOMDB1:0         LISTENING
TCP    [::]:5500              ECONECOOMDB1:0         LISTENING
TCP    [::]:5501              ECONECOOMDB1:0         LISTENING
Run Code Online (Sandbox Code Playgroud)

windows hosts 文件
(此文件为空)

环境变量

  • PATH 包含 C:\ORACLE\HOME\bin
  • ORACLE_HOME = C:\ORACLE\HOME
  • ORACLE_SID = ecomdb

注册表 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDB12Home1

  • ORACLE_HOME = C:\ORACLE\HOME
  • ORACLE_SID = ecomdb

相关和重复(未回答)的问题/文件

在线资源

Stackexchange 问题

Reddit 主题

甲骨文社区

小智 2

在数据库主机上运行这些命令时会得到什么

从命令提示符处:

ping host
ping ipaddress(host ipaddress)
tnsping tnsalias
Run Code Online (Sandbox Code Playgroud)

并运行lsnrctl services并查看是否有任何连接被拒绝

如果 Oracle 客户端安装在客户端计算机上(从您访问 Oracle em Express 的位置)

从命令提示符运行:

  1. ping ipaddress(db host ipaddress) -->> 如果出现错误,请将 IP 地址和域名添加到hosts文件中
  2. tnsping tnsalias

编辑:
调度程序 D000 显示 21 个连接被拒绝。您有网络问题。

尝试重新启动侦听器并连接到 emexpress 并查看输出lsnrctl services。理想情况下,拒绝的连接数应该为零。