使用自治式 AI 資料庫管理及儲存雲端程式碼儲存區域中的檔案

自治式 AI 資料庫提供管理及儲存雲端程式碼 (Git) 儲存區域中檔案的常式。支援的雲端程式碼儲存區域包括:GitHub、AWS CodeCommit 以及 Azure 儲存區域。

關於使用自治式 AI 資料庫的雲端程式碼儲存區域

DBMS_CLOUD_REPO 套裝程式提供從自治式 AI 資料庫存取雲端程式碼儲存區域的單一介面。

支援的雲端程式碼儲存區域提供下列功能:

DBMS_CLOUD_REPO API 使用儲存區域控制碼 (REPO 物件)。儲存區域控制碼是一個不通透的 JSON 物件,代表特定雲端提供者的雲端程式碼儲存區域。REPO 物件可以傳送到不同的 DBMS_CLOUD_REPO API。此不通透物件可確保 DBMS_CLOUD_REPO 程序和函數與多重雲端相容;從一個雲端程式碼儲存區域提供者移轉至另一個雲端程式碼儲存區域時,您不需要變更程式碼。

自治式 AI 資料庫提供下列功能,協助您使用雲端程式碼儲存區域:

起始雲端程式碼儲存區域

DBMS_CLOUD_REPO 初始化常式會初始化「雲端程式碼儲存區域」。取得「雲端程式碼儲存區域」控點之後,即可使用控點來存取「雲端程式碼儲存區域」。

起始「雲端程式碼儲存區域」:

  1. 建立證明資料以存取「雲端程式碼儲存區域」。

    如需建立證明資料的相關資訊,請參閱 CREATE_CREDENTIAL 程序

  2. 視儲存區域、GitHub、Azure Repos 或 AWS CodeCommit 而定,使用特定儲存區域的參數呼叫 DBMS_CLOUD_REPO.INIT_REPO 以取得儲存區域控制碼。

    下列範例提供每個支援之「雲端程式碼儲存區域」的範例。

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

請參閱 DBMS_CLOUD_REPO 初始化作業以瞭解初始化函數的詳細資訊。

建立及管理雲端程式碼儲存區域

DBMS_CLOUD_REPO 管理常式可讓您透過建立、列出、更新或刪除儲存區域來管理「雲端程式碼儲存區域」。

首先,取得「雲端程式碼儲存區域」控點以提供存取儲存區域。如需詳細資訊,請參閱初始化雲端程式碼儲存區域。

  1. 建立儲存區域:

     VAR repo clob
     BEGIN
       DBMS_CLOUD_REPO.CREATE_REPOSITORY(
             repo => :repo,
             description => 'test repo'
       );
     END;
     /
    
  2. 更新儲存區域:

     VAR repo clob
     DEFINE repo_name='test_repo';
     BEGIN
       DBMS_CLOUD_REPO.UPDATE_REPOSITORY(
             repo => :repo,
             new_name => '&repo_name' || '_new'
       );
     END;
     /
    
  3. 列出儲存區域:

     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. 刪除儲存區域:

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

請參閱 DBMS_CLOUD_REPO 儲存區域管理作業以瞭解詳細資訊。

在雲端程式碼儲存區域中建立及管理分支

DBMS_CLOUD_REPO 管理常式可讓您透過建立、列出、合併或刪除儲存區域中的分支來管理「雲端程式碼儲存區域」分支。

若要執行「雲端程式碼儲存區域」分支管理作業,您必須先:

  1. 在「雲端程式碼儲存區域」中建立分支:

     BEGIN
       DBMS_CLOUD_REPO.CREATE_BRANCH (
         repo            => l_repo,
         branch_name     => 'test_branch',
         parent_branch   => 'main'
         );
     END;
     /
    
  2. 刪除「雲端程式碼儲存區域」中的分支:

     BEGIN
       DBMS_CLOUD_REPO.DELETE_BRANCH (
           repo        => l_repo,
           branch_name => 'test_branch'
       );
     END;
     /
    
  3. 若要將分支合併至「雲端程式碼儲存區域」中的另一個分支:

     BEGIN
       DBMS_CLOUD_REPO.MERGE_BRANCH (
         repo               => l_repo,
         branch_name        => 'test_branch',
         target_branch_name => 'main'
         );
     END;
     /
    
  4. 列出「雲端程式碼儲存區域」中的分支:

     SELECT * FROM DBMS_CLOUD_REPO.LIST_BRANCHES (repo => l_repo);
    
  5. 您可以根據下列項目,在「雲端程式碼儲存區域」的分支中列出確認項目;

    • 儲存區域

    • 分公司

    • 分支的檔案路徑

    • SHA/commit_id

      注意: SHA 是由十六進位字元 (0-9 和 a-f) 組成的總和檢查 40 個字元字串。

    若要根據儲存區域列出確認項目:

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

    若要根據儲存區域、commit_id 以及分支的檔案路徑列出確認:

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

    若要根據儲存區域列出確認項目,以及分支的檔案路徑:

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

    若要根據儲存庫、分支的 branch_name 和檔案路徑列出確認:

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

    若要根據儲存區域和分支的 commit_id 列出確認:

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

