Resumo do problema
Ao navegar para a interface da web Oracle 12c EM Express, a página atinge o tempo limite ao usar um URL como:
- http (s): // nome do host: 5500 / em
- http (s): //hostname.domain: 5500 / em
Ao usar um URL que contém o endereço IP ou host local, a página é carregada, mas muito lentamente (até 5 minutos).
- http (s): // endereço IP / em
- http (s): // localhost / em
Ao usar o nome do host, o log do ouvinte mostra erros (vários deles):
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
Ao usar o endereço IP ou o host local, o log do ouvinte não mostra erros:
03-DEC-2015 11:23:39 * http * (ADDRESS=(PROTOCOL=tcps)(HOST=<ip address>)(PORT=52902)) * handoff * http * 0
Esse problema aparece em toda a web (consulte as referências no rodapé) e ninguém parece ser capaz de encontrar a causa disso. Tentei todas as sugestões que encontrei e listei os resultados abaixo. Deixarei que essa grande comunidade tenha uma rachadura e depois recorra ao suporte da Oracle ...
Informações da plataforma
- Windows Server 2012 R2 x64
- Oracle 12.1.0.2.0
- Um banco de dados de contêiner multitenant (CDB) com dois bancos de dados conectáveis (PDB)
- O Gerenciamento Automático de Armazenamento (ASM) não está sendo usado
- Executando testes localmente no servidor, com o firewall completamente desativado
Testes já realizados
emctl
Muitas pessoas sugerem verificar "emctl" por hábito. Isso não existe para 12c, pois usa o EM Express e não o controle do banco de dados.
http / https
que eu configurei e testei isso para http e https. Não faz diferença.
Navegador
Testei isso em instalações de baunilha do IE 11, chrome e firefox. Nenhum complemento ativado.
Acesso ao banco de dados
Tanto o CDB quanto o PDB podem ser acessados e consultas através do SQLPlus
Telnet A
abertura de conexões telnet para as portas (por exemplo, 5500) funciona.
Registro de alertas
O registro de alertas do Oracle não contém nenhuma mensagem de erro.
Minhas hipóteses
- Algo relacionado à pesquisa de nome de host, uma vez que funciona muito bem ao usar o endereço IP em vez do nome do host.
- Algo relacionado ao certificado, embora o mesmo problema apareça para http.
- Algo relacionado à configuração do serviço XDB ou ouvinte.
- Algo relacionado à parte do domínio do nome do host sendo incluída ou não. Como isso é adicionado na maioria dos arquivos de configuração, mas talvez não em todos os lugares?
Informações detalhadas da plataforma
Nota: nesses trechos, sempre substituí o nome do host real por "HOSTNAME" e o domínio real por "domain". Se "HOSTNAME" for usado, significa que não foi seguido pelo nome de domínio. O caso representa o caso real em que o nome do host é exibido.
SYS_CONTEXT ( 'server_host' 'USERENV')
hostname
variável hostname no CMD
HOSTNAME
SYS_CONTEXT ( 'USERENV' 'DB_DOMAIN')
domínio
dbms_xdb_config.gethttpsport ()
5500
dbms_xdb_config.gethttpport ()
2200
Saída "lsnrctl status"
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
Saída "lsnrctl services"
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 (Aparado, também contém outras configurações ...)
db_domain=domain
db_name="ecoomdb"
dispatchers="(PROTOCOL=TCP) (SERVICE=ecoomdbXDB)"
local_listener=LISTENER*
netstat -a
(seleção relevante)
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
arquivo hosts do windows
(esse arquivo está vazio)
Variáveis ambientais
- PATH contém C: \ ORACLE \ HOME \ bin
- ORACLE_HOME = C: \ ORACLE \ HOME
- ORACLE_SID = ecoomdb
Registro HKEY_LOCAL_MACHINE \ SOFTWARE \ ORACLE \ KEY_OraDB12Home1
- ORACLE_HOME = C: \ ORACLE \ HOME
- ORACLE_SID = ecoomdb
Questões / documentos relacionados e duplicados (sem resposta)
Recursos online
Perguntas sobre Stackexchange
- Não foi possível abrir / conectar-se ao Oracle 12c Enterprise Manager Express
- "Não foi possível exibir a página" com o Oracle 12c Enterprise Manager Database Express
- Inicie o Oracle 12c enterprise manager no Windows 7
- Como executar o ORACLE 12C EM?
- O Oracle 12c Express Enterprise Manager no Centos 6.5 não está acessível
Tópicos do 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/
Comunidade Oracle
- 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
Respostas:
O que você obtém ao executar esses comandos no host db
do prompt de comando host de ping ping endereço de ip (endereço de host host) tnsping tnsalias
e execute serviços lsnrctl e veja se alguma conexão foi recusada
se o cliente oracle estiver instalado na máquina cliente (de onde você está acessando o oracle em express)
execute a partir do prompt de comando 1) ping ipaddress (db host ipaddress) - >> se você receber um erro, adicione ipaddress e nome de domínio ao arquivo hosts 2) tnsping tnsalias
Editar:
O Dispatcher D000 mostra 21 conexões recusadas. Você tem um problema de rede.
Tente reiniciar o ouvinte e conectar-se ao em express e veja a saída dos serviços lsnrctl idealmente, as conexões recusadas devem ser zero.
fonte
Depois de entrar em contato com o suporte da Oracle, eu meio que consegui descobrir o que estava acontecendo. Este servidor possui 4 adaptadores de rede, 1 adaptador conectado à rede e 3 adaptadores não configurados conectados a um armazenamento iSCSI. O problema parece ser causado pelo cliente da Web ou pelo servidor EM (não tenho certeza aqui) tentando enviar a solicitação de página da Web para o adaptador errado.
Para qualquer pessoa que enfrenta o mesmo problema, pode verificar isso navegando até o URL (usando o nome do host.domínio) e depois verificando o arquivo listener.log (-oracle_base- / diag / tnslsnr / -instance- / listener / trace / listener. registro). Para mim, na mensagem de erro, foi exibido um endereço IP diferente do endereço IP dos adaptadores de rede principal dos servidores. O endereço IP de um dos adaptadores de rede conectados ao iSCSI, onde mostrado. Ao omitir os endereços IP na minha postagem original, não identifiquei essa diferença de endereço IP.
Ao desativar os adaptadores de rede adicionais, tudo funciona bem.
Além disso, ao acessar "chrome: // net-internals / # dns" no chrome, os endereços IP dos quatro adaptadores de rede apareceram para o meu nome de host.
Aparentemente, esse problema - não acontece - ao navegar para a página da Web de outro host. Além disso, o nslookup retorna apenas o endereço IP correto. Portanto, parece que este não é um problema de DNS, mas um problema local. Penso que esta não é uma resposta completa para o problema, uma vez que desabilitar os adaptadores de rede não pode ser uma solução final, mas espero que qualquer pessoa que enfrente esse problema no futuro tenha "mais a seguir" agora ...
De onde vem a discrepância entre o endereço IP retornado pelo servidor DNS e os endereços IP usados pelos navegadores da web?
Também fiz algumas alterações adicionais que podem ter influenciado a solução final; portanto, para ser completo, incluí-las. Não tenho certeza se relevante ...:
fonte
Tente usar o endereço IP:
Dessa forma, você terá a certeza de acertar a ligação da placa de rede ao ip.
fonte
Eu tive o mesmo problema depois de instalar o Oracle 12.2.0.1 no Windows 2016.
Primeiro, descobri que o TCP / IPv6 estava ativado e o desativei.
Em seguida, tentei seguir o Número da nota Oracle (ID do documento 1608258.1) - 12c EM Express mostra Erro de certificado inválido no navegador da web.
Também não funcionou.
Corrigi-o pela velha escola ... :)
Descobri que o usuário do Windows Oracle_DBA (que efetuou logon no PC e costumava instalar o Oracle 12c) não tem permissão nos 2 arquivos da pasta "xdb_wallet".
Então:
1- Alterei a propriedade da pasta "xdb_wallet" de qualquer que fosse para Oracle_DBA:
2- alterou a propriedade dos 2 arquivos (ewallet.p12, cwallet.sso) na pasta "xdb_wallet" de qualquer que fosse o Oracle_DBA:
3- Executei a etapa 1 novamente e verifiquei se a propriedade foi alterada para o arquivo 2.
O site https: // hostname: 5500 / em funcionou bem no FireFox, porque o IE11 / Win2016 tem problemas engraçados com o Flash Player.
Do ponto de vista da segurança, não sei o que isso significa (etapas 1 a 3) ou que ameaças podem acontecer devido a essas alterações.
Por favor, conselhos se você souber.
fonte
Verifique o endereço IP do nome do host no
/etc/hosts
arquivopor exemplo, a seguir está o meu arquivo hosts
tom
é o meu nome de host e10.148.180.115
é o endereço IP do meu hostfonte