terça-feira, 8 de setembro de 2009

GERANDO TRACES PARA LISTENER

Olá pessoal, como estão todos?

Bem , primeiramente peço desculpas pela demora dos post’s, andei meio atarefado com algumas coisas do cotidiano de um DBA, e acabei que não conseguindo pensar em um assunto interessante e útil para todos.

No entanto ao ler alguns de meus livros antigos achei um assunto que deve ser comentado ou até mesmo merece um POST , este assunto trata-se de TRACES para LISTENER, vocês vão me chamar de “maluco”, porque este já é o segundo post sobre traces, ou eu gosto muito de traces ou então sou verdadeiramente louco(risos...). Na verdade é que este tipo de prática, a geração de traces, são as que sempre salvam a vida de um DBA na hora de identificar quaisquer que sejam os problemas que estejam ocorrendo em seu Database ou até mesmo em seu Ambiente como um todo.

De acordo com o que sabemos é possível sim gerar um trace file para as conexões estabelecidas pelo LISTENER do nosso banco de dados, para aqueles que ainda não sabem ou apenas preferem relembrar, o serviço de LISTENER é o responsável por assegurar que as requisições enviadas para a nossa Base de Dados , através de um client Oracle, por meio de parâmetros existentes no arquivo de TNSNAMES.ORA, faz com que nossa conexão a base de dados seja possível, criando assim para nós um “Processo Servidor”, onde poderemos executar todas as nossas tarefas, administrativas ou não.

A grande maioria das pessoas que optam por criarem seus LISTENER’s manualmente, ou até mesmo aquelas que usam o WIZARD ( Não há mal algum nisso.), podem sim facilmente encontrar problemas ao tentar colocar o serviço no ar, ou até mesmo ao tentar estabelecer remotamente via client oracle uma conexão a base de dados, a maioria desses erros de NETWORK como conhecemos vem acompanhados da codificação ORA-012xxx, a maioria dos erros ORA-12 alguma coisa, são erros co-relacionados, senão a parametrização de conectividade, ou também por falhas ocorridas em nosso ambiente, tais como uma placa de redes desabilitada, um serviço fora do ar, um IP configurado de maneira errada e por ai vai.

Bem vamos então ver como podemos utilizar nosso trace de listener para podermos ter mais uma arma na manga, nunca se sabe quando precisaremos.

Espero que apreciem o post, e não deixem de dar suas opiniões.

HABILITANDO TRACE PARA LISTENER


Através do nosso aplicativo de LISTENER, um programa interno e que vem junto com o pacote de instalação do banco de dados, podemos habilitar o modo de trace para as tentativas com ou sem sucesso de conexão ao nosso banco de dados. Vocês poderiam perguntar o seguinte : MAS JÁ TEMOS OS LOGS GERADOS PELO SQLNET.ORA OU OS LOGS GERADOS PELO PRÓPRIO BANCO DE DADO CERTO?

Sim, é correto afirmar que sim, mas os log’s só nos diram se a conexão foi feita ou não, o trace serve exatamente pra elucidar e dar mais informações sobre o que realmente possa ter ocorrido na hora da tentativa de estabelecimento de conexão ao nosso Banco de Dados.

Vejamos:

1-) Execute o Listener em uma janela DOS (Windows) ou em uma janela Terminal (Linux) :

LSNRCTL > set trc_level ADMIN

Nota: Aqui colocamos o nosso Listener no modo ADMIn, para que todas as entradas que houverem em seu arquivos e todas as tentativas de estabelecer uma conexão , sejam monitoradas e jogadas para um arquivo externo para ser lido posteiormente.

Para desabilitarmos essa opção é simples,basta proceder da seguinte forma :

LSNRCTL> set trc_level OFF

Perfeito, assim como qualquer arquivo de trace que se preze, este vem na forma criptografada, impossível de ser lido sem uma devida interpretação.

Para que possamos dar forma ao nosso arquivo de trace de listener usaremos um assistente que também vem junto com o pacote de instalação do nosso Banco de Dados, o TRCASST, que pode ser usado para debugar o arquivo de traces de listener nos auxiliando em sua interpretação.

Vamos então compreender algumas das opções que poderemos usar para que possamos extrair do nosso arquivos de trace de listener , maiores informações que nos auxiliem na identificação e resolução do problema :


• -o : mostram os serviços e as informações TTC ( Two Task Common ). Podemos combinas esta opção com as seguintes
• c : esta opção sumariza as informações relativas as conexões.
• d : oferece detalhamento das informações das conexões.
• u : sumariza as informações sobre TTC.
• t : detalha as informações sobre as conexões TTC.
• q : esta opção é para comandos SQL e pode ser combinada com a opção u.


Outra opção a ser utilizada na linha de comando de analise é a:

• -e : que nos mostrará as informações relativas a erros, e que pode ser facilmente combinada as seguintes opções:
• 0 : traduz para nós os úmeros de erros NS
• 1 : mostra apenas tradução dos erros.
• 2 : mostra o numero dos erros sem as traduções
.

Temos mais uma opção a ser utilizada na linha de comandos :

• -l : exibe os serviços e informações sobre TTC, cominamos esta opção com as seguintes variações .
• a : mostra os dados para todas conexões no seu trace file.
• i : mostra os dados de uma determinada ID da opção -la

E para fecharmos a opção final :

• -s : nos mostra sumarizadamente as estatiticas, inclusive exibindo os totais de bytes enviados e recebidos , bem como o maximo de cursores abertos, total de chamadas, parse counts e mais.

Abaixo veremos uma simples opção de geração arquivo OUTPUT do nosso trace de lsitener :

Trcasst –odt –e0 –s [filename]

Vejamo como fica :

[oracle@pelspos7h trace]$ trcasst -odt -e0 -s listener.trc

Trace Assistant Utility: Version 10.2.0.4.0 Production on September 8, 2009 11:40:03 AM

Copyright (c) 2001, 2007, Oracle. All rights reserved.


*************************************************************************
* Trace Assistant *
*************************************************************************


----------------------
Trace File Statistics:
----------------------
Total number of Sessions: 0

DATABASE:
Operation Count: 0 OPENS, 0 PARSES, 0 EXECUTES, 0 FETCHES

ORACLE NET SERVICES:
Total Calls : 0 sent, 0 received, 0 oci
Total Bytes : 0 sent, 0 received
Average Bytes: sent per packet, received per packet
Maximum Bytes: 0 sent, 0 received

Grand Total Packets: 0 sent, 0 received


*************************************************************************
* Trace Assistant has completed *
*************************************************************************
[oracle@pelspos7h trace]$


Bem pessoal, é isso, espero que gostem de mais essa dica, e que aproveitem para utilize-la quando necessário for. Obrigado á todos e até logo.