Os aplicativos .NET 4.0 param repentinamente de funcionar com erro TNS (IIS 7.5, cliente Oracle 11.2.0)

Os aplicativos .NET 4.0 param repentinamente de funcionar com erro TNS (IIS 7.5, cliente Oracle 11.2.0)

Eu apoio um servidor web IIS 7.5 e estou tendo alguns problemas com meus pools de aplicativos. O que estou vendo é que, de vez em quando, os aplicativos que usam conexões com bancos de dados Oracle param de funcionar e geram um erro "ORA-12154: TNS: não foi possível resolver o identificador de conexão especificado". O que é enlouquecedor é que nada mudou no servidor de banco de dados, no servidor web ou dentro do aplicativo. Eu tentei um TNS Ping no banco de dados e ele se conecta perfeitamente. Os aplicativos no mesmo pool de aplicativos que usam bancos de dados SQL Server não parecem ter problemas.

IMPORTANTE: se eu alterar o aplicativo para pertencer a um pool de aplicativos diferente, ele começará a funcionar novamente. Se eu voltar ao pool de aplicativos original, o erro persistirá.

O que poderia estar acontecendo aqui? Não sei por que o problema surgiu do nada e afetou apenas alguns pools.

Obrigado!

Responder1

Tente executar ping no seu ouvinte TNS para ver se acontece algo assim no Linux:

tnsping oracle
...
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oracle)))
...
OK (2311770 msec)

Se estiver ativo, mas você não consegue obter o status do ouvinte TNS assim:

lsnrctl status
TNS-01153: Failed to process string: �9M0

Tente forçar o ouvinte a atualizar sem erros com o seguinte comando (novamente, este é o linux, procure um comando equivalente do Windows Server):

lsnrctl start oracle
TNS-01106: Listener using listener name LISTENER has already been started

Pode estar relacionado com hardware/e/ou/ajuste ruim do Oracle/e/ou/má configuração do Oracle. Eu tenho exatamente o mesmo erro que você, exceto que estou executando o Apache-Tomcat como um servidor web, e imediatamente após iniciar o servidor web meu serviço oracle para (erro TNS:listener e no meu webapp vejo a exceção Socket Time Out) não é como se você tivesse a chance de realmente executar seus aplicativos por um tempo antes que o serviço TNS pare, acho que é a parte do sistema operacional.

Estou usando uma máquina virtual, VM Fusion com CentOS 6.6 instalado, esta VM funciona bem em apenas 1 de 3 laptops diferentes, posso confirmar que pode estar relacionado à memória RAM, como fica a RAM do seu servidor quando isso acontece? Eu aumentei isso várias vezes e ele corrigiu o problema, mas depois voltou e a única maneira de se livrar dele era monitorar a RAM e limpá-la automaticamente quando atingir o máximo e forçar a execução com:

lsnrctl start oracle

informação relacionada