Gestión y almacenamiento de archivos en un repositorio de código en la nube con una base de datos de IA autónoma

Autonomous AI Database proporciona rutinas para gestionar y almacenar archivos en repositorios de código en la nube (Git). Los repositorios de código en la nube soportados son: GitHub, AWS CodeCommit y Azure Repos.

Acerca de los repositorios de código en la nube con base de datos de IA autónoma

El paquete DBMS_CLOUD_REPO proporciona una única interfaz para acceder a un repositorio de código en la nube desde la base de datos de IA autónoma.

Los repositorios de código en la nube soportados ofrecen las siguientes funciones:

Las API DBMS_CLOUD_REPO utilizan un identificador de repositorio (objeto REPO). El identificador de repositorio es un objeto JSON opaco que representa un repositorio de código en la nube de un proveedor de nube específico. Un objeto REPO se puede transferir a diferentes API DBMS_CLOUD_REPO. Este objeto opaco garantiza que los procedimientos y las funciones de DBMS_CLOUD_REPO sean compatibles con varias nubes; no tiene que cambiar el código al migrar de un proveedor de repositorio de código en la nube a otro repositorio de código en la nube.

La base de datos de IA autónoma proporciona lo siguiente para ayudarle a trabajar con repositorios de código en la nube:

Inicialización de un repositorio de código en la nube

Las rutinas de inicialización DBMS_CLOUD_REPO inicializan un repositorio de código en la nube. Después de obtener un identificador del repositorio de código en la nube, utilice el identificador para acceder al repositorio de código en la nube.

Para inicializar un repositorio de código en la nube:

  1. Cree una credencial para acceder al repositorio de código en la nube.

    Consulte Procedimiento CREATE_CREDENTIAL para obtener información sobre la creación de credenciales.

  2. Dependiendo del repositorio, GitHub, Azure Repos o AWS CodeCommit, llame a DBMS_CLOUD_REPO.INIT_REPO con los parámetros para que el repositorio en particular obtenga un identificador de repositorio.

    En los siguientes ejemplos se proporcionan ejemplos para cada repositorio de código en la nube soportado.

    • Inicialización de 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;
      /
      
    • Inicialización de Azure Repos:

      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;
      /
      
    • Inicialización de CodeCommit de AWS:

      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 DBMS_CLOUD_REPO Initialization Operations para obtener más información sobre las funciones de inicialización.

Creación y gestión de un repositorio de código en la nube

Las rutinas de gestión DBMS_CLOUD_REPO permiten gestionar un repositorio de código en la nube creando, enumerando, actualizando o suprimiendo un repositorio.

En primer lugar, obtenga un identificador de repositorio de código en la nube para proporcionar acceso a un repositorio. Consulte Inicialización de un repositorio de código en la nube para obtener más información.

  1. Para crear un repositorio:

     VAR repo clob
     BEGIN
       DBMS_CLOUD_REPO.CREATE_REPOSITORY(
             repo => :repo,
             description => 'test repo'
       );
     END;
     /
    
  2. Para actualizar un repositorio:

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

     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 suprimir un repositorio:

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

Consulte Operaciones de gestión del repositorio DBMS_CLOUD_REPO para obtener más información.

Creación y gestión de sucursales en un repositorio de código en la nube

Las rutinas de gestión de DBMS_CLOUD_REPO le permiten gestionar bifurcaciones del repositorio de código en la nube mediante la creación, la enumeración, la fusión o la supresión de bifurcaciones en un repositorio.

