Dateien mit Autonomous Database in einem Cloud-Code-Repository verwalten und speichern

Autonomous Database stellt Routinen zum Verwalten und Speichern von Dateien in Cloud-Code-(Git-)Repositorys bereit. Folgende Cloud-Code-Repositorys werden unterstützt: GitHub, AWS CodeCommit und Azure Repos.

Verwandte Themen

Cloud-Code-Repositorys mit Autonomous Database

Das DBMS_CLOUD_REPO-Package stellt eine einzelne Schnittstelle für den Zugriff auf ein Cloud-Code-Repository aus Autonomous Database bereit.

Die unterstützten Cloud-Code-Repositorys bieten die folgenden Features:

  • Git-Versionskontrollsystem: Git ist eine Software zur Verfolgung von Änderungen in einem beliebigen Set von Dateien. In der Regel wird sie verwendet, um die Arbeit zwischen Programmierern zu koordinieren, die während der Softwareentwicklung gemeinsam Quellcode entwickeln. Ihre Ziele umfassen unter anderem Geschwindigkeit, Datenintegrität und Unterstützung für verteilte, nichtlineare Workflows.

  • Git-Repository: Ein Git-Repository ist ein virtueller Speicher Ihres Projekts. Damit können Sie Versionen Ihres Codes speichern, auf die Sie bei Bedarf zugreifen können.

Die DBMS_CLOUD_REPO-APIs verwenden ein Repository Handle (REPO-Objekt). Das Repository Handle ist ein nicht transparentes JSON-Objekt, das ein Cloud-Code-Repository eines bestimmten Cloud-Providers darstellt. Ein REPO-Objekt kann an verschiedene DBMS_CLOUD_REPO-APIs übergeben werden. Dieses nicht transparente Objekt stellt sicher, dass DBMS_CLOUD_REPO-Prozeduren und -Funktionen mit Multicloud-Computing kompatibel sind. Sie müssen Ihren Code nicht ändern, wenn Sie von einem Cloud-Code-Repository-Provider zu einem anderen Cloud-Code-Repository migrieren.

Autonomous Database stellt für die Arbeit mit Cloud-Code-Repositorys Folgendes bereit:

Cloud-Code-Repository initialisieren

Mit den DBMS_CLOUD_REPO-Initialisierungsroutinen können Sie ein Cloud-Code-Repository initialisieren. Nachdem Sie ein Handle für das Cloud-Code-Repository erhalten haben, können Sie mit dem Handle auf das Cloud-Code-Repository zugreifen.

So initialisieren Sie ein Cloud-Code-Repository:

  1. Erstellen Sie Zugangsdaten für den Zugriff auf das Cloud-Code-Repository.

    Informationen zum Erstellen von Zugangsdaten finden Sie unter Prozedur CREATE_CREDENTIAL.

  2. Rufen Sie je nach Repository (GitHub, Azure Repos oder AWS CodeCommit) DBMS_CLOUD_REPO.INIT_REPO mit den Parametern für das jeweilige Repository auf, um ein Repository Handle abzurufen.

    Nachfolgend finden Sie Beispiele für die einzelnen unterstützten Cloud-Code-Repositorys.

    • GitHub-Initialisierung:

      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;
      /
      
    • Azure-Repositorys initialisieren:

      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;
      /
    • AWS CodeCommit-Initialisierung:

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

Einzelheiten zu den Initialisierungsfunktionen finden Sie unter DBMS_CLOUD_REPO - Initialisierungsvorgänge.

Cloud-Code-Repository erstellen und verwalten

Mit den DBMS_CLOUD_REPO-Verwaltungsroutinen können Sie ein Cloud-Code-Repository verwalten, indem Sie es erstellen, auflisten, aktualisieren oder löschen.