請參閱 DBMS_CLOUD_REPO Repository Branch Management Operations 以瞭解詳細資訊。

將綱要物件匯出至雲端程式碼儲存區域分支

DBMS_CLOUD_REPO 管理常式可讓您將綱要中物件的描述資料匯出至「雲端程式碼儲存區域」分支。您可以根據物件名稱或物件類型來篩選清單。

若要匯出綱要描述資料,您必須先:

您可以使用 EXPORT_SCHEMA 程序將綱要中物件的描述資料匯出至「雲端程式碼儲存區域」分支:

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

此範例會將 USER1 綱要的描述資料匯出至 l_repo 儲存區域。匯出包括表格 EMPLOYEE_SALARYEMPLOYEE_ADDRESS 的描述資料,以及任何包含 OFFICE 的表格名稱。它也會匯出 EMPLOYEE_RECORD_SEQ 順序,並排除綱要中的檢視。

如需詳細資訊,請參閱 EXPORT_SCHEMA Procedure

搭配雲端程式碼儲存區域使用檔案作業

DBMS_CLOUD_REPO 檔案作業可讓您在「雲端程式碼儲存區域」中建立、取得、列出、更新或刪除檔案。

使用檔案作業之前,請先取得「雲端程式碼儲存區域」控制碼。如需詳細資訊,請參閱初始化雲端程式碼儲存區域。

您還需要先建立儲存庫,才能使用檔案。如需詳細資訊,請參閱「建立及管理雲端程式碼儲存區域」。

  1. 要取得檔案:
     SELECT DBMS_CLOUD_REPO.GET_FILE(repo => :repo, file_path => 'test1.sql')
    
  2. 要建立檔案:

     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. 更新檔案:

     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. 若要列出檔案,請執行下列動作:

     SELECT id, name, bytes, url FROM DBMS_CLOUD_REPO.LIST_FILES(repo => :repo);
    
  5. 刪除檔案:

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

請參閱 DBMS_CLOUD_REPO 檔案作業以瞭解詳細資訊。

搭配雲端程式碼儲存區域使用 SQL 安裝作業

DBMS_CLOUD_REPO SQL 安裝作業可讓您從「雲端程式碼儲存區域」儲存及下載 SQL 命令檔。

使用 SQL 安裝作業之前,請先取得「雲端程式碼儲存區域」處理。如需詳細資訊,請參閱初始化雲端程式碼儲存區域。

您還需要先建立儲存區域,再使用「SQL 安裝」作業。如需詳細資訊,請參閱「建立及管理雲端程式碼儲存區域」。

命令檔的用途為綱要安裝命令檔,而非一般 SQL 命令檔:

如果任何可使用 EXECUTE IMMEDIATE 執行的 SQL 陳述式未包含連結變數或定義,則其將可運作。

  1. 將 DDL 描述資料上傳至「雲端程式碼儲存區域」:

     VAR repo clob
     BEGIN
       DBMS_CLOUD_REPO.EXPORT_OBJECT(
             repo => :repo,
             object_type => 'PACKAGE',
             object_name => 'MYPACK',
             file_path   => 'mypack.sql'
       );
     END;
     /
    
  2. 若要從檔案安裝 SQL 陳述式:

     VAR repo clob
     BEGIN
       DBMS_CLOUD_REPO.INSTALL_FILE(
             repo => :repo,
             file_path     => 'test3.sql',
             stop_on_error => FALSE
       );
     END;
     /
    
  3. 從緩衝區安裝 SQL 敘述句:

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

請參閱 DBMS_CLOUD_REPO SQL 安裝作業以瞭解詳細資訊。

相關內容

關於 DBMS_CLOUD_REPO