Gerencie e Armazene Arquivos em um Repositório de Código de Nuvem com o Autonomous AI Database

O Autonomous AI Database fornece rotinas para gerenciar e armazenar arquivos em Repositórios de Código de Nuvem (Git). Os Repositórios de Código da Nuvem suportados são: GitHub, AWS CodeCommit e Azure Repos.

Sobre os Repositórios de Código da Nuvem com o Autonomous AI Database

O pacote DBMS_CLOUD_REPO fornece uma única interface para acessar um Cloud Code Repository no Autonomous AI Database.

Os Repositórios de Código da Nuvem suportados fornecem os seguintes recursos:

As APIs DBMS_CLOUD_REPO usam um handle de repositório (objeto REPO). O handle do repositório é um objeto JSON opaco que representa um Repositório de Código da Nuvem de um provedor de nuvem específico. Um objeto REPO pode ser passado para diferentes APIs DBMS_CLOUD_REPO. Esse objeto opaco garante que os procedimentos e funções DBMS_CLOUD_REPO sejam compatíveis com várias nuvens; você não precisa alterar seu código ao migrar de um provedor do Cloud Code Repository para outro Cloud Code Repository.

O Autonomous AI Database fornece o seguinte para ajudá-lo a trabalhar com os Repositórios de Código da Nuvem:

Inicializar um Repositório de Código da Nuvem

As rotinas de inicialização DBMS_CLOUD_REPO inicializam um Cloud Code Repository. Depois de obter um handle do Cloud Code Repository, você usará o handle para acessar o Cloud Code Repository.

Para inicializar um Repositório de Código da Nuvem:

  1. Crie uma credencial para acessar o Cloud Code Repository.

    Consulte Procedimento CREATE_CREDENTIAL para obter informações sobre como criar credenciais.

  2. Dependendo do repositório, do GitHub, do Azure Repos ou do AWS CodeCommit, chame DBMS_CLOUD_REPO.INIT_REPO com os parâmetros do repositório específico para obter um handle de repositório.

    Os exemplos a seguir fornecem amostras para cada Repositório de Código da Nuvem suportado.

    • Inicialização do GitHub:

      DEFINE repo_name='test_repo';
      DEFINE cred_name='GITHUB_CRED';
      VAR repo clob
      BEGIN
        :repo := DBMS_CLOUD_REPO.INIT_REPO(
                      params => JSON_OBJECT('provider' value 'github',
                                            'repo_name' value '&repo_name',
                                            'credential_name' value '&cred_name',
                                            'owner'           value '<myuser>')
                );
      END;
      /
      
    • Inicialização do Repositório do Azure:

      DEFINE repo_name='test_repo';
      DEFINE cred_name='AZURE_REPO_CRED';
      VAR repo clob
      BEGIN
        :repo := DBMS_CLOUD_REPO.INIT_REPO(
                      params => JSON_OBJECT('provider' value 'azure',
                                            'repo_name' value '&repo_name',
                                            'credential_name' value '&cred_name',
                                            'organization' value '<myorg>',
                                            'project' value '<myproject>')
                );
      END;
      /
      
    • Inicialização do AWS CodeCommit:

      DEFINE repo_name='test_repo';
      DEFINE cred_name='AWS_REPO_CRED';
      VAR repo clob
      BEGIN
        :repo := DBMS_CLOUD_REPO.INIT_REPO(
                      params => JSON_OBJECT('provider' value 'aws',
                                            'repo_name' value '&repo_name',
                                            'credential_name' value '&cred_name',
                                            'region' value 'us-east-1')
                );
      END;
      /
      

Consulte Operações de Inicialização DBMS_CLOUD_REPO para obter detalhes sobre as funções de inicialização.

Criar e Gerenciar um Repositório de Código da Nuvem

As rotinas de gerenciamento DBMS_CLOUD_REPO permitem que você gerencie um Cloud Code Repository criando, listando, atualizando ou excluindo um repositório.

Primeiro, obtenha um handle do Cloud Code Repository para fornecer acesso a um repositório. Consulte Inicializar um Repositório de Código da Nuvem para obter detalhes.

  1. Para criar um repositório:

     VAR repo clob
     BEGIN
       DBMS_CLOUD_REPO.CREATE_REPOSITORY(
             repo => :repo,
             description => 'test repo'
       );
     END;
     /
    
  2. Para atualizar um repositório:

     VAR repo clob
     DEFINE repo_name='test_repo';
     BEGIN
       DBMS_CLOUD_REPO.UPDATE_REPOSITORY(
             repo => :repo,
             new_name => '&repo_name' || '_new'
       );
     END;
     /
    
  3. Para listar repositórios:

     col id format a30
     col name format a10
     col description format a15
     select id, name, bytes, private, description from
       DBMS_CLOUD_REPO.LIST_REPOSITORIES(:repo);
    
  4. Para excluir um repositório:

     VAR repo clob
     BEGIN
       DBMS_CLOUD_REPO.DELETE_REPOSITORY(
             repo => :repo
       );
     END;
     /
    