Rufen Sie zunächst ein Handle für das Cloud-Code-Repository ab, um den Zugriff auf ein Repository zu ermöglichen. Weitere Informationen finden Sie unter Cloud-Code-Repository initialisieren.

  1. So erstellen Sie ein Repository:
    VAR repo clob
    BEGIN
      DBMS_CLOUD_REPO.CREATE_REPOSITORY(
            repo => :repo,
            description => 'test repo'
      );
    END;
    /
  2. So aktualisieren Sie ein Repository:
    
    VAR repo clob
    DEFINE repo_name='test_repo';
    BEGIN
      DBMS_CLOUD_REPO.UPDATE_REPOSITORY(
            repo => :repo,
            new_name => '&repo_name' || '_new'
      );
    END;
    /
  3. So listen Sie Repositorys auf:
    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. So löschen Sie ein Repository:
    VAR repo clob
    BEGIN
      DBMS_CLOUD_REPO.DELETE_REPOSITORY(
            repo => :repo
      );
    END;
    /

Weitere Informationen finden Sie unter DBMS_CLOUD_REPO - Repository-Verwaltungsvorgänge.

Verzweigungen in einem Cloud-Code-Repository erstellen und verwalten

Mit den DBMS_CLOUD_REPO-Verwaltungsrouten können Sie Cloud-Code-Repository-Verzweigungen verwalten, indem Sie Verzweigungen in einem Repository erstellen, auflisten, zusammenführen oder löschen.

Um Cloud-Code-Repository-Verzweigungsverwaltungsvorgänge auszuführen, müssen Sie zuerst:

  1. So erstellen Sie eine Verzweigung in einem Cloud-Code-Repository:
    BEGIN
      DBMS_CLOUD_REPO.CREATE_BRANCH (
        repo            => l_repo,
        branch_name     => 'test_branch',
        parent_branch   => 'main'
        );
    END;
    /
  2. So löschen Sie eine Verzweigung in einem Cloud-Code-Repository:
    BEGIN
      DBMS_CLOUD_REPO.DELETE_BRANCH (
          repo        => l_repo,
          branch_name => 'test_branch'
      );
    END;
    /
  3. So führen Sie eine Verzweigung in einer anderen Verzweigung in einem Cloud-Code-Repository zusammen:
    BEGIN
      DBMS_CLOUD_REPO.MERGE_BRANCH (
        repo               => l_repo,
        branch_name        => 'test_branch',
        target_branch_name => 'main'
        );
    END;
    /
  4. So listen Sie Verzweigungen in einem Cloud-Code-Repository auf:
    
    SELECT * FROM DBMS_CLOUD_REPO.LIST_BRANCHES (repo => l_repo);
    
  5. Sie können Commits in einer Verzweigung im Cloud-Code-Repository basierend auf folgenden Elementen auflisten:
    • Repository

    • Niederlassung

    • Der Dateipfad der Verzweigung

    • SHA/commit_id

      Hinweis:

      SHA ist eine aus 40 Zeichen bestehende Prüfsumme aus Hexadezimalzeichen (0–9 und a–f).

    So listen Sie Commits basierend auf dem Repository auf:

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

    So listen Sie Commits basierend auf dem Repository, commit_id und dem Dateipfad der Verzweigung auf:

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

    So listen Sie Commits basierend auf dem Repository und dem Dateipfad der Verzweigung auf:

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

    So listen Sie Commits basierend auf dem Repository, branch_name und dem Dateipfad der Verzweigung auf:

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

    So listen Sie Commits basierend auf dem Repository und commit_id der Verzweigung auf:

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

Weitere Informationen finden Sie unter DBMS_CLOUD_REPO Repository-Verzweigungsverwaltungsvorgänge.

Schemaobjekte in die Cloud-Code-Repository-Verzweigung exportieren

Mit der Verwaltungsroutine DBMS_CLOUD_REPO können Sie Metadaten der Objekte in einem Schema in die Verzweigung Cloud-Code-Repository exportieren. Sie können Ihre Liste anhand der Objektnamen oder Objekttypen filtern.

Um Schemadaten zu exportieren, müssen Sie zuerst:

Verwenden Sie die Prozedur EXPORT_SCHEMA, um Metadaten der Objekte in Ihrem Schema in eine Cloud-Code-Repository-Verzweigung zu exportieren:

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

