Autonomous Database를 사용하여 클라우드 코드 저장소에 파일 관리 및 저장

Autonomous Database는 클라우드 코드(Git) 저장소에서 파일을 관리하고 저장하는 루틴을 제공합니다. 지원되는 클라우드 코드 저장소는 GitHub, AWS CodeCommit 및 Azure 저장소입니다.

관련 항목

Autonomous Database를 사용한 클라우드 코드 저장소 정보

DBMS_CLOUD_REPO 패키지는 Autonomous Database에서 Cloud Code Repository에 액세스하기 위한 단일 인터페이스를 제공합니다.

지원되는 클라우드 코드 저장소는 다음 기능을 제공합니다.

  • Git 버전 제어 시스템: Git는 모든 파일 세트의 변경 사항을 추적하기 위한 소프트웨어로, 일반적으로 소프트웨어 개발 중에 협력적으로 소스 코드를 개발하는 프로그래머 간의 작업을 조정하는 데 사용됩니다. 속도, 데이터 무결성 및 분산된 비선형 워크플로우에 대한 지원이 목표입니다.

  • Git Repository: Git Repository는 프로젝트의 가상 저장 영역입니다. 필요한 경우 액세스할 수 있는 코드 버전을 저장할 수 있습니다.

DBMS_CLOUD_REPO API는 저장소 핸들(REPO 객체)을 사용합니다. 저장소 핸들은 특정 클라우드 제공자의 클라우드 코드 저장소를 나타내는 불투명 JSON 객체입니다. REPO 객체를 다른 DBMS_CLOUD_REPO API로 전달할 수 있습니다. 이 불투명 객체는 DBMS_CLOUD_REPO 프로시저 및 함수가 다중 클라우드와 호환되도록 보장합니다. 한 클라우드 코드 저장소 제공자에서 다른 클라우드 코드 저장소로 이전할 때 코드를 변경할 필요가 없습니다.

Autonomous Database클라우드 코드 저장소를 사용하는 데 도움이 되는 다음을 제공합니다.

클라우드 코드 저장소 초기화

DBMS_CLOUD_REPO 초기화 루틴은 Cloud Code Repository를 초기화합니다. 클라우드 코드 저장소 핸들을 얻은 후 핸들을 사용하여 클라우드 코드 저장소에 액세스합니다.

클라우드 코드 저장소를 초기화하려면 다음을 수행합니다.

  1. 클라우드 코드 저장소에 액세스하기 위한 인증서를 생성합니다.

    자격 증명 만들기에 대한 자세한 내용은 CREATE_CREDENTIAL Procedure를 참조하십시오.

  2. 저장소, GitHub, Azure 저장소 또는 AWS CodeCommit에 따라 특정 저장소에 대한 매개변수를 사용하여 DBMS_CLOUD_REPO.INIT_REPO를 호출하여 저장소 핸들을 가져옵니다.

    다음 예에서는 지원되는 각 Cloud Code Repository에 대한 샘플을 제공합니다.

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

클라우드 코드 Repository 생성 및 관리

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

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

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

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

또한 SQL 설치 작업을 수행하기 전에 저장소를 만들어야 합니다. 자세한 내용은 클라우드 코드 저장소 생성 및 관리를 참조하십시오.

이 스크립트는 일반 SQL 스크립트가 아닌 스키마 설치 스크립트로 사용됩니다.

  • 스크립트는 SQL*Plus 클라이언트 특정 명령을 포함할 수 없습니다.
  • 스크립트는 바인드 변수 또는 매개변수화된 스크립트를 포함할 수 없습니다.
  • SQL 문은 새 행(/)에 슬래시로 종료되어야 합니다.
  • 스크립트에는 DDL, DML PLSQL 문이 포함될 수 있지만 직접 SELECT 문은 지원되지 않습니다. PL/SQL 블록 내에서 SELECT 사용이 지원됩니다.

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