Questões

Questões

Eu tenho um cenário em que sessões longas e inativas deTOADSofta comunicação do cliente com o servidor Oracle parece ser interrompida à medida que atinge o tempo limite em um firewall intermediário com estado completo.

Essas sessões podem ficar inativas por várias horas!
Não é aceitável aumentar o tempo limite do firewall globalmente e,
claro, não suporta tempos limites mais longos para fluxos específicos.

Corrigi esse problema para conexões ociosas do PuTTY;
permite umkeep-alive configurável.

Porém, ainda não identifiquei nenhum suporte desse tipo no software TOAD.

Olhando um pouco sobre as configurações de todo o sistema, descobri este detalhe do Microsoft TechNet emConfigurando Keep-Alives em todo o sistemaque envolve trabalhar comKeepAliveTimee variáveis ​​de registro relacionadas.

HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parâmetros\KeepAliveTime

Isto parece oConfiguração de todo o sistema Linux para usar keep-alive em todo o sistema.
Mas, isso requer que os programas usem setsockopt()e solicitem keep-alive (certo?).

Lembre-se de que o suporte keepalive, mesmo que configurado no kernel, não é o comportamento padrão no Linux. Os programas devem solicitar controle de manutenção de atividade para seus soquetes usando a interface setsockopt. Existem relativamente poucos programas implementando keepalive...


Questões

  1. Posso usar istoTécnica KeepAliveTime nas máquinas clientes Windows ou talvez no servidor?
    (alguém já tentou?)
    • Existe alguma outra maneira de manter essas conexões TOAD ativas (de qualquer extremidade da comunicação)?

Responder1

Defina o valor deSQLNET.EXPIRE_TIMEem sqlnet.ora.

Aqui está o queo manual do oraclediz sobre este assunto:

Propósito

Use o parâmetro SQLNET.EXPIRE_TIMEpara especificar o intervalo de tempo, em minutos, para enviar uma sonda para verificar se as conexões cliente/servidor estão ativas. Definir um valor maior que 0 garante que as conexões não sejam deixadas abertas indefinidamente, devido a um encerramento anormal do cliente. Se o probe encontrar uma conexão encerrada ou que não esteja mais em uso, ele retornará um erro, fazendo com que o processo do servidor seja encerrado. Este parâmetro destina-se principalmente ao servidor de banco de dados, que normalmente lida com diversas conexões ao mesmo tempo.

As limitações ao uso deste recurso de detecção de conexão encerrada são:

  • Não é permitido em conexões legadas.
  • Embora muito pequeno, um pacote de investigação gera tráfego adicional que pode prejudicar o desempenho da rede.
  • Dependendo de qual sistema operacional está em uso, o servidor pode precisar executar processamento adicional para distinguir o evento de sondagem de conexão de outros eventos que ocorrem. Isso também pode resultar na degradação do desempenho da rede.

Padrão: 0

Valor Mínimo: 0

Valor recomendado: 10

Exemplo

SQLNET.EXPIRE_TIME=10

Responder2

Você tem acesso SSH? Você pode configurar um túnel SSH e enviar a comunicação SQL por meio dele.

TOAD: server (ou tnsnames) torna-se localhost, a porta de escuta é alguma porta aleatória, como 12346
PuTTY: encaminhamento de porta. porta de origem: 12346, destino: $REMOTE_IP:1521. Deixe-o como uma porta local.

Certifique-se de ativar os keepalives TCP no PuTTY por meio da seção Conexão.

Responder3

Encontrei isso no site da Dell e confirmei que funciona (no Toad 11.5.0.56): O Toad tem uma configuração keep alive/intervalo/ping para que a rede não atinja o tempo limite? (49507)

Para resumir - Ative a saída na janela Saída do DBMS clicando no ícone do botão vermelho à esquerda da barra de menu Saída do DBMS (ficará verde). Você pode acessar isso na guia DBMS Output ao lado da guia Data Grid ou através de View -> DBMS Output.

Isso também ativará automaticamente a votação. Na minha experiência, você precisa de saída DBMSePolling ativado para manter a conexão.

informação relacionada