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

Classes de espera e SQL recursivo

O perfil agrupado pela classe de espera do Oracle e o tempo do SQL recursivo, que um comando dispara em funções, triggers e no dicionário.

Vale para: Traces 10046

Duas leituras completam o perfil: o mesmo tempo agrupado pela classe de espera do Oracle, que mostra de que tipo é a espera, e o tempo do SQL recursivo, que mostra quanto um comando gasta nos comandos que ele dispara.

O que a seção mostra

Logo abaixo do perfil, a tabela Por classe de espera soma os componentes pela classe do Oracle (wait_class), com a CPU e o tempo não contabilizado como classes próprias. A soma das linhas também é o tempo total. A classe de cada evento segue a v$event_name do Oracle 19c; os eventos gc ficam em Cluster, e evento que o WaitScope não sabe classificar fica em Não classificado.

As classes do perfil
ClasseO que agrupa
IdleA sessão esperando trabalho. Num trace de sessão, quase sempre é SQL*Net message from client: tempo da aplicação, da rede e do usuário.
NetworkDados mandados e recebidos pelo SQL*Net, com a aplicação ou com outro banco por dblink.
User I/OLeituras e gravações de dados feitas pela própria sessão.
System I/OI/O dos processos de fundo que a sessão esperou.
CommitA gravação do redo no COMMIT (log file sync).
ApplicationLinha ou tabela presa por outra sessão, locks da própria aplicação, erros devolvidos.
ConcurrencyDisputa por estruturas internas: latches, mutexes, buffers.
ConfigurationUm limite de configuração: redo log, buffer cache, ITL, cache de sequence, espaço.
SchedulerO Resource Manager segurando a sessão.
ClusterBlocos e mensagens trocados entre as instâncias do RAC.
Administrative e OtherComandos de administração e eventos internos sem classe mais específica.
CPU e Não contabilizadoOs componentes de CPU e os dois tempos não contabilizados do perfil.
Não classificadoEventos que o WaitScope não sabe classificar.

Como ler

Colunas da tabela Por classe de espera
ColunaO que diz
ClasseO nome da classe. Clique nele para abrir o cartão, com Normal quando, Preocupa quando e Onde olhar, como no perfil.
Duração (s)A soma dos componentes da classe.
% do totalA parte do tempo total, com a barra ao lado.
OcorrênciasA soma das ocorrências dos componentes. Em branco em Não contabilizado.
Principais componentesOs componentes que mais pesam na classe, na ordem do perfil.

Para um evento em Não classificado, a classe dele no banco está na v$event_name:

select name, wait_class
  from v$event_name
 where name = 'nome do evento';

SQL recursivo

SQL recursivo é o comando que outro comando executa, e não a aplicação: o SQL dentro de funções e procedures PL/SQL, o de triggers e as consultas que o próprio banco faz ao dicionário. No trace, ele tem dep= maior que 0. O relatório mostra esse tempo em quatro lugares:

  • Em Comandos SQL, a coluna Prof. é 0 no comando chamado pela aplicação e 1 ou mais no recursivo. O recursivo quase sempre tem contribuição zero: o tempo dele já está na chamada de nível 0 que o disparou. O tempo próprio dele está em Inclusivo (s).
  • No detalhe do comando, o cartão Profundidade diz chamado pela aplicação ou SQL recursivo.
  • No Perfil do comando, a linha SQL recursivo (comandos filhos), do tipo recursivo, soma a duração das chamadas que o comando disparou. O cartão dela diz que é normal num comando PL/SQL que executa outros SQL e que preocupa quando soma muito num SELECT ou DML simples: função PL/SQL chamada por linha, ou trigger pesado.
  • No fim do detalhe, SQL recursivo executado por este comando lista os comandos filhos que mais demoraram, do que mais demorou para o que menos demorou, com link para o detalhe de cada um.

Em Comandos por componente, o tempo de cada componente fica no comando que o gastou: a leitura feita pelo SQL recursivo conta no comando filho, não no que o disparou.

Quando preocupa

Quando estas classes pesam no tempo total, o Diagnóstico mostra um achado próprio, de severidade média, com o link Ver perfil por classe. Os de Application, Concurrency e Commit sobem para alta quando a classe pesa muito.

No SQL recursivo, preocupa a linha SQL recursivo (comandos filhos) alta num comando simples e o comando recursivo executado milhares de vezes com uma linha por execução: é laço em PL/SQL (linha a linha em PL/SQL).

Para onde ir depois

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