无法加载Oracle 12c Express企业管理器网页


13

问题总结

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

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

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

  • http(s):// ip地址/ 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

使用IP地址或localhost时,侦听器日志未显示任何错误:

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

这个问题在整个网络上都会出现(请参阅页脚中的参考资料),而且似乎没有人能够找到原因。我已尝试-可以找到所有建议,并在下面列出结果。我会让这个强大的社区对此有所帮助,然后由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的原始安装中对此进行了测试。没有启用附加组件。

数据库访问
CDB和PDB均可通过SQLPlus进行访问和查询

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

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

我的假设

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

详细的平台信息

注意:在这些代码段中,我始终将实际主机名替换为“ HOSTNAME”,并将实际域替换为“ domain”。如果使用“ 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

“ 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

listener.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))
        )
      )

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

db_domain=domain
db_name="ecoomdb"
dispatchers="(PROTOCOL=TCP) (SERVICE=ecoomdbXDB)"
local_listener=LISTENER*

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

Windows主机文件
(此文件为空)

环境变量

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

注册表 HKEY_LOCAL_MACHINE \ SOFTWARE \ ORACLE \ KEY_OraDB12Home1

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

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

在线资源

Stackexchange问​​题

Reddit线程

Oracle社区


是您的计算机的主机名在DNS中,还是已将其添加到主机文件中?
Philᵀᴹ

主机文件为空。不确定如何精确管理主机名,但是网络使用ActiveDirectory服务器,在该服务器中使用其主机名注册了服务器,而DNS服务器则将其识别为主机名。
Wouter

听起来像DNS问题/超时一样可疑。
菲尔ᵀᴹ

关于如何调试,跟踪确切原因的任何想法?
Wouter

Answers:


2

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

从命令提示符ping主机ping ip地址(主机ip地址)tnsping tnsalias

并运行lsnrctl服务,并查看是否拒绝任何连接

如果客户端计算机上安装了oracle客户端(从中访问oracle em express的位置)

从命令提示符运行1)ping ipaddress(db host ipaddress)->>如果出现错误,请在主机文件中添加ipaddress和域名2)tnsping tnsalias

编辑:

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

尝试重新启动侦听器并连接到em express,然后查看lsnrctl服务输出,理想情况下,拒绝的连接应为零。


我正在数据库主机上运行所有测试。ping主机名和ipaddress,并tnsping到CDB和PDB的工作正常。关于拒绝连接的好消息!我已经重新启动了侦听器,并使用了主机名-EM-URL:同样的问题“网页不可用”,lsnerctl显示XDB尚无条目。使用ip-EM-URL时,EM加载(缓慢),我得到一个XDB条目,但没有拒绝的连接。我不知道该怎么做,但是也许对您有用吗?
Wouter

1
容器db的这两个命令的输出是什么?从双选SELECT UTL_INADDR.get_host_address; 从双重选择UTL_INADDR.get_host_name;

host_address返回ipv6地址,主机返回大写的主机名,不附加域。我还运行了RDA报告,该报告显示“ DNS查找-失败”。另外,使用主机名时,Cloud Control无法安装,但使用IP地址时,则可以使用。我现在确定这是某种DNS问题,我对如何调试/分析一无所知...
Wouter 2015年

1

与Oracle支持人员联系后,我(很高兴)能够弄清楚发生了什么。该服务器具有4个网络适配器,1个连接到网络的适配器和3个未配置的适配器连接到iSCSI存储。问题似乎是由Web客户端或EM服务器(此处不确定)试图将网页请求发送到错误的适配器引起的。

对于遇到相同问题的任何人,您都可以通过浏览到URL(使用hostname.domain)然后检查listener.log文件(-oracle_base- / diag / tnslsnr / -instance- / listener / trace / listener)来进行检查。日志)。对我来说,错误消息中显示的IP地址与服务器主网络适配器的IP地址不同。连接到iSCSI的网络适配器之一的IP地址,如图所示。当我在原始帖子中省略IP地址时,我没有发现该IP地址的差异。

18-DEC-2015 14:17:04 * http * (ADDRESS=(PROTOCOL=tcps)(HOST=<NOT SERVER IP address!>%14)(PORT=62119)) * handoff * http * 12518
TNS-12518: TNS:listener could not hand off client connection
 TNS-12560: TNS:protocol adapter error

禁用其他网络适配器时,一切正常。

另外,在chrome中转到“ chrome:// net-internals /#dns”时,为我的主机名显示了所有四个网络适配器的IP地址。

显然,当从另一台主机浏览到该网页时,不会发生此问题。此外,nslookup仅返回正确的IP地址。因此,这似乎不是DNS问题,而是本地问题。我认为这不能完全解决问题,因为禁用网络适配器不是最终的解决方案,但我希望将来面对此问题的任何人现在都可以“继续努力” ...

DNS服务器返回的IP地址与Web浏览器使用的IP地址之间的差异从何而来?

我还做了一些可能影响最终解决方案的其他更改,因此为了完整起见,我将它们包括在内。不确定是否相关...:

  • 数据库的处理参数从300增加到1000
  • 通过添加“(DISPATCHERS = 5)”来更改“ dispatchers”参数

0

尝试使用IP地址:

http(s)://192.168.1.100:5500/em

这样,您一定会打到绑定到ip的网卡。


我假设您是说,尝试将端口号添加到URL?在我的帖子中,我说我尝试了http(s):// ip-address / em,但是,我怀疑这是一个错字,实际上我尝试了端口号。我认为它不会在默认端口(80)上完全加载。无论哪种方式,由于我们已经从Oracle切换到SQL Server,因此我现在无法进行测试,并且永远都不会回头。除了巨大的环境外,Oracle在其他任何方面都没有意义。
Wouter

0

在Windows 2016上安装Oracle 12.2.0.1之后,我遇到了同样的问题。

首先,我发现TCP / IPv6已打开,因此我将其关闭。

然后尝试遵循Oracle注释编号(文档ID 1608258.1)-12c EM Express在Web浏览器中显示“无效证书错误”。

也没有用。

我用老派的方法修好了... :)

我发现Windows用户Oracle_DBA(已登录PC并用于安装Oracle 12c)对文件夹“ xdb_wallet”下的2个文件没有任何权限。

所以:

1-我将文件夹“ xdb_wallet”的所有权从原来的更改为Oracle_DBA:

在此处输入图片说明

2-将文件夹“ xdb_wallet”下的2个文件(ewallet.p12,cwallet.sso)的所有权从原来的所有权更改为Oracle_DBA:

在此处输入图片说明

3-我再次执行步骤1,并检查2文件的所有权已更改。

网站 https:// hostname:5500 / em 在FireFox上运行良好,因为IE11 / Win2016在Flash Player中存在有趣的问题。

从安全角度来看,我不知道这意味着什么(步骤1-3),或者由于这些更改而可能发生的威胁。

如果您知道,请提出建议。


-1

验证/etc/hosts文件中主机名的IP地址

例如,以下是我的主机文件

127.0.0.1       localhost
10.148.180.115  tom

tom是我的主机名,是我的主机10.148.180.115的IP地址

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.