Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever em uma conta gratuita, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Transmita Dados para o Oracle Autonomous Transaction Processing Database usando o OCI Functions
Introdução
Neste tutorial, aprenderemos a criar e implantar um pipeline de streaming de dados em tempo real usando os serviços da Oracle Cloud Infrastructure (OCI). O pipeline transmite dados de um fluxo do OCI para um Oracle Autonomous Database aproveitando o OCI Connector Hub e o OCI Functions. A função é gravada em Java, empregando o método de Autenticação do Controlador de Recursos para acesso seguro aos serviços do OCI e uma wallet de banco de dados para estabelecer uma conexão com o Oracle Autonomous Database.
OCI Streaming: A OCI tem uma variedade de ferramentas para lidar com dados na nuvem, com o OCI Streaming sendo um desses serviços adaptado para fluxos de dados em tempo real de alto rendimento. Ao aproveitar o OCI Streaming, os desenvolvedores podem construir pipelines de dados escaláveis e confiáveis que ingerem, processam e distribuem fluxos de dados com eficiência.
OCI Functions: O OCI Functions é uma plataforma Functions-as-a-Service totalmente gerenciada, multitenant, altamente escalável, sob demanda. Ela foi criada na OCI de nível empresarial e desenvolvida pelo mecanismo de código-fonte aberto Fn Project. Use o OCI Functions quando quiser se concentrar na gravação de código para atender às necessidades do negócio.
Autenticação do Controlador de Recursos: Você pode usar um controlador de recursos para autenticar e acessar recursos do OCI. O controlador de recursos consiste em um token de sessão temporário e credenciais seguras que permitem que o OCI Functions se autentique em outros serviços do OCI, como o OCI Streaming.
OCI Connector Hub: O OCI Connector Hub é uma plataforma de barramento de mensagens na nuvem que oferece um único painel de controle para descrever, executar e monitorar interações ao mover dados entre os serviços do OCI.
Observação:
- Este tutorial é projetado exclusivamente para fins educacionais e de estudo. Ele fornece um ambiente para os alunos experimentarem e ganharem experiência prática em um ambiente controlado. É crucial notar que as configurações e práticas de segurança empregadas neste tutorial podem não ser adequadas para cenários do mundo real.
- As considerações de segurança para aplicativos do mundo real geralmente são muito mais complexas e dinâmicas. Portanto, antes de implementar qualquer uma das técnicas ou configurações aqui demonstradas em um ambiente de produção, é essencial realizar uma avaliação e revisão abrangentes de segurança. Essa revisão deve abranger todos os aspectos de segurança, incluindo controle de acesso, criptografia, monitoramento e conformidade, para garantir que o sistema esteja alinhado com as políticas e padrões de segurança da organização.
- A segurança deve ser sempre uma prioridade máxima ao fazer a transição de um ambiente de laboratório para uma implantação do mundo real.
Objetivos
- Crie um pipeline de streaming de dados integrado que processe mensagens em tempo real. Quando uma nova mensagem é publicada em um fluxo do OCI, ela é encaminhada e processada automaticamente pelo OCI Functions, que então carrega os dados no banco de dados Oracle Autonomous Transaction Processing (ATP). Essa solução de ponta a ponta mostra a ingestão e a transformação eficientes de dados usando serviços da OCI, garantindo uma integração segura e escalável entre sistemas de streaming e banco de dados.
Pré-requisitos
-
Oracle Cloud Infrastructure:
-
Conta Oracle com permissões de acesso no nível de administrador.
-
Um compartimento para criar seus recursos.
Observação: Anote o nome e o ID do compartimento.
-
VCN com uma sub-rede privada. Para obter mais informações, consulte Criando uma Rede Virtual na Nuvem.
Observação: Observe o OCID da VCN e o nome da sub-rede. Você precisará dele para o pool de streams e as funções.
-
Crie um pool de streams na sub-rede privada com base na sua VCN. Para obter mais informações, consulte Criando um Pool de Streams.
-
Crie o stream chamado
myfirststream
no mesmo pool de streams criado antes. Para obter mais informações, consulte Criando um Fluxo. -
Um Oracle Autonomous Database. Para obter mais informações, consulte Oracle Autonomous Database.
-
Um Vault do OCI para armazenar segredos. Para obter mais informações, consulte Criando um Vault
-
Um token de autenticação do OCI para ativar o log-in no OCI Container Registry. Para obter mais informações, consulte Gerando um Token de Autenticação para Ativar o Acesso ao Oracle Cloud Infrastructure Registry.
-
-
Ambiente do OCI Cloud Shell:
- Um OCI Cloud Shell é necessário para implantar a função no OCI. Se você não tiver um OCI Cloud Shell, poderá usar um Bastion host. Para obter mais informações, consulte Visão Geral do Serviço Bastion.
Tarefa 1: Configurar Grupos Dinâmicos
Faça log-in na Console do OCI, navegue até seu domínio, clique em Grupos Dinâmicos e crie um grupo com as informações a seguir.
-
Nome do Grupo: Digite
MyFunctions
.ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}
Tarefa 2: Criar Políticas
Vá para a Console do OCI, navegue até Políticas e crie as políticas com as informações a seguir.
-
Nome da Política: Digite
FunctionsPolicies
.Allow dynamic-group MyFunctions to {STREAM_INSPECT, STREAM_READ, STREAM_CONSUME, STREAM_PRODUCE} in compartment YOUR-COMPARTMENT-NAME Allow dynamic-group MyFunctions to read repos in compartment YOUR-COMPARTMENT-NAME Allow dynamic-group MyFunctions to read objects in compartment YOUR-COMPARTMENT-NAME Allow dynamic-group MyFunctions to read secret-bundles in compartment YOUR-COMPARTMENT-NAME
Tarefa 3: Criar um Registro de Contêiner do OCI
-
Vá para a Console do OCI, navegue até Developer Services, Containers & Artifacts, selecione Container registry e clique em Create repository para criar um repositório privado para a imagem da função.
-
Nome do repositório: Digite
lab/fn-java-event-to-atp
.
-
-
Verifique os repositórios e anote o Namespace.
-
Abra o OCI Cloud Shell no qual você deve ter a CLI e o Docker do OCI instalados e continue com o log-in no registro. Verifique qual é o URL correto para sua região. Neste tutorial, estamos usando Leste do Brasil (São Paulo) em que o URL do registro é
gru.ocir.io
.Observação: Você precisará do token de autenticação do usuário criado na seção Pré-requisitos.
docker login gru.ocir.io Username: <your container namespace>/youruser Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
Tarefa 4: Criar um Bucket do OCI Object Storage para Armazenar sua Wallet de Banco de Dados
Vá para a Console do OCI, navegue até Armazenamento, Armazenamento de Objetos e Armazenamento de Arquivos Compactados, Buckets e clique em Criar Bucket para criar um novo bucket chamado Wallet
para armazenar o arquivo zip da wallet do banco de dados.
Tarefa 5: Fazer Download da Wallet do Banco de Dados e Armazená-la no Bucket do OCI Object Storage
Observação: Este exemplo de código demonstra como estabelecer conexão segura com um Oracle Autonomous Database usando a wallet. Para continuar, você precisará configurar suas credenciais de wallet e estabelecer uma senha para uso em todo este tutorial.
-
Vá para a Console do OCI, navegue até o Oracle Database, clique em Autonomous Database e selecione seu ATP.
-
Clique em Conexão de Banco de Dados.
-
Informe a senha da wallet e anote, você precisará dessa senha no seu aplicativo.
-
Vá para o bucket do OCI Object Storage criado na Tarefa 4 e clique em Fazer Upload para fazer upload do arquivo zip da wallet baixado.
Tarefa 6: Armazenar com Segurança as Credenciais do Banco de Dados e a Senha da Wallet no Vault
Observação: Como pré-requisito, verifique se você já criou um vault.
-
Vá para a Console do OCI, navegue até Identidade e Segurança, Vault e selecione seu vault.
-
Clique em Segredos, Criar Segredo e crie segredos com as informações a seguir.
Nome do Segredo Valor MYRDBMS_WALLET_PASSWORD
Sua senha da wallet em texto sem formatação MYRDBMS_DB_PASSWORD
Sua senha do banco de dados em texto sem formatação Observação Certifique-se de selecionar Texto Simples para Modelo de Tipo de Segredo.
Repita esse processo também para MYRDBMS_DB_PASSWORD
e anote os dois OCIDs que serão usados para a configuração da função.
Tarefa 7: Criar as Funções do Java OCI para Receber a Mensagem de Evento e Inserir no Banco de Dados ATP
Observação Certifique-se de selecionar sua sub-rede privada, a mesma sub-rede do pool de streams.
-
Vá para a Console do OCI, acesse Developer Services, Functions, Applications e clique em Create application.
-
Vá para o OCI Cloud Shell no qual você tem Docker, CLI do OCI e CLI do Fn Project instalados e execute o comando a seguir para inicializar a função.
Observação: Se você seguiu as tarefas, seu comando de log-in do Docker já foi executado até agora, caso contrário, prossiga com as etapas de log do Docker na Tarefa 3.
-
Verifique o contexto atual, já que você está usando o OCI Cloud Shell, ele já deve estar configurado no contexto atual.
fn list context
-
Execute o comando a seguir para atualizar suas configurações de função para poder extrair imagens do registro de contêiner criado na Tarefa 3.
fn update context oracle.compartment-id PASTE_YOUR_COMPARTMENT_OCID fn update context registry gru.ocir.io/PASTE_YOUR_REGISTRY_NAMESPACE/lab fn list context
Observação: Neste tutorial, estamos usando a região Leste do Brasil (São Paulo). Se você estiver usando outra região, será necessário alterar os locais URL da API e REGISTÉRIA.
-
Execute o comando a seguir para verificar se o aplicativo criado está listado no OCI Cloud Shell.
Observação: Certifique-se de que o OCI Cloud Shell esteja usando Rede: Pública
fn list apps
-
Obtenha o código de amostra da função Java aqui: fn-java-event-to-atp.zip e faça upload dele no OCI Cloud Shell e, em seguida, descompacte o arquivo.
-
Clique no menu superior direito e selecione Fazer Upload para fazer upload do arquivo.
-
Execute o comando a seguir para descompactar o arquivo.
# check your file is there ls -lrt # unzip the file unzip fn-java-event-to-atp.zip # check again ls -lrt
Observação: Este projeto Java conciso recupera a entrada de dados JSON do OCI Connector Hub, analisa-a de acordo com um formato predefinido e insere perfeitamente as informações extraídas no banco de dados ATP. Para garantir a inserção de dados adequada, consulte as etapas a seguir para obter orientação sobre o formato de mensagem necessário e a tabela correspondente no banco de dados ATP.
-
No OCI Cloud Shell, execute o comando a seguir para criar o código e implantar a função.
fn deploy --app MyApp # After deploy complete, check the function is there: fn list functions MyApp |grep fn-java-event-to-atp
-
Vá para a Console do OCI, acesse Developer Services, Functions, Applications, selecione seu aplicativo (
Myapp
) e clique em sua função.Observação O código de amostra Java deste tutorial utiliza variáveis de configuração para estabelecer uma conexão com o banco de dados. Certifique-se de fornecer os valores apropriados do seu ambiente para garantir uma execução bem-sucedida.
-
Crie todas as configurações a seguir.
Nome/Chave do Segredo | Valor |
---|---|
WALLET_BUCKET | Wallet |
WALLET_OBJECT | nome do seu arquivo zip |
BUCKET_NAMESPACE | Seu namespace de bucket |
DB_USER | Seu nome de usuário do banco de dados |
DB_SERVICE_NAME | o nome do serviço de banco de dados que você encontra nos detalhes da sua conexão de banco de dados |
DB_PASSWORD_OCID_VAULT | colar seu OCID de segredo |
DB_WALLET_PASSWORD_OCID_VAULT | colar seu OCID de segredo |
Tarefa 8: Criar uma Nova Tabela no Banco de Dados ATP
Crie uma nova tabela chamada MY_TABLE
no banco de dados ATP para receber dados do streaming.
-
Selecione o Oracle Autonomous Database no qual você fez download da wallet, clique no menu drop-down Ações do banco de dados e, em seguida, clique em SQL.
-
Execute o comando DDL de criação de tabela a seguir.
Observação Este laboratório usa o usuário ADMIN para conexões de banco de dados. Substitua seu próprio nome de usuário se ele for diferente.
CREATE TABLE "ADMIN"."MY_TABLE" ( "CODE" VARCHAR2(50 BYTE), "NAME" VARCHAR2(500 BYTE) ) ;
Tarefa 9: Configurar o OCI Connector Hub para Chamar a Função quando uma nova Mensagem Chegar no Stream
Agora que você criou a função e a nova tabela para armazenar os dados, é hora de conectar tudo! Faremos isso configurando um pipeline que flui do OCI Streaming, por meio do OCI Connector Hub e, finalmente, para o OCI Functions.
-
Vá para a Console do OCI, navegue até Analytics & AI, Messaging e clique em Connector Hub.
-
Clique em Criar conector e digite as informações a seguir.
- Nome do conector: Digite
StreamingToFN
. - Origem: Selecione Streaming.
- Destino: Selecione Funções.
Observação Como pré-requisito, certifique-se de que você já tenha criado seu pool de streams e o stream chamado
myfirststream
. - Nome do conector: Digite
-
Em Configurar origem, selecione seu pool de fluxos e Stream.
-
Em Configurar destino, selecione MyApp como Aplicativo de Função e fn-java-event-to-atp como Função.
Observação Talvez você precise criar políticas adicionais conforme sugerido na página Criar conector.
Tarefa 10: Criar uma Mensagem no OCI Streaming e Verificar o Funcionamento do Pipeline
Observação A amostra de código Java fornecida foi projetada para processar mensagens em uma estrutura JSON específica. O código analisa esse JSON para extrair os dados necessários e, em seguida, insere-os na tabela
MY_TABLE
. Qualquer desvio do formato JSON esperado resultará em erros de parsing e impedirá a inserção bem-sucedida do banco de dados.
Mensagem de Amostra JSON:
{"code": "001", "name":"Larry"}
Siga as etapas:
-
Vá para a Console do OCI, navegue até Analytics & AI, Messaging, Streaming, selecione seu stream (
myfirststream
) e clique em Produzir Mensagem de Teste. -
Em Dados, digite a mensagem JSON de amostra e clique em Produzir.
Observação O pipeline de stream pode experimentar um início frio em sua primeira execução, resultando em um atraso perceptível. Essa é uma consequência da inicialização da função que ocorre na primeira tentativa do hub do conector de enviar uma mensagem.
Tarefa 11: Validar os Dados Chegados no Banco de Dados
-
Selecione o Oracle Autonomous Database no qual você fez download da wallet, clique no menu drop-down Ações do banco de dados e clique em SQL.
-
Execute a seguinte consulta.
select * from admin.my_table;
Solução de problemas e dicas
-
Ative logs para sua função e verifique se há erros. Para obter mais informações sobre registro em log, consulte Armazenando e Exibindo Logs de Função.
-
Validar se todas as políticas estão em vigor, conforme detalhado na seção Pré-requisitos.
-
Ative logs para o hub do OCI Connector. Para obter mais informações, consulte Logs do Connector Hub.
Links Relacionados
Confirmações
- Autor - João Tarla (Engenheiro de Soluções da Equipe A do Oracle LAD)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Stream Data to Oracle Autonomous Transaction Processing Database using OCI Functions
G25954-01
February 2025
Copyright ©2025, Oracle and/or its affiliates.