Operação

Operação & observabilidade

Checklist de erros comuns, consultas prontas de troubleshooting/consumo de IA, e onde olhar ferramentas nativas que já vêm sem custo de desenvolvimento.

Esta seção nasceu de um incidente real: o recurso "AI Insight" ficava sempre retornando o texto genérico de fallback, e não havia nenhum log que revelasse o motivo. Investigando, encontramos duas causas encadeadas — a Seção 3 (credencial OCI_CRED) tinha sido rodada conectado como ADMIN em vez de AMPMINSIGHTS (por isso a credencial nunca existiu), e a função que chama o LLM engolia qualquer erro silenciosamente, sem logar nada. As duas coisas foram corrigidas: a função agora loga cada chamada (sucesso ou erro) em TB_26AI_TECH_LOG, e esta página documenta como usar esse log — junto com um checklist dos erros mais comuns — para nunca mais operar "às cegas".

Checklist de erros comuns

SintomaCausa provávelComo confirmar/corrigir
ORA-00942 em qualquer objeto TB_26AI_TECH_*Conectado como ADMIN em vez de AMPMINSIGHTS (aconteceu neste ambiente em 2026-07-24).Rode SELECT USER FROM DUAL; — tem que voltar AMPMINSIGHTS. Reconecte e repita a seção que falhou.
"AI Insight"/chat sempre retorna o texto genérico de fallbackCredencial OCI_CRED ausente ou quebrada (é o sintoma exato do incidente que originou esta página).SELECT credential_name FROM user_credentials WHERE credential_name = 'OCI_CRED'; — se não retornar linha, refaça a Seção 3 conectado como AMPMINSIGHTS. Depois, confira o motivo exato na consulta de "Erros recentes" abaixo.
Erro de rede/timeout ao chamar o Generative AIACL de rede (Seção 1.6) não cobre o host correto.SELECT host, privilege FROM dba_host_aces WHERE principal = 'AMPMINSIGHTS'; — deve listar inference.generativeai.us-chicago-1.oci.oraclecloud.com com RESOLVE e CONNECT.
ORA-20404 ("Object not found", domínio oci.my$cloud_domain)Perfil de SELECT AI usando a região "de casa" do tenancy (OCI_REGION) em vez da região do Generative AI.Use o valor de GENAI_REGION (Seção 2), não OCI_REGION — ver Seção 5.3 do Passo a passo: banco de dados.
ORA-20404 com URL bem formada (região correta no domínio, ex. inference.generativeai.us-chicago-1.oci.oraclecloud.com)A tenancy não alcança essa região do Generative AI (comum em tenancies com escopo regional restrito, ex. América Latina), ou o modelo configurado não está mais ativo para uso on-demand nessa região — descoberto em 2026-07-24 com meta.llama-4-maverick-17b-128e-instruct-fp8, que estava aposentado on-demand em sa-saopaulo-1 desde maio/2025 apesar de ainda aparecer no catálogo.Rode oci generative-ai model-collection list-models --compartment-id <seu-compartimento> --region <regiao-candidata> --capability CHAT --all (ou o Console OCI) e confirme que o modelo usado em GENAI_REGION está ACTIVE e sem time-on-demand-retired preenchido; ajuste GENAI_REGION (e a ACL da Seção 1.6 para o novo host) para uma região que sua tenancy alcance e que ainda sirva o modelo on-demand.
ORA-20404 mesmo com credencial/ACL/região corretosEMBEDDING_COMPARTMENT preenchido com o OCID errado (ex.: do Autonomous Database em vez do compartimento — os dois "parecem" um OCID válido).Confira o prefixo: tem que ser ocid1.compartment...., nunca ocid1.autonomousdatabase..... Se corrigir, recrie a credencial (OCI_CRED) — ela grava o compartimento internamente na criação.
Lupa do "AI Insight" falha mesmo com tudo certo em TB_26AI_TECH_PARAMSCOMPARTMENT_ID/OCI_CREDENTIAL/REGION nas Application Settings do APEX (config separada, ver seção abaixo) desatualizados em relação à tabela.App Builder → Shared Components → Application Settings — compare com TB_26AI_TECH_PARAMS.

O que TB_26AI_TECH_LOG guarda

Toda chamada a Generative AI/embeddings feita pelas funções FNC_26ai_rag, fnc_26ai_tech_rag, fnc_26ai_embed e PRC_26AI_TECH grava uma linha nesta tabela — sucesso ou erro, sem exceção. Guarda metadados de uso (objeto/função de origem, provider, modelo, duração, tamanho do prompt/resposta em caracteres, usuário, e o SQLCODE/SQLERRM completo quando há erro) — deliberadamente não guarda o prompt ou a resposta completos, só o tamanho, por privacidade e para não inchar a tabela.

Consultas prontas

Erros recentes (últimas 24h)
SELECT log_ts, calling_object, operation, provider, model_name,
       error_code, error_message
