• Nenhum resultado encontrado

As ações de rastreio e operações da forma como acontecem dentro de seu ambiente podem fornecer informações úteis quando lidamos com resolução de um problema. É possível obter, descarregar e formatar um rastreio tirado de um produto de servidor de banco de dados DB2. O recurso de rastreio é fornecido como parte do produto de servidor de banco de dados DB2.

Obtendo um Rastreio do DB2 Utilizando db2trc

O comando db2trc controla o recurso de rastreio fornecido com o DB2. O recurso de rastreio registra informações sobre as operações e formata essas informações em um formulário legível.

Lembre-se de que ocorre um aumento de overhead quando um rastreio está executando, portanto a ativação do recurso de rastreio pode prejudicar o desempenho de seu sistema.

Em geral, o IBM Software Support e as equipes de desenvolvimento usam rastreios do DB2 para resolução de problemas. Você pode executar um rastreio para obter informações sobre um problema que você está investigando, mas o uso dessas informações é limitado sem o conhecimento do código-fonte do DB2.

Entretanto, é importante saber como acionar corretamente o rastreio e como descarregar os arquivos de rastreio, apenas para o caso de eles serem solicitados a você.

Nota: Pode ser necessário ter uma autoridade SYSADM, SYSCTRL ou SYSMAINT para usar o db2trc

Para ter uma idéia geral das opções disponíveis, execute o comando db2trc sem qualquer parâmetro:

C:\>db2trc

Uso: db2trc (chg|clr|dmp|flw|fmt|inf|off|on) options

Para obter mais informações sobre um parâmetro de comando db2trc específico, use a opção -u. Por exemplo, para ver mais informações sobre como ajustar o rastreio, execute o seguinte comando:

db2trc on -u

Isso fornecerá informações sobre todas as opções adicionais (rotuladas como ″recursos″) que podem ser especificadas ao acionar um rastreio do DB2.

Ao acionar um rastreio, a opção mais importante é -L. Isso especifica o tamanho do buffer de memória que será usado para armazenar as informações que estão sendo rastreadas. O tamanho do buffer pode ser especificado em bytes ou megabytes. (Para especificar megabytes anexados em″M″ ou ″m″ após o valor). O tamanho do buffer de rastreio deve ser um poder de dois megabytes. Se você especificar um tamanho que não atende esse requisito, o tamanho do buffer ficará automaticamente em torno de um poder mais próximo de dois.

Se o buffer for pequeno demais, as informações poderão ser perdidas. Por padrão, somente as informações de rastreio mais recentes serão mantidas se o buffer ficar cheio. Se o buffer for muito grande, talvez seja difícil enviar o arquivo à equipe do IBM Software Support.

Se o rastreio de uma operação que é relativamente curta (tal como uma conexão com o banco de dados), um tamanho de aproximadamente 8 MB é geralmente suficiente:

C:\> db2trc on -l 8M O rastreio é acionado

Entretanto, se você estiver rastreando uma operação maior ou se um lote de trabalho estiver em andamento ao mesmo tempo, um buffer de rastreio maior poderá ser necessário.

Em muitas plataformas, o rastreio pode ser acionado a qualquer momento e funciona conforme descrito acima. Entretanto, há certas situações a considerar: 1. Em vários sistemas de partição de banco de dados, é necessário executar um

rastreio para cada partição de banco de dados física (oposto à lógica).

2. Em plataformas HP-UX, Linux e Solaris, se o rastreio for desligado depois de iniciada a instância, será usado um buffer bem pequeno na próxima vez que o rastreio for iniciado, independentemente do tamanho especificado. Por

exemplo, ontem você acionou um rastreio usando db2trc on -l 8m, então coletou um rastreio e depois desligou o rastreio (db2trc off). Hoje você precisa executar um rastreio com um conjunto de buffer de memória para 32

megabytes (db2trc on -l 32m), sem desativar a instância e reiniciar. Perceberá que nesse caso, o rastreio terá apenas um buffer pequeno. Para executar

efetivamente um rastreio nessas plataformas, acione o rastreio antes de iniciar a instância com o tamanho de buffer que precisa e “limpe” o buffer conforme necessário posteriormente.

Efetuando Dumping em um Arquivo de Rastreio do DB2

