Monitoramento de Eventos da Unidade de Trabalho

O monitor de eventos da unidade de trabalho registra um evento sempre que uma unidade de trabalho é concluída, ou seja, sempre que há um commit ou uma reversão. Essas informações históricas sobre unidades individuais de trabalho são úteis para fins de chargeback (cobrança pelo uso da CPU) e para monitorar a conformidade com os objetivos de nível de serviço de tempo de resposta.

O monitor de eventos da unidade de trabalho é uma maneira de realizar o monitoramento da perspectiva do sistema com métricas de solicitação. As alternativas ou complementos mais relacionados ao monitor de eventos de unidade de trabalho são o monitor de eventos de estatísticas e as funções de tabela MON_GET_UNIT_OF_WORK e MON_GET_UNIT_OF_WORK_DETAILS.

Você pode usar o monitor de eventos da unidade de trabalho para coletar uma listagem dos pacotes usados em uma unidade de trabalho e o nível de aninhamento em que foram usados. Essas informações ajudam a facilitar a solução de problemas de procedimentos armazenados. Você também pode gerar uma listagem dos IDs executáveis e métricas associadas em nível de expressão para expressões executadas em uma unidade de trabalho.

Para criar o monitor de eventos de unidade de trabalho e coletar dados do monitor de eventos de unidade de trabalho, você deve ter autoridade DBADM ou SQLADM.

Criação de um monitor de eventos de unidade de trabalho

Você tem a opção de gravar a saída de um monitor de evento de unidade de trabalho em uma tabela de eventos não formatada (UE) ou em uma tabela normal. Consulte Opções de saída para monitores de eventos para obter mais informações sobre como escolher o formato de saída mais adequado.

Qualquer que seja o tipo de tabela utilizado, ao criar um monitor de eventos de unidade de trabalho, identifique o espaço de tabela onde planeja armazenar a tabela ou tabelas que contêm a saída do monitor de eventos. A prática recomendada é ter um espaço de tabela dedicado e configurado para armazenar a tabela. No entanto, ao criar um monitor de eventos, você pode especificar um espaço de tabela existente. Se você não especificar um espaço de mesa, um será escolhido para você.

Para criar um monitor de eventos de unidade de trabalho usando padrões e práticas recomendadas, use o comando CREATE EVENT MONITOR. O exemplo de instrução a seguir usa os padrões sempre que possível e especifica que a saída será armazenada em uma tabela UE no espaço de tabela MY_EVMON_TABLESPACE:
CREATE EVENT MONITOR MY_UOW_EVMON
  FOR UNIT OF WORK
   WRITE TO UNFORMATTED EVENT TABLE (IN MY_EVMON_TABLESPACE)

Configuração da coleta de dados

É possível especificar quatro níveis de coleta diferentes para os dados da unidade de trabalho:
  1. Nenhum
  2. Unidade básica de dados de trabalho
    1. Informações sobre os pacotes que foram executados na unidade de trabalho
    2. Uma lista de IDs executáveis para instruções que foram executadas na unidade de trabalho.
É possível usar os parâmetros de configuração do banco de dados para controlar a coleta de dados da unidade de trabalho para todos os monitores de eventos da unidade de trabalho que estão ativos no banco de dados. Como alternativa, para controlar a coleta de informações para cargas de trabalho, classes de serviço ou ações de trabalho específicas, você pode usar as instruções CREATE e ALTER para os objetos de carga de trabalho apropriados.
Para configurar a coleta de dados no nível do banco de dados, defina o parâmetro de configuração do banco de dados mon_uow_data e, opcionalmente, os parâmetros de configuração do banco de dados mon_uow_pkglist e mon_uow_execlist usando o comando UPDATE DATABASE CONFIGURATION. As combinações possíveis de valores para esses parâmetros são mostradas na Tabela 1 :
Tabela 1. Valores possíveis para os parâmetros de configuração do monitor de eventos da unidade de trabalho
Dados para Coleta mon_uow_data mon_uow_pkglist mon_uow_execlist
Não coletar dados de unidade de trabalho none (padrão) OFF (padrão) OFF (padrão)
Coletar apenas dados da unidade básica de trabalho Base OFF (padrão) OFF (padrão)
Coletar informações da lista de pacotes, mas não informações sobre IDs de executáveis Base ATIVADO OFF (padrão)
Coletar informações sobre IDs de executáveis, mas não uma lista de pacotes Base OFF (padrão) ATIVADO
Coletar dados da unidade básica de trabalho, informações da lista de pacotes e informações sobre IDs executáveis Base ATIVADO ATIVADO
Dicas:
  • Se você não definir nenhum dos parâmetros de configuração, nenhum dado de unidade de trabalho será coletado, a menos que você ative a coleta para objetos de carga de trabalho específicos. Você pode ativar a coleta para objetos de carga de trabalho específicos usando a instrução CREATE ou ALTER para o tipo de objeto de carga de trabalho apropriado, por exemplo, a instrução CREATE SERVICE CLASS ou ALTER WORKLOAD.
  • Para coletar dados básicos de unidade de trabalho, mas sem lista de pacotes ou informações de ID de executável, você pode definir o parâmetro de configuração mon_uow_data como BASE e omitir os parâmetros de configuração mon_uow_pkglist e mon_uow_execlist. Se você não os definir explicitamente, será usado o valor padrão OFF.
  • Para coletar uma ou ambas as informações da lista de pacotes e da ID do executável, você também deve definir o parâmetro de configuração mon_uow_data como BASE. Se você definir o parâmetro de configuração mon_uow_data como NONE, nenhuma informação será coletada, independentemente das definições dos parâmetros de configuração mon_uow_pkglist e mon_uow_execlist.
