Requisitos de memória para os dados do monitor

A memória necessária para os dados do monitor é alocada a partir do heap do monitor. O tamanho do heap do monitor é controlado pelo parâmetro de configuração do banco de dados mon_heap_sz. Esse parâmetro tem um valor padrão de AUTOMATIC, o que significa que o heap do monitor pode aumentar conforme necessário até que o limite de instance_memory seja atingido.

Se você configurar o parâmetro mon_heap_sz manualmente, considere os seguintes fatores:

  • O número de aplicativos de monitoramento
  • O número e a natureza dos monitores de eventos
  • Os interruptores do monitor definem
  • O nível de atividade do banco de dados
Considere aumentar o valor do parâmetro mon_heap_sz se os comandos do monitor falharem com um SQLCODE de -973.
A quantidade de heap do monitor que está sendo usada pode ser vista usando a função de tabela MON_GET_MEMORY_POOL :
SELECT *
  FROM TABLE(MON_GET_MEMORY_POOL('DBMS',NULL,-1))MEM
 WHERE MEMORY_POOL_TYPE = 'MONITOR'
Há muitas situações em que o monitor heap é usado:
  • Todos os monitores de eventos ativos consomem o heap do monitor. Cada thread de gravação rápida db2fw ) e de monitor de eventos db2evm ) usa o heap do monitor.
  • Os monitores ativos de eventos ACTIVITIES, LOCKING, PACKAGE CACHE, UNIT OF WORK, STATISTICS, THRESHOLD VIOLATIONS e CHANGE HISTORY alocam event records do heap do monitor. O número de registros alocados está incluído na parte Queue Manager Info da saída de db2pd -gfw. Em sistemas ocupados em que se espera que um grande volume seja registrado por esses monitores de eventos, o Current Number of Records aumenta rapidamente. Em sistemas menos ocupados, ele aumenta mais lentamente, dependendo da quantidade esperada de trabalho.
  • As atividades anteriores de cada aplicativo (aquelas concluídas na unidade de trabalho atual) são alocadas da pilha do monitor. Isso ocorre nas seguintes situações:
    • Quando um monitor de evento LOCKING estiver ativo e a coleta de HISTÓRICO estiver ativada
    • Quando um monitor de eventos DEADLOCKS COM HISTÓRICO DE DETALHES estiver ativo
  • Os dados de rotina são armazenados no heap do monitor quando MON_RTN_DATA está ativado.
  • Os dados da lista executável são armazenados no heap do monitor quando MON_UOW_EXECLIST está ativado.
  • Os dados da lista de uso do monitor são armazenados no heap do monitor.
  • Qualquer chave de monitor que esteja ligada consome o heap do monitor.
  • Cada aplicativo de monitor que usa as interfaces SNAPSHOT, SWITCH e RESET consome o heap do monitor. Nessas situações, o heap do monitor é usado para manter a chave e os dados reinicializáveis até que o aplicativo do monitor seja desconectado da instância.
  • Cada conexão de banco de dados consome o heap do monitor quando a chave STATEMENT é ativada. Nessas situações, o heap do monitor é usado para manter os dados de monitoramento das instruções em execução no momento.
  • As informações do cliente de um aplicativo, definidas por meio da API sqleseti() ou do procedimento WLM_SET_CLIENT_INFO, são armazenadas usando o heap do monitor.
  • Em um gateway Db2 Connect, as informações do banco de dados e do aplicativo são armazenadas no heap do monitor. Se a chave de instrução estiver ativada, as instruções em execução no momento armazenam informações no heap do monitor.