Consulte Operações de Gerenciamento de Repositório DBMS_CLOUD_REPO para obter mais informações.

Criar e Gerenciar Ramificações em um Repositório de Código da Nuvem

As rotinas de gerenciamento DBMS_CLOUD_REPO permitem que você gerencie ramificações do Cloud Code Repository criando, listando, mesclando ou excluindo ramificações em um repositório.

Para executar operações de gerenciamento de ramificações do Cloud Code Repository, você deve primeiro:

  1. Para criar uma ramificação em um Cloud Code Repository:

     BEGIN
       DBMS_CLOUD_REPO.CREATE_BRANCH (
         repo            => l_repo,
         branch_name     => 'test_branch',
         parent_branch   => 'main'
         );
     END;
     /
    
  2. Para excluir uma ramificação em um Repositório de Código da Nuvem:

     BEGIN
       DBMS_CLOUD_REPO.DELETE_BRANCH (
           repo        => l_repo,
           branch_name => 'test_branch'
       );
     END;
     /
    
  3. Para mesclar uma ramificação em outra ramificação em um Cloud Code Repository:

     BEGIN
       DBMS_CLOUD_REPO.MERGE_BRANCH (
         repo               => l_repo,
         branch_name        => 'test_branch',
         target_branch_name => 'main'
         );
     END;
     /
    
  4. Para listar ramificações em um Repositório de Código da Nuvem:

     SELECT * FROM DBMS_CLOUD_REPO.LIST_BRANCHES (repo => l_repo);
    
  5. Você pode listar commits em uma ramificação no Cloud Code Repository com base no seguinte;

    • Repositório

    • Ramificação

    • O caminho para a ramificação

    • SHA/id_commit

      Observação: SHA é uma string de 40 caracteres composta por caracteres hexadecimais (0-9 e a-f).

    Para listar commits com base no repositório:

     SELECT * FROM DBMS_CLOUD_REPO.LIST_COMMITS (
         repo => :repo);
    

    Para listar commits com base no repositório, commit_id e caminho do arquivo da ramificação:

     SELECT * FROM DBMS_CLOUD_REPO.LIST_COMMITS (
         repo        => l_repo,
         commit_id   => '66dd2b23b74cd0afabd11af66c6aa9c550540ba6',
         file_path   => 'sub_dir/test11.sql'
    

    Para listar commits com base no repositório e no caminho do arquivo da ramificação:

     SELECT * FROM DBMS_CLOUD_REPO.LIST_COMMITS (
         repo        => :repo,
         branch_name => 'branch1');
    

    Para listar commits com base no repositório, branch_name e caminho do arquivo da ramificação:

     SELECT * FROM DBMS_CLOUD_REPO.LIST_COMMITS (
         repo         => :repo,
         branch_name  => 'branch1',
         file_path    => 'sub_dir/test11.sql');
    

    Para listar commits com base no repositório e commit_id da ramificação:

     SELECT * FROM DBMS_CLOUD_REPO.LIST_COMMITS (
         repo => :repo,
         commit_id =>'66dd2b23b74cd0afabd11af66c6aa9c550540ba6');
    

Consulte Operações de Gerenciamento de Ramificação do Repositório DBMS_CLOUD_REPO para obter mais informações.

Exportar Objetos de Esquema para a Ramificação do Cloud Code Repository

A rotina de gerenciamento DBMS_CLOUD_REPO permite exportar metadados dos objetos em um esquema para a ramificação Cloud Code Repository. Você pode filtrar sua lista com base nos nomes ou tipos de objeto.

Para exportar metadados de esquema, você deve primeiro:

Use o procedimento EXPORT_SCHEMA para exportar metadados dos objetos no seu esquema para uma ramificação do Cloud Code Repository:

BEGIN
  DBMS_CLOUD_REPO.EXPORT_SCHEMA(
    repo          => l_repo,
    schema_name   => 'USER1',
    file_path     => 'myschema_ddl.sql'
    filter_list   =>
        to_clob('[
             { "match_type":"equal",
                 "type":"table"
             },
             { "match_type":"not_equal",
                 "type":"view"
             },
             { "match_type":"in",
                 "type":"table",
                 "name": " ''EMPLOYEE_SALARY'',''EMPLOYEE_ADDRESS'' "
             },
             { "match_type":"equal",
                 "type":"sequence",
                 "name": "EMPLOYEE_RECORD_SEQ"
             },
             { "match_type":"like",
                 "type":"table",
                 "name": "%OFFICE%"
             }
        ]'
     );
  );
