A página do Oracle 12c Express Enterprise Manager não carrega

13

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

Tópicos do Reddit

Comunidade Oracle

Wouter
fonte
O nome do host da sua máquina está no DNS ou você o adicionou ao arquivo de hosts?
Philᵀᴹ
O arquivo hosts está vazio. Não tenho certeza de como exatamente o nome do host é gerenciado, mas a rede usa um servidor ActiveDirectory em que o servidor está registrado com o nome do host e os servidores DNS o reconhecem como tal.
Wouter
Tudo parece suspeito como problemas de DNS / tempos limite.
Philᵀᴹ
Alguma idéia de como depurar, rastrear a causa exata?
Wouter

Respostas:

2

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
Estou executando todos os testes no host db. O ping do nome do host e do endereço de ip e o tnsping para CDB e PDB funcionam bem. Boa captura sobre as conexões recusadas! Reiniciei o ouvinte e usei o nome do host-EM-URL: mesmo problema "página da Web não disponível" e lsnerctl não mostra nenhuma entrada ainda para o XDB. Ao usar o ip-EM-URL, o EM carrega (lentamente) e recebo uma entrada XDB, mas não há conexões recusadas. Eu não tenho idéia do que fazer com isso, mas talvez isso faça com você?
Wouter
1
qual é a saída desses dois comandos do container db? SELECT UTL_INADDR.get_host_address de dual; SELECT UTL_INADDR.get_host_name de dual;
host_address retorna um endereço ipv6, o host retorna o nome do host em maiúsculas, sem o domínio anexado. Também publiquei um relatório da RDA, que mostrava "Pesquisa de DNS - FAILED". Além disso, o Cloud Control falha na instalação ao usar o nome do host, mas funciona ao usar o endereço IP. Agora estou certo que este é algum tipo de problema de DNS, só estou à nora sobre como debug / analisar ...
Wouter
1

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.

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

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 ...:

  • Parâmetro de processos aumentado do banco de dados de 300 para 1000
  • Alterado o parâmetro "dispatchers" adicionando "(DISPATCHERS = 5)"
Wouter
fonte
0

Tente usar o endereço IP:

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

Dessa forma, você terá a certeza de acertar a ligação da placa de rede ao ip.

Brian McGinity
fonte
Suponho que você queira dizer, tente adicionar o número da porta ao URL? No meu post, eu disse que tentei http (s): // endereço IP / em, no entanto, suspeito que seja um erro de digitação e realmente tentei com o número da porta. Eu não acho que seria carregado em toda a porta padrão (80). De qualquer maneira, não tenho como testar isso agora, já que mudamos do Oracle para o SQL Server e nunca iremos olhar para trás. O Oracle simplesmente não faz sentido em nada, exceto em ambientes colossais.
Wouter
0

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:

insira a descrição da imagem aqui

2- alterou a propriedade dos 2 arquivos (ewallet.p12, cwallet.sso) na pasta "xdb_wallet" de qualquer que fosse o Oracle_DBA:

insira a descrição da imagem aqui

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.

Najee Ghanim
fonte
-1

Verifique o endereço IP do nome do host no /etc/hostsarquivo

por exemplo, a seguir está o meu arquivo hosts

127.0.0.1       localhost
10.148.180.115  tom

tomé o meu nome de host e 10.148.180.115é o endereço IP do meu host

user123317
fonte