Pular para o conteúdo
WaitScope Entrar Solicitar acesso (por e-mail) Menu

Sessão contida pelo Resource Manager

O achado RESOURCE_MANAGER aparece quando as esperas resmgr pesam no tempo total: como achar o plano, o grupo e a janela que seguraram a sessão.

Vale para: Traces 10046 com esperas (nível 8 ou 12)

O Resource Manager divide a CPU e as sessões ativas entre grupos de consumo, conforme o plano de recursos ativo. Quando o grupo da sessão passa do que o plano permite, o banco segura a sessão, e o tempo aparece nas esperas resmgr.

Sintomas

No Diagnóstico, aparece o achado Sessão contida pelo Resource Manager (RESOURCE_MANAGER). O texto diz quanto do tempo total ficou na classe de espera Scheduler, em percentual e em segundos, lista os eventos da classe que pesaram e termina com Ver perfil por classe.

O achado aparece quando a classe Scheduler pesa no tempo total. A severidade é sempre média. Entram nessa classe três eventos:

  • resmgr:cpu quantum: o plano tirou a CPU da sessão para respeitar a divisão entre os grupos.
  • resmgr:become active: o grupo chegou ao limite de sessões ativas ao mesmo tempo, e a sessão esperou a vez.
  • resmgr:pq queued: o comando em paralelo ficou na fila até haver processos paralelos livres.

Causa

  • Servidor sem CPU livre, com plano ativo: o Resource Manager reparte a CPU entre os grupos, e a sessão de um grupo com parte pequena espera.
  • Limite do grupo: o plano limita a CPU do grupo mesmo com CPU livre no servidor, ou limita o número de sessões ativas.
  • Instance caging: com plano ativo e cpu_count menor que o número de CPUs do servidor, a instância inteira fica limitada.
  • Janela de manutenção: nas janelas do Scheduler, o plano DEFAULT_MAINTENANCE_PLAN entra em vigor para as tarefas automáticas, como a coleta de estatísticas, e a carga do usuário perde prioridade.

Resolução

As consultas mostram o plano e o grupo de agora: rode no horário em que a operação roda, porque o plano ativo muda com as janelas.

  1. Veja o plano ativo:
    select name, is_top_plan, cpu_managed, instance_caging
      from v$rsrc_plan;

    Resultado: o plano com is_top_plan igual a TRUE é o que vale. Sem linha, nenhum plano está ativo agora.

  2. Veja o grupo de consumo da sessão. O SID está em Sessão, no cartão Sessão e ambiente do Resumo:
    select sid, serial#, username, service_name, module, resource_consumer_group
      from v$session
     where sid = &sid;
  3. Veja a parte de CPU e os limites de cada grupo no plano:
    select group_or_subplan, mgmt_p1, mgmt_p2, utilization_limit,
           active_sess_pool_p1, parallel_server_limit
      from dba_rsrc_plan_directives
     where plan = '&plano'
     order by mgmt_p1 desc;
  4. Compare o Período do trace, no Resumo, com as janelas do Scheduler:
    select window_name, resource_plan, repeat_interval, duration,
           last_start_date, next_start_date, enabled, active
      from dba_scheduler_windows;
  5. Combine o ajuste com o DBA: mapear a sessão para o grupo certo (por serviço, módulo ou usuário), mudar a parte do grupo no plano, ou mover a operação para fora da janela de manutenção.

A documentação da Oracle sobre o Resource Manager descreve planos, grupos, mapeamentos e instance caging.

Como confirmar

O plano ativo depende do horário. Meça de novo no mesmo horário da medição anterior, senão a comparação mistura planos diferentes.

  1. Aplique o ajuste combinado com o DBA.
  2. Ligue o trace da mesma operação com esperas (ligar o trace com o DBMS_MONITOR).
  3. Envie o arquivo novo e abra o relatório.
  4. Compare a linha Scheduler em Por classe de espera e os eventos resmgr no perfil.

Resultado: a classe Scheduler deixa de pesar no tempo total e o achado some do Diagnóstico. Se o tempo foi para a CPU ou para o tempo não contabilizado dentro das chamadas, o servidor continua sem CPU livre: veja tempo não contabilizado dentro das chamadas.

No relatório

O relatório de exemplo não tem espera da classe Scheduler; os links abrem as mesmas seções nele.

Atualizado em 29/10/2026. Relatar erro nesta página