Temos um servidor com Oracle 11g e um banco de dados. O administrador da rede adicionou um domínio alias ao ip do servidor onde está o oracle.
Não mudamos mais nada. Depois disso, quando o servidor SSRS solicita dados do oracle, às vezes (não o tempo todo) lança um dos seguintes erros :
- ORA-12518: TNS:listener could not hand off client connection
- ORA-12520: TNS:listener could not find available handler for requested type of server
O erro nem sempre acontece, mas se vários usuários estão tentando executar um relatório, às vezes o erro aumenta, às vezes não.
Pesquisei no listener.log e descobri que tem linhas:
* service_update * my_service_name * 0
Abaixo dou alguns exemplos do listener.log e dos diferentes servidores que se conectam para pedir dados:
01-FEB-2023 15:50:25 * (CONNECT_DATA=(SERVER=DEDICADO)(SERVICE_NAME=ORAMAIL2)(CID=(PROGRAM=....EmailImageProcessingService.dll)(HOST=WinServices)(USER=windows.service) )) * (ADDRESS=(PROTOCOL=tcp)(HOST=00.00.00.000)(PORT=00000)) * estabelecer * ORAMAIL2 * 0
01-FEB-2023 15:50:31 * (CONNECT_DATA=(SERVER=DEDICADO)(SERVICE_NAME=ORAMAIL2)(CID=(PROGRAM=....EmailImageProcessingService.dll)(HOST=WinServices)(USER=windows.service) )) * (ADDRESS=(PROTOCOL=tcp)(HOST=11.11.11.111)(PORT=00000)) * estabelecer * ORAMAIL2 * 0
01-FEB-2023 15:50:31 * (CONNECT_DATA=(SERVER=DEDICADO)(SERVICE_NAME=ORAMAIL2)(CID=(PROGRAM=oracle@oracle)(HOST=oracle)(USER=oracle))) * (ADDRESS= (PROTOCOL=tcp)(HOST=22.22.22.2222)(PORT=9076)) * estabelecer * ORAMAIL2 * 0
01-FEB-2023 15:50:34 * service_update * oramail2 * 0
01-FEB-2023 15:50:37 * service_update * oramail2 * 0
01-FEB-2023 15:50:39 * (CONNECT_DATA=(SERVICE_NAME=ORAMAIL2)(CID=(PROGRAM=...\ReportingServicesService.exe)(HOST=SQL2019)(USER=SQLServerReportingServices))) * (ADDRESS=( PROTOCOL=tcp)(HOST=11.11.11.1111)(PORT=00000)) * estabelecer * ORAMAIL2 * 0
Verifiquei os processos e sessões e estamos muito abaixo do limite do parâmetro:
select current_utilization, limit_value ,resource_name
From v$resource_limit
Where resource_name IN ('sessions','processes');
processes
CURRENT_UTILIZATION 37 LIMIT_VALUE 800
sessions
CURRENT_UTILIZATION 41 LIMIT_VALUE 1224
Nada mais mudou, exceto que o nome de domínio foi adicionado pelo administrador da rede.
Preciso mudar alguma coisa no listener?
O problema era MAX_UTILIZATION de processos, mas não era no Oracle Server que estava conectado ao SSRS !
Em alguns relatórios no SSRS, havia alguns dados que chamavam alguns objetos que referenciavam dados de outro servidor (digamos, Oracle Server B)! O Oracle Server B às vezes atingiu o limite em processos, então o erro gerado no SSRS era do Oracle Server B, não do Oracle Server conectado ao SSRS.
Abaixo estão os processos e sessões do Oracle Server B:
Então aumentei o limite de processos:
e então planejei uma reinicialização do banco de dados para implementar a mudança.