Erro 258 (insufficient privilege) nos statements Q5 e Q6
A coleta roda até o Q4 e falha nos dois últimos statements. Quase sempre é o tipo de usuário conectado, não um privilégio faltando numa tabela.
Atualizado em 19/08/2026
O sintoma
Os statements Q1 a Q4 executam e exportam normalmente. O Q5 e o Q6 falham com uma mensagem parecida com esta:
Could not execute 'SELECT TOP 1 "SPACE_ID", "APPLICATION_NAME", "STATUS", ...'
Error: (dberror) [258]: insufficient privilege: Detailed info for this error
can be found with guid 'F83DB16026B0A447A046484590759C64'
O GUID no fim varia a cada execução e não ajuda no diagnóstico. O que importa é o número: 258 é falta de privilégio, não objeto inexistente (que seria 259) nem coluna diferente (260).
A causa
O Q5 e o Q6 são os únicos statements que leem telemetria do tenant inteiro: log de execução de tarefas e configuração do tenant. Os quatro primeiros leem estatísticas de sistema que qualquer usuário com acesso ao banco enxerga.
Quando esses dois falham e os outros passam, a causa quase sempre é o tipo de usuário conectado. A coleta pede um database analysis user, que tem leitura de análise sobre o tenant. Se ela rodou com um database user de space, o acesso para no próprio space, e os dois últimos statements batem na parede.
Vale dizer o que não é: as visões que o Q5 e o Q6 leem existem no seu tenant e têm as colunas que o script pede. Não é diferença de versão do Datasphere, não é objeto renomeado e não é bug do script. O que muda é quem está perguntando.
Como confirmar em dez segundos
Na mesma sessão em que a coleta falhou, execute:
SELECT CURRENT_USER FROM DUMMY;
Se a resposta vier no formato NOME_DO_SPACE#SUFIXO — por exemplo VENDAS#ANALISE —, é um database user de space, e o diagnóstico está fechado.
Se quiser a confirmação completa, esta consulta mostra sobre quais objetos da coleta o usuário atual realmente tem leitura:
SELECT "SCHEMA_NAME", "OBJECT_NAME", "PRIVILEGE"
FROM "SYS"."EFFECTIVE_PRIVILEGES"
WHERE "USER_NAME" = CURRENT_USER
AND "OBJECT_NAME" IN ('TASK_LOGS_MEMORY', 'SPACE_METADATA',
'SPACE_USERS_V_EXT', 'WORKLOAD_CLASSES')
ORDER BY "SCHEMA_NAME", "OBJECT_NAME";
Num database user de space, TASK_LOGS_MEMORY e SPACE_METADATA não aparecem na lista.
A solução
Use um database analysis user e execute a coleta de novo, do Q1 ao Q6.
Esse usuário é criado pelo administrador do Datasphere na própria interface, em System → Configuration → Database Access, na seção de database analysis users. É uma ação de administração do tenant, de poucos minutos.
Esse é o ponto que costuma travar o processo, então vale ser explícito: não é um chamado de privilégio para o time de base, e não existe um GRANT a pedir. As visões que o Q5 e o Q6 leem pertencem ao Datasphere, e o acesso a elas vem do tipo de usuário — não de permissões concedidas tabela a tabela. Trocar o usuário resolve; pedir privilégios avulsos, não.
Se você não é o administrador do tenant, encaminhe este artigo para quem é. O pedido cabe em uma frase: criar um database analysis user para uma leitura única de telemetria, somente leitura.
Se o database analysis user não sair agora
Dá para recuperar parte do que falta sem esperar.
O Q6 lê três fontes de uma vez, e só uma delas exige o acesso mais amplo. Como o erro aborta o statement inteiro, as outras duas se perdem junto — mesmo estando acessíveis. O statement abaixo substitui o Q6, remove só a fonte bloqueada e produz o mesmo norte_06.csv:
SELECT 'v1' AS "V", 'A0' AS "C", 'WC' AS "K1", '' AS "K2", '' AS "K3", '' AS "K4",
TO_VARCHAR(CURRENT_UTCTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS') AS "T",
TO_DOUBLE(COUNT(*)) AS "N1", NULL AS "N2",
NULL AS "N3", NULL AS "N4", NULL AS "N5", NULL AS "N6"
FROM "SYS"."WORKLOAD_CLASSES"
UNION ALL
SELECT 'v1', 'A8', "WORKLOAD_CLASS_NAME", "PARENT_WORKLOAD_CLASS_NAME",
"TOTAL_STATEMENT_MEMORY_LIMIT_UNIT", "STATEMENT_MEMORY_LIMIT_UNIT", '',
TO_DOUBLE("PRIORITY"),
TO_DOUBLE("TOTAL_STATEMENT_MEMORY_LIMIT"),
TO_DOUBLE("TOTAL_STATEMENT_THREAD_LIMIT"),
TO_DOUBLE("STATEMENT_MEMORY_LIMIT"),
NULL, NULL
FROM "SYS"."WORKLOAD_CLASSES"
UNION ALL
SELECT 'v1', 'AA', TO_VARCHAR("ID"), "STATUS", '', '', '',
TO_DOUBLE("RETENTION_DAYS_DEFAULT"), NULL, NULL, NULL, NULL, NULL
FROM "_SYS_STATISTICS"."STATISTICS_SCHEDULE";
O Q5 lê uma fonte só, então não tem versão parcial. Envie o zip com o que conseguiu gerar e registre no campo de observações do upload quais statements falharam.
O que muda no relatório
Com Q1 a Q4 e o Q6 alternativo, o diagnóstico sai com a maior parte do conteúdo:
| Análise | Sai no relatório |
|---|---|
| Capacidade provisionada e custo do tenant | Sim |
| Utilização real e right-sizing (a perda em curso) | Sim |
| Consumo por space e por tipo de atividade | Sim |
| Manutenção de dados e footprint de armazenamento | Sim |
| Padrão temporal e picos | Sim |
| Inventário de limites de workload management | Sim, parcial |
| Perfil de execução das tarefas agendadas | Não |
| Falhas por memória e taxa de erro de execução | Não |
As duas últimas dependem do log de execução de tarefas, que é justamente o que o Q5 lê. Não há como reconstruí-las a partir dos outros statements: se essas análises importam para você, vale esperar o database analysis user e refazer a coleta completa.