Adiciona criterios de validacao apos cada etapa critica

Depois de uma sessao de troubleshooting real (schema errado, tipo de OCID
errado, credencial com valor velho, Application Settings do APEX
desincronizadas da tabela de config), formaliza cada um desses pontos como
uma checagem que roda imediatamente apos a etapa correspondente, em vez de
so aparecer como sintoma bem mais tarde:

- Entre Secao 1 e 2: confirma que a sessao trocou para AMPMINSIGHTS
  (SELECT USER FROM DUAL) antes de continuar.
- Fim da Secao 2: confere que EMBEDDING_COMPARTMENT/OCI_TENANCY_OCID/
  OCI_USER_OCID tem o PREFIXO de OCID certo (nao so que foram preenchidos) -
  pega o caso real de hoje onde o OCID do Autonomous Database foi colado no
  lugar do compartimento.
- Fim da Secao 3: lembrete de que a credencial precisa ser recriada se
  EMBEDDING_COMPARTMENT mudar depois dela ja existir.
- Fim da Secao 7: confere STATUS = VALID dos 6 objetos novos antes de seguir
  pra instalacao do APEX.
- docs/09: nova secao explicando que a lupa "AI Insight" le credencial/
  compartimento/regiao das Application Settings do APEX (Shared Components),
  nao da TB_26AI_TECH_PARAMS - as duas fontes precisam ser mantidas em
  sincronia manualmente. Duas linhas novas no checklist de erros comuns.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-24 17:39:39 -03:00
parent 1e9af90582
commit 1c607f3f72
3 changed files with 131 additions and 4 deletions

View File

@@ -145,6 +145,15 @@ WHERE principal = 'AMPMINSIGHTS';
--------------------------------------------------------------------------------
-- A partir daqui, conecte-se como o usuario AMPMINSIGHTS (nao mais como ADMIN)
--------------------------------------------------------------------------------
--
-- VALIDACAO (rode antes de continuar - erro mais comum deste script):
SELECT USER FROM DUAL;
-- Tem que retornar AMPMINSIGHTS. Se retornar ADMIN, voce ainda nao trocou de
-- usuario/sessao - troque agora, senao a SECAO 2 (e tudo depois) vai falhar
-- com ORA-00942 (table or view "ADMIN"."TB_26AI_TECH_PARAMS" does not exist).
-- No Database Actions/SQL Developer Web, trocar o "schema" num seletor do
-- Worksheet NAO basta - precisa fazer login de novo com o usuario/senha do
-- AMPMINSIGHTS.
@@ -217,6 +226,25 @@ COMMIT;
-- antes de voce seguir para a SECAO 3.
SELECT param_name, param_value, description FROM TB_26AI_TECH_PARAMS ORDER BY param_name;
-- VALIDACAO EXTRA: confere que cada OCID e do TIPO certo, nao so que foi
-- preenchido. Ja aconteceu de EMBEDDING_COMPARTMENT ser preenchido com o
-- OCID do proprio Autonomous Database (ocid1.autonomousdatabase...) em vez
-- do compartimento (ocid1.compartment...) - o valor "parece" um OCID valido
-- e passa despercebido, mas quebra silenciosamente mais tarde (Generative AI
-- retorna ORA-20404 "Object not found", dificil de associar a este campo).
SELECT param_name, param_value,
CASE
WHEN param_name = 'EMBEDDING_COMPARTMENT' AND param_value NOT LIKE 'ocid1.compartment.%'
THEN 'ERRO: deveria comecar com ocid1.compartment. - confira se nao colou o OCID do banco/Autonomous Database por engano'
WHEN param_name = 'OCI_TENANCY_OCID' AND param_value NOT LIKE 'ocid1.tenancy.%'
THEN 'ERRO: deveria comecar com ocid1.tenancy.'
WHEN param_name = 'OCI_USER_OCID' AND param_value NOT LIKE 'ocid1.user.%'
THEN 'ERRO: deveria comecar com ocid1.user.'
ELSE 'OK'
END AS validacao
FROM TB_26AI_TECH_PARAMS
WHERE param_name IN ('EMBEDDING_COMPARTMENT', 'OCI_TENANCY_OCID', 'OCI_USER_OCID');
--------------------------------------------------------------------------------
@@ -281,6 +309,15 @@ SELECT credential_name, username, comments
FROM user_credentials
WHERE credential_name = 'OCI_CRED';
-- VALIDACAO/LEMBRETE: esta credencial grava tenancy/user/compartment por
-- dentro, NO MOMENTO em que e criada. Se voce corrigir qualquer valor da
-- SECAO 2 (principalmente EMBEDDING_COMPARTMENT) DEPOIS de ja ter rodado
-- este bloco, a credencial antiga continua com o valor velho - corrigir a
-- tabela sozinho NAO conserta. Nesse caso, rode:
-- BEGIN DBMS_VECTOR_CHAIN.DROP_CREDENTIAL(credential_name => 'OCI_CRED'); END;
-- /
-- e este bloco de novo, nesta ordem.
--------------------------------------------------------------------------------
@@ -1578,6 +1615,21 @@ EXCEPTION
END;
/
-- VALIDACAO: confere que todos os objetos desta secao compilaram sem erro
-- antes de seguir para a instalacao do APEX. Nao vale so olhar se o CREATE
-- "rodou sem erro na tela" - PL/SQL pode compilar um objeto que chama outro
-- ainda inexistente sem acusar erro na hora (resolucao adiada de nomes); o
-- STATUS aqui e a fonte de verdade.
SELECT object_name, object_type, status
FROM user_objects
WHERE object_name IN ('TB_26AI_TECH_LOG','PRC_26AI_TECH_LOG','FNC_26AI_EMBED',
'FNC_26AI_TECH_RAG','FNC_26AI_RAG','PRC_26AI_TECH')
ORDER BY object_name;
-- As 6 linhas tem que aparecer com STATUS = VALID. Se alguma faltar, o
-- CREATE dela nao rodou (role a secao de novo); se aparecer INVALID, rode
-- para descobrir o motivo:
-- SELECT line, position, text FROM user_errors WHERE name = '<NOME_DO_OBJETO>' ORDER BY sequence;
--------------------------------------------------------------------------------