Para controlar a coleta de dados para objetos de carga de trabalho específicos, use a cláusula COLLECT UNIT OF WORK DATA da instrução CREATE ou ALTER para o tipo específico de objeto de carga de trabalho no qual você está interessado. Por exemplo, para coletar dados de eventos da unidade básica de trabalho e informações da lista de pacotes para os REPORTS de carga de trabalho, você pode emitir uma declaração como esta:
ALTER WORKLOAD REPORTS COLLECT UNIT OF WORK DATA BASE INCLUDE PACKAGE LIST
Para coletar informações da lista de pacotes e uma lista de IDs executáveis para instruções que são executadas na unidade de trabalho, você pode usar esta instrução:
ALTER WORKLOAD REPORTS COLLECT UNIT OF WORK DATA BASE INCLUDE PACKAGE LIST,
 EXECUTABLE LIST
As configurações mostradas na Tabela 1 se aplicam a todas as cargas de trabalho em execução no sistema, a menos que você substitua essas configurações para cargas de trabalho específicas usando a instrução CREATE WORKLOAD ou ALTER WORKLOAD. Se você quiser coletar informações de nível básico para todas as cargas de trabalho, mas também quiser coletar informações de lista de pacotes para cargas de trabalho selecionadas, defina o parâmetro de configuração do banco de dados mon_uow_data como BASE. Em seguida, use a instrução CREATE WORKLOAD ou ALTER WORKLOAD para definir o nível como BASE PACKAGE LIST para as cargas de trabalho nas quais você está interessado.
Por padrão, as funções de tabela e os monitores de eventos aplicáveis, incluindo o monitor de eventos de unidade de trabalho, coletam e relatam métricas de solicitação. Você pode alterar a configuração padrão da seguinte forma:
  • Usando o parâmetro de configuração do banco de dados mon_req_metrics
  • Ao usar a cláusula COLLECT REQUEST METRICS do comando CREATE SERVICE CLASS ou ALTER SERVICE CLASS para uma superclasse de serviço.
A alteração da configuração padrão afeta qualquer função de tabela ou monitor de eventos que possa relatar métricas de solicitação.

Acesso a dados de eventos capturados por um monitor de eventos de unidade de trabalho

Um monitor de eventos de unidade de trabalho pode gravar dados em uma tabela regular ou em formato binário em uma tabela de eventos não formatados (UE). Você pode acessar os dados em tabelas regulares usando SQL.

Para acessar dados em uma tabela UE, use uma das seguintes funções de tabela:
EVMON_FORMAT_UE_TO_XML
Extrai dados de uma tabela de eventos não formatada em um documento XML.
EVMON_FORMATAR_UE_PARA_TABELAS
Extrai dados de uma tabela de eventos não formatada em um conjunto de tabelas relacionais.
Ao usar uma dessas funções de tabela, você pode especificar os dados a serem extraídos incluindo um comando SELECT como um dos parâmetros da função. Você tem controle total sobre a seleção, a ordenação e outros aspectos fornecidos pelo comando SELECT.

Se estiver gerando informações de listagem de pacotes, você poderá usar a função de tabela EVMON_FORMAT_UE_TO_XML para gerar um único documento XML que contenha a unidade básica de dados do monitor de eventos de trabalho e a listagem de pacotes. O procedimento EVMON_FORMAT_UE_TO_TABLES produz duas tabelas: uma para a unidade básica de informações do monitor de eventos de trabalho e outra para as informações de listagem de pacotes. Você pode unir as duas tabelas usando os valores das colunas MEMBER, APPLICATION_ID e UOW_ID.

Você também pode usar o comando db2evmonfmt para ajudar a realizar as seguintes tarefas:
  • Selecione eventos de interesse com base nos seguintes atributos: ID do evento, tipo de evento, período de tempo, aplicativo, carga de trabalho ou classe de serviço
  • Escolha se deseja receber a saída na forma de um relatório de texto ou de um documento XML formatado
  • Controle o formato de saída criando suas próprias folhas de estilo XSLT em vez de usar as fornecidas pelo comando db2evmonfmt
Por exemplo, o comando a seguir fornece um relatório de unidade de trabalho que seleciona eventos de unidade de trabalho que ocorreram nas últimas 24 horas no banco de dados SAMPLE. Esses registros de eventos são obtidos da tabela de eventos não formatada chamada SAMPLE_UOW_EVENTS. O comando cria uma saída de texto formatada usando a folha de estilo MyUOW.xsl.
java db2evmonfmt -d SAMPLE -ue SAMPLE_UOW_EVENTS -ftext -ss MyUOW.xsl -hours 24