FROM   TB_26AI_TECH_LOG
WHERE  status = 'ERROR'
AND    log_ts >= SYSTIMESTAMP - INTERVAL '24' HOUR
ORDER  BY log_ts DESC;
Taxa de erro por dia e por função/modelo
SELECT TRUNC(log_ts) AS dia, calling_object, model_name,
       COUNT(*) AS total,
       SUM(CASE WHEN status = 'ERROR' THEN 1 ELSE 0 END) AS erros,
       ROUND(100 * SUM(CASE WHEN status = 'ERROR' THEN 1 ELSE 0 END) / COUNT(*), 1) AS pct_erro
FROM   TB_26AI_TECH_LOG
GROUP  BY TRUNC(log_ts), calling_object, model_name
ORDER  BY dia DESC, pct_erro DESC;
Chamadas mais lentas
SELECT log_ts, calling_object, operation, model_name, duration_ms, status
FROM   TB_26AI_TECH_LOG
WHERE  duration_ms IS NOT NULL
ORDER  BY duration_ms DESC
FETCH FIRST 20 ROWS ONLY;
Qual registro de negócio está falhando
SELECT l.log_ts, l.source_type, l.source_id, l.error_message,
       v.asset_name, v.definition_name
FROM   TB_26AI_TECH_LOG l
LEFT JOIN TB_26AI_TECH_v2 v ON v.rowid = CHARTOROWID(l.source_id)
WHERE  l.status = 'ERROR'
AND    l.source_id IS NOT NULL
ORDER  BY l.log_ts DESC;
Purga do log (usa AI_LOG_RETENTION_DAYS)
DECLARE
  v_days TB_26AI_TECH_PARAMS.PARAM_VALUE%TYPE;
BEGIN
  SELECT param_value INTO v_days FROM TB_26AI_TECH_PARAMS WHERE param_name = 'AI_LOG_RETENTION_DAYS';
  DELETE FROM TB_26AI_TECH_LOG WHERE log_ts < SYSTIMESTAMP - NUMTODSINTERVAL(v_days, 'DAY');
  COMMIT;
END;
/

Application Settings do APEX — uma segunda fonte de configuração

A funcionalidade "AI Insight" (lupa na lista de vulnerabilidades) não lê EMBEDDING_COMPARTMENT direto de TB_26AI_TECH_PARAMS — o processo da página 81 chama apex_app_setting.get_value('OCI_CREDENTIAL') e apex_app_setting.get_value('COMPARTMENT_ID'), valores configurados dentro do próprio APEX (App Builder → Shared Components → Application Settings), totalmente separados da tabela de configuração do banco. Descobrimos isso em 2026-07-24 depois de corrigir tudo no banco e a lupa continuar falhando — os dois lugares tinham valores diferentes.

Application Setting (APEX)Deve bater com
OCI_CREDENTIALOCI_CRED (nome da credencial da Seção 3)
COMPARTMENT_IDo mesmo valor de EMBEDDING_COMPARTMENT em TB_26AI_TECH_PARAMS
REGIONo mesmo valor de GENAI_REGION em TB_26AI_TECH_PARAMS

Não há uma view SQL simples e confiável pra conferir isso via Database Actions (evite adivinhar o nome — já tentamos apex_application_settings com colunas erradas e perdemos tempo); confira direto no App Builder: abra a aplicação → Shared Components → Application Settings, e compare os três valores acima com a TB_26AI_TECH_PARAMS atual. Sempre que corrigir EMBEDDING_COMPARTMENT ou GENAI_REGION no banco, atualize também aqui — são dois lugares de armazenamento independentes, corrigir um não corrige o outro.

Ferramentas nativas — sem código novo

ADB Performance Hub

Saúde do banco (CPU, I/O, sessões, SQL Monitor) direto no Console OCI, sem instrumentação extra.

OCI Cost Analysis

Custo real do Generative AI, filtrado por serviço/compartimento — complementa o TB_26AI_TECH_LOG (que dá contagem/latência, não valor faturado).

Activity Reports (páginas 10020-10026)

Atividade de usuário/sessão e erros não tratados do APEX, já vêm prontas na aplicação (apex_activity_log).

Job de geração em lote (JOB_26AI_TECH_VULNERABILIDADE)

O botão "Gerar Insights em Lote" cria um job que roda a cada 20 segundos. Antes desta versão, ele nunca se auto-encerrava — ficava rodando indefinidamente até alguém clicar em "parar", consumindo chamadas de IA mesmo sem linhas pendentes. Agora ele mesmo verifica, a cada execução, se ainda há registros com insight_report nulo e se auto-remove (DBMS_SCHEDULER.stop_job/drop_job) quando não sobra nada para processar. Confirme isso rodando SELECT job_name, state FROM dba_scheduler_jobs WHERE job_name = 'JOB_26AI_TECH_VULNERABILIDADE'; depois de um lote — não deve mais retornar linha quando o processamento terminar.