Após o recurso de rastreio ter sido ativado usando a opção ON, todo o trabalho subsequente feito pela instância será rastreado.

Enquanto o rastreio está em execução, é possível usar a opção clr para limpar o buffer de rastreio. Todas as informações existentes no buffer de rastreio serão removidas.

C:\>db2trc clr

O rastreio foi apagado

Uma vez concluída a operação que está sendo rastreada, use a opção dmp seguida por um nome de arquivo de rastreio para fazer dump do buffer de memória no disco. Por exemplo:

C:\>db2trc dmp trace.dmp

O rastreio foi descarregado no arquivo.

O recurso de rastreio continuará executando após o descarregamento do buffer de rastreio no disco. Para desligar o rastreio, use a opção OFF:

C:\>db2trc off

Formatando um Arquivo de Rastreio do DB2

O arquivo de dump criado pelo comando db2trc dmp está no formato binário e não é legível. Para verificar se um arquivo de rastreio pode ser lido, formate o arquivo de rastreio binário para mostrar o controle de fluxo e envie a saída formatada para um dispositivo nulo.

O exemplo a seguir mostra o comando para executar essa tarefa:

db2trc flw example.trc nul

em que example.trc é um arquivo binário produzido usando a opção dmp.

A saída para esse comando será descrita explicitamente se houver um problema na leitura do arquivo, sendo o rastreio agrupado ou não.

Neste momento, o arquivo dump pode ser enviado ao IBM Software Support. Eles então formatarão o arquivo de acordo com o nível de serviço do DB2. Entretanto, você pode ser solicitado, às vezes, a formatar o arquivo de dump no formato ASCII antes de enviá-lo. Isso é feito através das opções flw e fmt. Você deve fornecer o nome do arquivo dump binário juntamente com o nome do arquivo ASCII que deseja criar:

C:\>db2trc flw trace.dmp trace.flw C:\Temp>db2trc flw trace.dmp trace.flw Total number of trace records : 18854

Trace truncated : NO

Trace wrapped : NO

Number of trace records formatted : 1513 (pid: 2196 tid 2148 node: -1) Number of trace records formatted : 100 (pid: 1568 tid 1304 node: 0) ...

C:\>db2trc fmt trace.dmp trace.fmt C:\Temp>db2trc fmt trace.dmp trace.fmt

Trace truncated : NO

Trace wrapped : NO

Total number of trace records : 18854 Number of trace records formatted : 18854

Se essa saída indica que ″Trace wrapped″ é ″YES″, então isso significa que o buffer de rastreio não está grande o suficiente para conter todas as informações coletadas durante o período de rastreio. Um rastreio agrupado pode ser bom, dependendo da situação. Se você estiver interessado em informações mais recentes (essa é a informação padrão mantida, a menos que a opção -i seja especificada), então o que está no arquivo de rastreio pode ser suficiente. Entretanto, se você estiver

interessado em algo que aconteceu no início do período de rastreio ou se estiver interessado em tudo o que aconteceu, precisará refazer a operação com um buffer de rastreio maior.

Há opções disponíveis quando se formata um arquivo binário em um arquivo de texto legível. Por exemplo, é possível usar db2trc fmt -xml trace.dmp trace.fmt para converter os dados binários e exibir o resultado em um formato XML analisável. As opções adicionais estão mostradas na descrição detalhada do comando de rastreio (db2trc).

Outra coisa a considerar é que em sistemas operacionais Linux e UNIX, o DB2 descarregará automaticamente o buffer de rastreio no disco quando encerrar a instância, devido a um erro grave. Assim, se o rastreio estiver ativado quando uma instância for encerrada irregularmente, será criado um arquivo no diretório de diagnóstico e seu nome será db2trdmp.###, sendo que ### é o número de partição

de banco de dados. Isso não ocorre em plataformas Windows. Você precisa fazer descarregamento do rastreio manualmente nessas situações.

Para resumir, a seguir está um exemplo da seqüência comum dos comandos db2trc:

db2trc on -l 8M db2trc clr

<Execute problem recreation commands> db2trc dump db2trc.dmp

db2trc off db2trc flw db2trc.dmp <filename>.flw db2trc fmt db2trc.dmp <filename>.fmt