자율운영 AI 데이터베이스를 사용하여 클라우드 코드 저장소에 파일 관리 및 저장

자율운영 AI 데이터베이스는 클라우드 코드(Git) 저장소에 파일을 관리하고 저장할 수 있는 루틴을 제공합니다. 지원되는 클라우드 코드 저장소는 GitHub, AWS CodeCommit 및 Azure Repositories입니다.

자율운영 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 Procedure를 참조하십시오.

  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 Initialization Operations을 참조하십시오.

클라우드 코드 저장소 생성 및 관리

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는 16진수 문자(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 저장소 분기 관리 작업을 참조하십시오.

스키마 객체를 클라우드 코드 저장소 브랜치로 익스포트

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 프로시저를 참조하십시오.

클라우드 코드 저장소에서 파일 작업 사용

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 File Operations을 참조하십시오.

클라우드 코드 저장소와 함께 SQL 설치 작업 사용

DBMS_CLOUD_REPO SQL 설치 작업을 통해 클라우드 코드 저장소에서 SQL 스크립트를 저장하고 다운로드할 수 있습니다.

SQL 설치 작업을 사용하기 전에 클라우드 코드 저장소 핸들을 가져옵니다. 자세한 내용은 클라우드 코드 저장소 초기화를 참조하십시오.

또한 SQL Install 작업으로 작업하기 전에 Repository를 생성해야 합니다. 자세한 내용은 클라우드 코드 저장소 생성 및 관리를 참조하십시오.

스크립트는 일반 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 Install Operations을 참조하십시오.

관련 콘텐츠

DBMS_CLOUD_REPO 정보