END;
/

Este exemplo exporta os metadados do esquema USER1 para o repositório l_repo. A exportação inclui os metadados das tabelas EMPLOYEE_SALARY e EMPLOYEE_ADDRESS, e qualquer nome de tabela que contenha OFFICE. Ele também exporta a sequência EMPLOYEE_RECORD_SEQ e exclui as views no esquema.

Consulte Procedimento EXPORT_SCHEMA para obter mais informações.

Usar Operações de Arquivo com um Repositório de Código da Nuvem

As operações de arquivo DBMS_CLOUD_REPO permitem que você crie, obtenha, liste, atualize ou exclua arquivos em um Cloud Code Repository.

Obtenha um handle do Cloud Code Repository antes de usar as operações de arquivo. Consulte Inicializar um Repositório de Código da Nuvem para obter detalhes.

Você também precisa criar um repositório antes de trabalhar com arquivos. Consulte Criar e Gerenciar um Repositório de Código da Nuvem para obter detalhes.

  1. Para obter um arquivo:
     SELECT DBMS_CLOUD_REPO.GET_FILE(repo => :repo, file_path => 'test1.sql')
    
  2. Para criar um arquivo:

     VAR repo clob
     BEGIN
       DBMS_CLOUD_REPO.PUT_FILE(
             repo => :repo,
             file_path => 'test1.sql',
             contents => UTL_RAW.cast_to_raw('create table t1 (x varchar2(30))' || CHR(10) || '/')
    
       );
     END;
     /
    
  3. Para atualizar um arquivo:

     VAR repo clob
     BEGIN
       DBMS_CLOUD_REPO.PUT_FILE(
             repo => :repo,
             file_path => 'test1.sql',
             contents => UTL_RAW.cast_to_raw('create table t2 (x varchar2(30))' || CHR(10) || '/')
    
       );
     END;
     /
    
  4. Para listar arquivos:

     SELECT id, name, bytes, url FROM DBMS_CLOUD_REPO.LIST_FILES(repo => :repo);
    
  5. Para excluir um arquivo:

     VAR repo clob
     BEGIN
       DBMS_CLOUD_REPO.DELETE_FILE(
             repo => :repo,
             file_path => 'test1.sql'
       );
     END;
     /
    

Consulte Operações de Arquivo DBMS_CLOUD_REPO para obter mais informações.

Usar Operações de Instalação SQL com um Repositório de Código da Nuvem

As operações de Instalação SQL DBMS_CLOUD_REPO permitem armazenar e fazer download de scripts SQL em um Repositório de Código da Nuvem.

Obtenha um handle do Cloud Code Repository antes de usar as operações de Instalação SQL. Consulte Inicializar um Repositório de Código da Nuvem para obter detalhes.

Você também precisa criar um repositório antes de trabalhar com operações de Instalação SQL. Consulte Criar e Gerenciar um Repositório de Código da Nuvem para obter detalhes.

Os scripts são destinados como scripts de instalação de esquema e não como scripts SQL genéricos:

Qualquer instrução SQL que possa ser executada com o uso de EXECUTE IMMEDIATE funcionará se não contiver variáveis de bind ou definições.

  1. Para fazer upload de metadados DDL para um Repositório de Código da Nuvem:

     VAR repo clob
     BEGIN
       DBMS_CLOUD_REPO.EXPORT_OBJECT(
             repo => :repo,
             object_type => 'PACKAGE',
             object_name => 'MYPACK',
             file_path   => 'mypack.sql'
       );
     END;
     /
    
  2. Para instalar instruções SQL de um arquivo:

     VAR repo clob
     BEGIN
       DBMS_CLOUD_REPO.INSTALL_FILE(
             repo => :repo,
             file_path     => 'test3.sql',
             stop_on_error => FALSE
       );
     END;
     /
    
  3. Para instalar instruções SQL a partir de um buffer::

     VAR repo clob
     BEGIN
       DBMS_CLOUD_REPO.INSTALL_SQL(
             repo => :repo,
             content   => 'create table t1 (x varchar2(30))' || CHR(10) || '/',
    
             stop_on_error => FALSE
       );
     END;
     /
    

Consulte Operações de Instalação SQL DBMS_CLOUD_REPO para obter mais informações.

Conteúdo Relacionado

Sobre o DBMS_CLOUD_REPO