Oracle 12c Express Enterprise Manager 網頁無法載入
問題總結
瀏覽到 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
使用 IP 地址或 localhost 時,偵聽器日誌未顯示錯誤:
03-DEC-2015 11:23:39 * http * (ADDRESS=(PROTOCOL=tcps)(HOST=<ip address>)(PORT=52902)) * handoff * http * 0
這個問題出現在整個網路上(請參閱頁腳中的參考資料),似乎沒有人能夠找到導致此問題的原因。我已經嘗試了所有我能找到的建議,並在下面列出了結果。我會讓這個偉大的社區嘗試一下,然後交給 Oracle 支持…
平台資訊
- Windows 伺服器 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 地址而不是主機名時有效。
- 與證書相關的東西,雖然同樣的問題出現在 http.
- 與 XDB 或偵聽器服務的配置有關的東西。
- 與是否包含主機名的域部分相關的內容。因為這是在大多數配置文件中添加的,但可能不是無處不在?
詳細的平台資訊
注意:在這些片段中,我總是用“HOSTNAME”替換實際主機名,用“domain”替換實際域。如果使用“HOSTNAME”,則表示它沒有以域名結尾。case 表示顯示主機名的實際情況。
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
監聽器.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 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 問題
- 無法打開/連接到 Oracle 12c Enterprise Manager Express
- Oracle 12c Enterprise Manager Database Express 的“無法顯示頁面”
- 在 Windows 7 中啟動 Oracle 12c 企業管理器
- 如何執行 ORACLE 12C EM?
- Centos 6.5 上的 Oracle 12c Express Enterprise Manager 無法訪問
Reddit 執行緒
- https://www.reddit.com/r/oracle/comments/2pq7wz/oracle_12c_express_enterprise_manager/
- https://www.reddit.com/r/oracle/comments/29npk2/having_trouble_getting_enterprise_manager_express/
甲骨文社區
- https://community.oracle.com/thread/3595774?start=0&tstart=0
- https://community.oracle.com/thread/2590962?start=0&tstart=0
- https://community.oracle.com/thread/3730316?start=0&tstart=0
- https://community.oracle.com/thread/3739356?start=0&tstart=0
- https://community.oracle.com/thread/3682977?start=0&tstart=0
在聯繫 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地址與網頁瀏覽器使用的IP地址之間的差異從何而來?
我還做了一些可能會影響最終解決方案的其他更改,因此為了完整起見,我將包括它們。不確定是否相關…:
- 將數據庫的流程參數從 300 增加到 1000
- 通過添加“(DISPATCHERS=5)”更改了“dispatchers”參數
在 db host 上執行這些命令會得到什麼
從命令提示符:
ping host ping ipaddress(host ipaddress) tnsping tnsalias
並執行
lsnrctl services
並查看是否有任何連接被拒絕如果客戶端電腦上安裝了 oracle 客戶端(從您訪問 oracle em express 的位置)
從命令提示符執行:
ping ipaddress
(db host ipaddress) –>> 如果出現錯誤,請將 IP 地址和域名添加到hosts
文件中tnsping tnsalias
編輯:
調度程序 D000 顯示 21 個連接被拒絕。你有網路問題。
嘗試重新啟動偵聽器並連接到 em express 並查看
lsnrctl services
輸出。理想情況下,拒絕的連接數應為零。