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

Comandos SQL por contribuição

A lista dos comandos do trace pela contribuição ao tempo total, com o tempo inclusivo, a profundidade, as execuções, as linhas e as leituras.

Vale para: Traces 10046

A lista de comandos mostra quanto do tempo total cada SQL e cada bloco PL/SQL explica. É dela que você parte para o detalhe e o plano de um comando.

O que a seção mostra

A seção Comandos SQL por contribuição (no índice, Comandos SQL) tem uma linha por comando distinto do trace, ou por forma, como explicado abaixo, da maior contribuição para a menor e, no empate, pelo inclusivo. O texto do alto define as duas medidas: Contribuição: duração das chamadas de nível 0 do comando somada às esperas entre chamadas no cursor dele. Inclusivo: soma de todas as chamadas do comando, em qualquer profundidade.

A lista mostra 10 comandos, ou o número escolhido em Comandos por lista no alto do relatório. Abaixo dela podem aparecer três linhas:

  • Mostrando N de M comandos, quando a escolha cortou a lista;
  • Outros N comandos ficaram fora da lista, com a contribuição somada deles: o relatório detalha só os comandos de maior contribuição, e os demais entram nessa soma. Quando a conta é estimada, a linha começa com Cerca de N outros comandos;
  • Tempo não atribuído a nenhum comando: o tempo total menos a contribuição de todos os comandos, como o tempo não contabilizado entre chamadas e as esperas sem cursor.

Comandos que só diferem nos literais (SQL com os valores no texto, sem bind) viram uma linha só, a forma, com os totais das variantes somados e o selo N variantes antes do texto. Abaixo da lista, uma nota explica: As linhas marcadas com variantes somam comandos que só diferem nos literais; no texto, :s e :n ocupam o lugar dos literais. A lista de formas está em textos compartilháveis, e as variantes que mais gastaram ficam no detalhe da forma.

Como ler

Colunas de Comandos SQL por contribuição
ColunaO que diz
#A posição do comando, com link para o detalhe. O mesmo número identifica o comando nas outras seções e nos achados.
Contribuição (s)A duração das chamadas de nível 0 do comando somada às esperas entre chamadas no cursor dele, como o SQL*Net message from client entre um FETCH e outro. A soma das contribuições com o tempo não atribuído é o tempo total.
% do totalA contribuição dividida pelo tempo total.
Inclusivo (s)A soma da duração (e=) de todas as chamadas do comando, em qualquer profundidade. Inclui o SQL recursivo que o comando dispara, porque a duração de uma chamada já contém a das filhas, e não inclui as esperas entre chamadas.
TipoO tipo do comando, pelo oct= do trace: SELECT, INSERT, UPDATE, DELETE, MERGE, PL/SQL e outros. Sem ele, a primeira palavra do texto.
Prof.A profundidade (dep=): 0 no comando chamado pela aplicação, 1 ou mais no SQL recursivo.
Exec e FetchQuantas chamadas EXEC e FETCH o comando teve.
LinhasA soma das linhas (r=) de todas as chamadas.
LIOLeituras lógicas: a soma de cr= e cu= das chamadas.
PIOLeituras físicas: a soma de p=.
SQL IDO sql_id do comando. Em branco na linha de uma forma, porque cada variante tem o seu.
TextoO começo do texto, com link para o detalhe. Quando dois comandos começam igual, cada um mostra o começo, um … e o trecho em que difere dos outros. Sem o texto no trace, aparece a chave do comando.

No relatório de exemplo, o comando #1 contribui com 0,007 s (95,9% do total) e tem inclusivo de 0,002 s. A diferença é a espera SQL*Net message from client no cursor dele, que entra na contribuição e não no inclusivo. O comando #2 tem profundidade 1: é recursivo, e a contribuição dele é zero.

Trace com muitos comandos

Em trace com muitos comandos distintos, como o de uma aplicação que monta cada SQL com os valores no texto, a análise atinge limites e passa a somar em vez de guardar o detalhe de cada comando. Cada limite atingido gera um aviso no alto do relatório:

  • limite de N comandos com detalhe próprio atingido: os comandos novos foram somados pela forma do texto, o mesmo SQL com os literais trocados por :s e :n;
  • limite de N formas de comando atingido: os comandos de formas novas foram somados numa linha só, (outros comandos além do limite);
  • limite de N variantes lembradas atingido: daí em diante, a contagem de variantes de cada forma é estimada, e as variantes novas não entram na tabela das que mais gastaram.

Com a contagem estimada, os números aparecem como cerca de N: em Comandos distintos no Resumo, no selo das variantes, no título do achado de literais em vez de bind, na coluna Textos de textos compartilháveis e na linha dos comandos fora da lista. O tempo total, o perfil e a soma das contribuições não mudam: o que diminui é o detalhe por comando.

Quando preocupa

  • Poucos comandos somam quase todo o tempo total: comece pelo primeiro, no detalhe e no plano.
  • LIO muito acima de Linhas: o plano lê muitos blocos para cada linha que devolve.
  • Exec na casa dos milhares num comando recursivo, com uma linha por execução: laço em PL/SQL (linha a linha).
  • Fetch perto de Linhas num comando de nível 0: a aplicação busca uma linha por vez (muitos FETCH com poucas linhas).
  • Contribuição bem maior que o inclusivo: o tempo do comando está nas esperas entre chamadas, em geral a aplicação (sessão esperando a aplicação).
  • Comandos parecidos que, juntos, somam muito tempo: confira se eles só mudam nos literais (textos compartilháveis).

Para onde ir depois

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