Para realizar operaciones de gestión de sucursales del repositorio de código en la nube, primero debe:

  1. Para crear una rama en un repositorio de código en la nube:

     BEGIN
       DBMS_CLOUD_REPO.CREATE_BRANCH (
         repo            => l_repo,
         branch_name     => 'test_branch',
         parent_branch   => 'main'
         );
     END;
     /
    
  2. Para suprimir una rama en un repositorio de código en la nube:

     BEGIN
       DBMS_CLOUD_REPO.DELETE_BRANCH (
           repo        => l_repo,
           branch_name => 'test_branch'
       );
     END;
     /
    
  3. Para fusionar una rama en otra rama de un repositorio de código en la nube:

     BEGIN
       DBMS_CLOUD_REPO.MERGE_BRANCH (
         repo               => l_repo,
         branch_name        => 'test_branch',
         target_branch_name => 'main'
         );
     END;
     /
    
  4. Para mostrar las ramas de un repositorio de código en la nube:

     SELECT * FROM DBMS_CLOUD_REPO.LIST_BRANCHES (repo => l_repo);
    
  5. Puede mostrar las confirmaciones en una rama del repositorio de código en la nube según lo siguiente:

    • Repositorio

    • Rama

    • Ruta de archivo de la rama

    • SHA/ID de confirmación

      Nota: SHA es una cadena de total de control de 40 caracteres compuesta por caracteres hexadecimales (0-9 y a-f).

    Para mostrar las confirmaciones basadas en el repositorio:

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

    Para mostrar las confirmaciones basadas en el repositorio, commit_id y la ruta de acceso del archivo de la rama:

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

    Para mostrar las confirmaciones basadas en el repositorio y la ruta de archivo de la rama:

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

    Para mostrar las confirmaciones basadas en el repositorio, el nombre de rama y la ruta de archivo de la rama:

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

    Para mostrar las confirmaciones basadas en el repositorio y commit_id de la rama:

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

Consulte DBMS_CLOUD_REPO Repository Branch Management Operations para obtener más información.

Exportar objetos de esquema a la rama del repositorio de código en la nube

La rutina de gestión DBMS_CLOUD_REPO permite exportar metadatos de los objetos de un esquema a la rama del repositorio de código en la nube. Puede filtrar la lista según los nombres de objeto o los tipos de objeto.

Para exportar metadatos de esquema, primero debe:

Utilice el procedimiento EXPORT_SCHEMA para exportar metadatos de los objetos del esquema a una rama del repositorio de código en la nube:

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;
/

En este ejemplo, se exportan los metadatos del esquema USER1 al repositorio l_repo. La exportación incluye los metadatos de las tablas EMPLOYEE_SALARY y EMPLOYEE_ADDRESS, así como cualquier nombre de tabla que contenga OFFICE. También exporta la secuencia EMPLOYEE_RECORD_SEQ y excluye las vistas del esquema.

Consulte Procedimiento EXPORT_SCHEMA para obtener más información.

Uso de operaciones de archivo con un repositorio de código en la nube

Las operaciones de archivo DBMS_CLOUD_REPO le permiten crear, obtener, mostrar, actualizar o suprimir archivos en un repositorio de código en la nube.

Obtenga un manejador de repositorio de código en la nube antes de utilizar las operaciones de archivos. Consulte Inicialización de un repositorio de código en la nube para obtener más información.

También debe crear un repositorio antes de trabajar con archivos. Consulte Creación y gestión de un repositorio de código en la nube para obtener más información.

  1. Para obtener un archivo:
     SELECT DBMS_CLOUD_REPO.GET_FILE(repo => :repo, file_path => 'test1.sql')
    
  2. Para crear un archivo:

     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 actualizar un archivo:

     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 mostrar archivos:

     SELECT id, name, bytes, url FROM DBMS_CLOUD_REPO.LIST_FILES(repo => :repo);
    
  5. Para suprimir un archivo:

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

Consulte DBMS_CLOUD_REPO File Operations para obtener más información.

Uso de operaciones de instalación SQL con un repositorio de código en la nube

Las operaciones de instalación de SQL DBMS_CLOUD_REPO permiten almacenar y descargar scripts SQL desde un repositorio de código en la nube.

Obtenga un manejador de Cloud Code Repository antes de utilizar las operaciones de instalación de SQL. Consulte Inicialización de un repositorio de código en la nube para obtener más información.

También debe crear un repositorio antes de trabajar con operaciones de instalación SQL. Consulte Creación y gestión de un repositorio de código en la nube para obtener más información.

Los scripts están diseñados como scripts de instalación de esquema y no como scripts SQL genéricos:

Cualquier sentencia SQL que se pueda ejecutar mediante EXECUTE IMMEDIATE funcionará si no contiene variables de enlace o no las define.

  1. Para cargar metadatos DDL en un repositorio de código en la nube:

     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 sentencias SQL desde un archivo:

     VAR repo clob
     BEGIN
       DBMS_CLOUD_REPO.INSTALL_FILE(
             repo => :repo,
             file_path     => 'test3.sql',
             stop_on_error => FALSE
       );
     END;
     /
    
  3. Para instalar sentencias SQL desde un 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 Operaciones de instalación SQL de DBMS_CLOUD_REPO para obtener más información.

Contenido relacionado

Acerca de DBMS_CLOUD_REPO