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

Literais escondidos no SQL

Como a máscara troca por *** o texto entre aspas e os números do SQL que você vê e baixa, o que ela não esconde e como ligar ou desligar cada opção.

Vale para: Console 1.7.0, app Android 1.2.1 e API v1

Literal é o valor escrito direto no texto do SQL, como 'EXEMPLO' ou 4242123499. É ali que costuma estar o dado pessoal: CPF, nome, e-mail, telefone. A máscara troca os literais por *** no SQL que você vê e baixa. Ela vem ligada e vale para tudo o que a sua conta mostra.

A regra dos números desta página vale desde a console 1.6.0. Antes dela, a opção dos números escondia só número com 6 dígitos ou mais, como 4242123499, e deixava rownum <= 10 como estava. O relatório baixado antes da troca segue a regra antiga: baixe de novo para ter a regra nova.

O que a máscara esconde

São duas opções, cada uma vale sozinha:

  • Texto entre aspas. Todo texto entre aspas simples vira '***', também nas formas N'...' e q'[...]'. Texto cortado no meio do literal fica '***.
  • Números. Todo número usado como valor vira ***, curto ou longo: em comparação, IN, BETWEEN, atribuição, argumento de função, lista do SELECT, GROUP BY e FETCH FIRST. Fica como está só o número de posição no ORDER BY. O sinal de menos fica, e o número some.

As duas opções valem também dentro dos comentários do SQL (-- e /* */), onde a aplicação às vezes grava valores, como o nome da tela ou o id do registro.

Exemplos da máscara com as duas opções ligadas
No traceNo relatório
select * from t where cpf='98765432100' and id=4242123499select * from t where cpf='***' and id=***
where obs=q'[it's]' and y=nq'{a}' and z=Q'!b!'where obs=q'[***]' and y=nq'{***}' and z=Q'!***!'
select * from t where nome='EXEMPLO DA SIL (texto cortado)select * from t where nome='***
where ORDEM = 40 and id in (1, 2, 3) and v between 5 and 10where ORDEM = *** and id in (***, ***, ***) and v between *** and ***
update t set qtd = 7, preco = 1.5e3 where k = .5 and z = -3update t set qtd = ***, preco = *** where k = *** and z = -***
select a, count(*) from t group by 1 having count(*) > 1 order by 2 desc, 1 nulls lastselect a, count(*) from t group by *** having count(*) > *** order by 2 desc, 1 nulls last
select a from t order by decode(a, 1, 2), 3 fetch first 10 rows onlyselect a from t order by decode(a, ***, ***), 3 fetch first *** rows only
select /* tela='CADASTRO', id=42 */ * from tselect /* tela='***', id=*** */ * from t

O que a máscara não esconde

  • As dicas do otimizador (/*+ */), inteiras. Em select /*+ parallel(t 4) */ * from t where rownum <= 10, a dica fica e só o 10 vira ***.
  • Nomes de tabela, coluna e objeto, inclusive os entre aspas duplas ("COL9") e os que têm dígitos (t1234567).
  • Binds, como :1, :b123456 e :"SYS_B_0": o nome do bind fica, e o valor nunca entra no relatório.
  • O CLIENT ID, o módulo, a ação, o host e o caminho do arquivo, no resumo, e, nos deadlocks, o usuário do banco, a máquina e o programa de cada sessão.
  • O nome do arquivo enviado e os nomes da pilha PL/SQL.

A máscara muda o que aparece, não o que o WaitScope guarda: o relatório no servidor mantém o SQL como está no trace. Para mandar menos dado pessoal, gere o trace sem os valores de bind e envie só os arquivos da operação que você quer analisar.

Onde a máscara vale

Em tudo o que você vê: a página do relatório, o detalhe do comando, a página do objeto, o HTML, o PDF e o JSON baixados, o app Android e a API. No relatório, ela cobre todo lugar onde aparece texto de SQL:

  • Comandos SQL por contribuição e Principais comandos por componente e por classe;
  • o texto do comando, a tabela Variantes que mais gastaram e o SQL recursivo executado por este comando, no detalhe do comando;
  • Chamadas de nível 0 mais longas;
  • Textos compartilháveis;
  • Erros, na lista de onde cada erro apareceu;
  • Deadlocks, no SQL de cada sessão.

Com qualquer uma das opções ligada, o SQL ID das variantes também some: a tabela Variantes que mais gastaram fica sem a coluna SQL ID, e a coluna SQL IDs de Textos compartilháveis mostra ocultos pela máscara. O sql_id é calculado a partir do texto com os valores e permitiria descobrir o literal escondido.

No SQL que o banco recusou, registrado no PARSE ERROR, o texto aparece só até a primeira aspas, seguida de ***: num SQL recusado, não dá para saber com segurança onde cada valor termina (Erros ORA no trace).

Como a máscara só muda a exibição, desligá-la mostra de novo o texto original, também nas análises antigas.

Os comandos que só diferem nos literais viram uma forma, com :s no lugar do texto entre aspas e :n no lugar do número. O texto da forma já não tem literal, e a máscara não o muda: ela esconde os literais das variantes. Veja SQL com literais em vez de bind variables.

Valores de bind

Os valores de bind ficam no bloco BINDS do trace, gravado nos níveis 4 e 12 do evento 10046 ou com binds => TRUE no DBMS_MONITOR. O WaitScope ignora esse bloco ao ler o trace: os valores não entram no relatório, com ou sem a máscara. Eles só existem no arquivo enviado, que sai do servidor quando a análise termina.

Mesmo assim, prefira o trace sem binds: o nível 8 do 10046 ou o DBMS_MONITOR com as esperas e sem os binds. Veja níveis do evento 10046.

Ligar ou desligar a máscara

  1. Na console, clique no seu nome de usuário, no alto da tela, para abrir Minha conta.
  2. Em Privacidade dos relatórios, marque ou desmarque Esconder o texto entre aspas no SQL (cpf = '***').
  3. Marque ou desmarque Esconder os números usados como valor no SQL (id = ***).
  4. Clique em Salvar.

Resultado: a console mostra “Privacidade dos relatórios salva.”, e o SQL de todas as suas análises passa a sair com a nova escolha, na console, no app e nos próximos downloads.

O app Android segue a escolha feita na console. Pela API, as duas opções ficam em GET e PUT /api/v1/conta/privacidade, nos campos ocultar_textos e ocultar_numeros (rotas da conta na API v1). O relatório que você já baixou não muda: baixe de novo para ter o arquivo com a nova escolha.

Para onde ir depois

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