TNS-12541: TNS:não há listener TNS-12560: TNS:erro de adaptador de protocolo

Posted: 13/09/2012 in Oracle Database
Etiquetas:, , , ,

Fala moçada, hoje vou postar um incidente que aconteceu durante um atendimento a um cliente com Oracle Database 10g esta semana.

Logo pela manha o cliente me ligou informando que o banco de dados não estava diponivel. Mão a massa, primera checagem sempre o bom e velho alert log. Até ai tudo indo muito bem, nenhum problema, nada encontrado no aler.og, entao fiz a checagem dos servicos oracle que estavam rodando na máquina e lá estavam eles, todos rodando. Status do banco verificado: OPEN …ótimo.

Segundo passo, checar o listener. E logo de cara  a surpresa:

 

[oracle@base ~]$ lsnrctl status

LSNRCTL for Linux: Version 9.2.0.6.0 – Production on 10-SET-2012 08:38:57

Copyright (c) 1991, 2002, Oracle Corporation.  All rights reserved.

Conectando a (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
TNS-12541: TNS:não há listener
TNS-12560: TNS:erro de adaptador de protocolo
TNS-00511: Não há listener
Linux Error: 111: Connection refused
Conectando a (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=cliente)(PORT=1521)))
TNS-12541: TNS:não há listener
TNS-12560: TNS:erro de adaptador de protocolo
TNS-00511: Não há listener
Linux Error: 111: Connection refused

Até ai tudo bem, vamos tentar subir o listener:
[oracle@base ~]$ lsnrctl start

LSNRCTL for Linux: Version 9.2.0.6.0 – Production on 10-SET-2012 08:37:51

Copyright (c) 1991, 2002, Oracle Corporation.  All rights reserved.

Iniciando /disk0/oracle/product/9.2.0/orcl/bin/tnslsnr: aguarde…

TNS-12547: TNS:contato perdido
TNS-12560: TNS:erro de adaptador de protocolo
TNS-00517: Contato perdido
Linux Error: 32: Broken pipe

 

E ai a grande surpresa. A primeira ação após este erro foi consultar o Metalink e verificar quais as melhores praticas para solucionar este caso mas a tentativa foi em vão, muitas sugestoes para aplicar patch e procedimentos que num primeiro momento nao tinham muito a ver com meu problema. Depois de muito tempo analisando toda essa documentacao uma luz no fim do túnel. Um artigo bem simples  (nao lembro agora qual, mas vou procurar para colocar como referencia) onde o DBA por um problema semelhante.

Solução:

Verificar o tamanho do arquivo de log do LISTENER.LOG ($ORACLE_HOME/network/admin). Aos amigos SYSADMIN, algo muito comum acontece no SQUID quando um arquivo de log atinge 2 GB e o proxy cai. NEste caso, a correcao foi parecida.

[oracle@base log]$ ls -lh
total 2,1G
-rw-rw-r–  1 oracle oinstall  813 Jul 28  2009 dbsnmp.nohup
-rw-rw-r–  1 oracle oinstall 2,0G Set 10 01:44 listener.log
-rw-r–r–  1 oracle oinstall 3,4M Ago 13 17:15 sqlnet.log

Olha o danado lá. Bom, o passo agora é recriar o arquivo fazendo um backup do antigo:

[oracle@base log]$ mv listener.log listener.log.old
[oracle@base log]$ touch listener.log
[oracle@base log]$ chown oracle.oinstall listener.log   (atenção no grupo que o usuario oracle faz parte, no meu caso era oinstall)

Verificando se tudo esta ok, arquivo novo criado com sucesso:

[oracle@base log]$ ls -lh
total 2,1G
-rw-rw-r–  1 oracle oinstall  813 Jul 28  2009 dbsnmp.nohup
-rw-r–r–  1 oracle oinstall    0 Set 10 08:40 listener.log
-rw-rw-r–  1 oracle oinstall 2,0G Set 10 01:44 listener.log.old
-rw-r–r–  1 oracle oinstall 3,4M Ago 13 17:15 sqlnet.log

E o grande final para nossa alegria:
[oracle@base log]$ lsnrctl start

LSNRCTL for Linux: Version 9.2.0.6.0 – Production on 10-SET-2012 08:40:48

Copyright (c) 1991, 2002, Oracle Corporation.  All rights reserved.

Iniciando /disk0/oracle/product/9.2.0/orcl/bin/tnslsnr: aguarde…

TNSLSNR for Linux: Version 9.2.0.6.0 – Production
O arquivo de parâmetros do sistema é /disk0/oracle/product/9.2.0/orcl/network/admin/listener.ora
Mensagem de log gravada para /disk0/oracle/product/9.2.0/orcl/network/log/listener.log
Atendendo em: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
Atendendo em: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=cliente.localdomain)(PORT=1521)))

Conectando a (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
STATUS do LISTENER
————————
Apelido                   LISTENER
Versão                   TNSLSNR for Linux: Version 9.2.0.6.0 – Production
Data Inicial                10-SET-2012 08:40:48
Tempo de funcionamento                    0 dias 0 hr. 0 min. 0 seg
Nível de Análise               off
Segurança                  OFF
SNMP                      OFF
Arquivo de Parâmetros do Listener   /disk0/oracle/product/9.2.0/orcl/network/admin/listener.ora
Arquivo de Log do Listener         /disk0/oracle/product/9.2.0/orcl/network/log/listener.log
Resumo de Atendimento…
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=cliente.localdomain)(PORT=1521)))
Resumo de Serviços…
O serviço “PLSExtProc” tem 1 instância(s).
Instância “PLSExtProc”, status UNKNOWN, tem 1 handler(s) para este serviço…
O serviço “orcl” tem 1 instância(s).
Instância “orcl”, status UNKNOWN, tem 1 handler(s) para este serviço…
O comando foi executado com êxito

Bom pessoal , é isso ai…espero que esse caso possa ajudar em problema semelhantes. Um grande abraço e até a proxima !

Comentários
  1. Lucas Leme diz:

    Tenho uma base Oracle 11g, que toda vez que reinicio a base apresenta esse erro, quando deleto o arquivo de log do listener, funciona normalmente! Porém o arquivo de log está com apenas 7 MB de tamanho.
    Assim toda vez que preciso dar Shutdown na base , tenho que excluir o arquivo de log do listener.
    Alguém tem ideia do que pode estar ocorrendo?

    OBS: no mesmo servidor tenho mais 6 bases oracle 11 e nenhuma delas apresenta essa situação.

    Agradeço a Ajuda!

    • Lucas, obrigado por acessar o blog.
      Poderia postar aqui o conteudo do arquivo listener.ora e o resultado do comando show parameter listener.

      • Lucas Leme diz:

        Parameter:

        NAME TYPE VALUE
        ———————————— ———– ——————————
        listener_networks string
        local_listener string (address=(protocol=tcp)(host=192.168.12.21)(port=1578))
        remote_listener string

        Listener desse DB_HOME:

        # listener.ora Network Configuration File: /app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
        # Generated by Oracle configuration tools.

        ADR_BASE_LISTENER_PTAMPROD = /app/oracle

        LISTENER_PTAMPROD =
        (DESCRIPTION_LIST =
        (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.12.21)(PORT = 1535))
        )
        )

        ADR_BASE_LISTENER_RMSHML = /app/oracle

        LISTENER_RMSHML =
        (DESCRIPTION_LIST =
        (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.12.21)(PORT = 1578))
        )
        )

      • Lucas Leme diz:

        Obrigado!

Deixe um comentário