In diesem Beispiel werden die Metadaten des Schemas USER1 in das Repository l_repo exportiert. Der Export umfasst die Metadaten der Tabellen EMPLOYEE_SALARY und EMPLOYEE_ADDRESS sowie alle Tabellennamen, die OFFICE enthalten. Außerdem exportiert er die EMPLOYEE_RECORD_SEQ-Sequenz und schließt die Ansichten im Schema aus.

Weitere Informationen finden Sie unter Prozedur EXPORT_SCHEMA.

Dateivorgänge mit einem Cloud-Code-Repository verwenden

Mit den DBMS_CLOUD_REPO-Dateivorgängen können Sie Dateien in einem Cloud-Code-Repository erstellen, abrufen, auflisten, aktualisieren oder löschen.

Rufen Sie ein Handle für das Cloud-Code-Repository ab, bevor Sie die Dateivorgänge verwenden. Weitere Informationen finden Sie unter Cloud-Code-Repository initialisieren.

Außerdem müssen Sie ein Repository erstellen, bevor Sie mit Dateien arbeiten. Weitere Informationen finden Sie unter Cloud-Code-Repository erstellen und verwalten.

  1. So erhalten Sie eine Datei:
    
    SELECT DBMS_CLOUD_REPO.GET_FILE(repo => :repo, file_path => 'test1.sql')
    
  2. So erstellen Sie eine Datei:
    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. So aktualisieren Sie eine Datei:
    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. So listen Sie Dateien auf:
    SELECT id, name, bytes, url FROM DBMS_CLOUD_REPO.LIST_FILES(repo => :repo);
    
  5. So löschen Sie eine Datei:
    VAR repo clob
    BEGIN
      DBMS_CLOUD_REPO.DELETE_FILE(
            repo => :repo,
            file_path => 'test1.sql'
      );
    END;
    /

Weitere Informationen finden Sie unter DBMS_CLOUD_REPO File Operations.

SQL-Installationsvorgänge mit einem Cloud-Code-Repository verwenden

Mit den DBMS_CLOUD_REPO-SQL-Installationsvorgängen können Sie SQL-Skripte in einem Cloud-Code-Repository speichern und daraus herunterladen.

Rufen Sie ein Handle für das Cloud-Code-Repository ab, bevor Sie die SQL-Installationsvorgänge verwenden. Weitere Informationen finden Sie unter Cloud-Code-Repository initialisieren.

Außerdem müssen Sie ein Repository erstellen, bevor Sie mit SQL-Installationsvorgängen arbeiten können. Weitere Informationen finden Sie unter Cloud-Code-Repository erstellen und verwalten.

Die Skripte sind als Schemainstallationsskripte und nicht als generische SQL-Skripte vorgesehen:

  • Skripte dürfen keine clientspezifischen SQL*Plus-Befehle enthalten.
  • Skripte dürfen keine Bind-Variablen oder parametrisierten Skripte enthalten.
  • SQL-Anweisungen müssen mit einem Schrägstrich in einer neuen Zeile (/) beendet werden.
  • Skripte können DDL-, DML- und PLSQL-Anweisungen enthalten, direkte SELECT-Anweisungen werden jedoch nicht unterstützt. Die Verwendung von SELECT in einem PL/SQL-Block wird unterstützt.

SQL-Anweisungen, die mit EXECUTE IMMEDIATE ausgeführt werden können, funktionieren, solange sie keine Bind-Variablen oder Definitionen enthalten.

  1. So laden Sie DDL-Metadaten in ein Cloud-Code-Repository hoch:
    VAR repo clob
    BEGIN
      DBMS_CLOUD_REPO.EXPORT_OBJECT(
            repo => :repo,
            object_type => 'PACKAGE',
            object_name => 'MYPACK',
            file_path   => 'mypack.sql'
      );
    END;
    /
  2. So installieren Sie SQL-Anweisungen aus einer Datei:
    VAR repo clob
    BEGIN
      DBMS_CLOUD_REPO.INSTALL_FILE(
            repo => :repo,
            file_path     => 'test3.sql',
            stop_on_error => FALSE
      );
    END;
    /
  3. So installieren Sie SQL-Anweisungen aus einem Puffer:
    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;
    /

Weitere Informationen finden Sie unter DBMS_CLOUD_REPO - SQL-Installationsvorgänge.