Saltar al contenido
WaitScope Entrar Solicitar acceso (por correo) Menú

Sesión limitada por el Resource Manager

El hallazgo RESOURCE_MANAGER aparece cuando las esperas resmgr pesan en el tiempo total: cómo encontrar el plan, el grupo y la ventana que retuvieron la sesión.

Se aplica a: Traces 10046 con esperas (nivel 8 o 12)

El Resource Manager reparte la CPU y las sesiones activas entre grupos de consumo, según el plan de recursos activo. Cuando el grupo de la sesión supera lo que el plan permite, la base de datos retiene la sesión, y el tiempo aparece en las esperas resmgr.

Síntomas

En el Diagnóstico aparece el hallazgo Sesión limitada por el Resource Manager (RESOURCE_MANAGER). El texto dice cuánto del tiempo total quedó en la clase de espera Scheduler, en porcentaje y en segundos, lista los eventos de la clase que pesaron y termina con Ver perfil por clase.

El hallazgo aparece cuando la clase Scheduler pesa en el tiempo total. La gravedad es siempre media. Entran en esta clase tres eventos:

  • resmgr:cpu quantum: el plan quitó la CPU a la sesión para respetar el reparto entre los grupos.
  • resmgr:become active: el grupo llegó al límite de sesiones activas al mismo tiempo, y la sesión esperó su turno.
  • resmgr:pq queued: la sentencia en paralelo quedó en la cola hasta que hubo procesos paralelos libres.

Causa

  • Servidor sin CPU libre, con un plan activo: el Resource Manager reparte la CPU entre los grupos, y la sesión de un grupo con una parte pequeña espera.
  • Límite del grupo: el plan limita la CPU del grupo aun con CPU libre en el servidor, o limita el número de sesiones activas.
  • Instance caging: con un plan activo y cpu_count menor que el número de CPU del servidor, toda la instancia queda limitada.
  • Ventana de mantenimiento: en las ventanas del Scheduler, el plan DEFAULT_MAINTENANCE_PLAN entra en vigor para las tareas automáticas, como la recolección de estadísticas, y la carga del usuario pierde prioridad.

Solución

Las consultas muestran el plan y el grupo de este momento: ejecútelas en el horario en que se ejecuta la operación, porque el plan activo cambia con las ventanas.

  1. Vea el plan activo:
    select name, is_top_plan, cpu_managed, instance_caging
      from v$rsrc_plan;

    Resultado: el plan con is_top_plan igual a TRUE es el que vale. Sin filas, no hay ningún plan activo ahora.

  2. Vea el grupo de consumo de la sesión. El SID está en Sesión, en la tarjeta Sesión y entorno del Resumen:
    select sid, serial#, username, service_name, module, resource_consumer_group
      from v$session
     where sid = &sid;
  3. Vea la parte de CPU y los límites de cada grupo en el plan:
    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 el Período del trace, en el Resumen, con las ventanas del Scheduler:
    select window_name, resource_plan, repeat_interval, duration,
           last_start_date, next_start_date, enabled, active
      from dba_scheduler_windows;
  5. Acuerde el ajuste con el DBA: asignar la sesión al grupo correcto (por servicio, módulo o usuario), cambiar la parte del grupo en el plan o llevar la operación fuera de la ventana de mantenimiento.

La documentación de Oracle sobre el Resource Manager describe planes, grupos, asignaciones e instance caging.

Cómo confirmar

El plan activo depende del horario. Mida de nuevo en el mismo horario de la medición anterior; de lo contrario, la comparación mezcla planes diferentes.

  1. Aplique el ajuste acordado con el DBA.
  2. Active el trace de la misma operación con esperas (activar el trace con DBMS_MONITOR).
  3. Envíe el archivo nuevo y abra el informe.
  4. Compare la fila Scheduler en Por clase de espera y los eventos resmgr en el perfil.

Resultado: la clase Scheduler deja de pesar en el tiempo total y el hallazgo desaparece del Diagnóstico. Si el tiempo pasó a la CPU o al tiempo no contabilizado dentro de las llamadas, el servidor sigue sin CPU libre: vea tiempo no contabilizado dentro de las llamadas.

En el informe

El informe de ejemplo no tiene esperas de la clase Scheduler; los enlaces abren las mismas secciones en él.

Actualizado el 29/10/2026. Informar un error en esta página