Files
oci_tips/23AI/grant_access_model.md
2026-03-23 15:52:36 -03:00

3.5 KiB
Raw Blame History

ADW 26AI — Compartilhamento de Modelo ONNX entre Schemas

🎯 Objetivo

Permitir que um schema (APP_SCHEMA) utilize um modelo ONNX (MY_ONNX_MODEL) pertencente a outro schema (SRC_SCHEMA) no Autonomous Data Warehouse (ADW 26AI), incluindo integração com Select AI.


📌 Pré-requisitos

  • Modelo ONNX já carregado no SRC_SCHEMA
  • Acesso como ADMIN
  • Usuário consumidor (APP_SCHEMA) criado

1 Validar modelo no schema de origem

Conecte como SRC_SCHEMA:

SELECT model_name, algorithm, mining_function
FROM user_mining_models
WHERE model_name = 'MY_ONNX_MODEL';

2 Grants básicos (executar como ADMIN)

GRANT CREATE SESSION TO APP_SCHEMA;
GRANT DWROLE TO APP_SCHEMA;

GRANT EXECUTE ON DBMS_CLOUD TO APP_SCHEMA;
GRANT EXECUTE ON DBMS_CLOUD_AI TO APP_SCHEMA;

(Opcional) Diretório para operações com arquivos

GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO APP_SCHEMA;

3 Habilitar acesso a dados para Select AI (ADMIN)

BEGIN
  DBMS_CLOUD_AI.ENABLE_DATA_ACCESS();
END;
/

4 Grant no modelo ONNX (acesso entre schemas)

Conecte como SRC_SCHEMA:

GRANT SELECT MINING MODEL ON MY_ONNX_MODEL TO APP_SCHEMA;

Alternativa (mais ampla)

GRANT SELECT ANY MINING MODEL TO APP_SCHEMA;

5 Observação sobre "alias"

  • Não é necessário criar alias ou synonym
  • Use nome qualificado do modelo:
SRC_SCHEMA.MY_ONNX_MODEL

6 Criar credential (APP_SCHEMA)

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'GENAI_CRED',
    user_ocid       => '<user_ocid>',
    tenancy_ocid    => '<tenancy_ocid>',
    private_key     => '<private_key>',
    fingerprint     => '<fingerprint>'
  );
END;
/

7 Criar profile do Select AI

🔹 Apenas embedding (modelo interno)

BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
    profile_name => 'EMBEDDING_PROFILE',
    attributes   => '{
      "provider": "database",
      "embedding_model": "SRC_SCHEMA.MY_ONNX_MODEL"
    }'
  );
END;
/

🔹 LLM externo + embedding ONNX

BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
    profile_name => 'OCI_GENAI',
    attributes   => '{
      "provider": "oci",
      "model": "meta.llama-3.3-70b-instruct",
      "credential_name": "GENAI_CRED",
      "embedding_model": "database: SRC_SCHEMA.MY_ONNX_MODEL"
    }'
  );
END;
/

8 Ativar profile

EXEC DBMS_CLOUD_AI.SET_PROFILE('OCI_GENAI');

9 Teste do modelo

SELECT VECTOR_EMBEDDING(
  SRC_SCHEMA.MY_ONNX_MODEL 
  USING 'texto de teste' AS data
)
FROM dual;

Resumo rápido

Etapa Ação
1 Validar modelo no SRC_SCHEMA
2 Grants DBMS_CLOUD / DBMS_CLOUD_AI
3 ENABLE_DATA_ACCESS (opcional)
4 GRANT SELECT MINING MODEL
5 Usar nome qualificado (sem alias)
6 Criar credential
7 Criar profile
8 Ativar profile
9 Testar uso

⚠️ Observações importantes

  • O privilégio correto é SELECT MINING MODEL
  • CREATE MINING MODEL só é necessário para criação de modelos
  • Sempre usar nome qualificado (schema.model) em cenários cross-schema
  • SELECT ANY MINING MODEL deve ser evitado em produção (princípio do menor privilégio)