機械翻訳について

Autonomous Databaseを使用したクラウド・コード・リポジトリでのファイルの管理および格納

Autonomous Databaseには、クラウド・コード(Git)リポジトリでファイルを管理および格納するためのルーチンが用意されています。 サポートされている「クラウド・コード・リポジトリ」は次のとおりです: GitHub、AWS CodeCommitおよびAzureリポジトリ。

Autonomous Databaseを使用したクラウド・コード・リポジトリについて

DBMS_CLOUD_REPOパッケージは、Autonomous Databaseから「クラウド・コード・リポジトリ」にアクセスするための単一のインタフェースを提供します。

サポートされているクラウド・コード・リポジトリには、次の機能があります:

  • Gitバージョン管理システム: Gitは、任意のファイル・セットの変更をトラッキングするためのソフトウェアで、通常は、ソフトウェア開発時に共同でソース・コードを開発するプログラマ間の作業の調整に使用されます。 その目標には、速度、データの整合性、および分散型非線形ワークフローのサポートが含まれます。

  • Gitリポジトリ: Gitリポジトリはプロジェクトの仮想ストレージです。 必要なときにアクセスできるコードのバージョンを保存できます。

DBMS_CLOUD_REPO APIでは、リポジトリ・ハンドル(REPOオブジェクト)が使用されます。 リポジトリ・ハンドルは、特定のクラウド・プロバイダの「クラウド・コード・リポジトリ」を表す不透明なJSONオブジェクトです。 REPOオブジェクトは、様々なDBMS_CLOUD_REPO APIに渡すことができます。 この不透明オブジェクトは、DBMS_CLOUD_REPOプロシージャおよび関数がマルチ・クラウド互換であることを保証します。あるクラウド・コード・リポジトリ・プロバイダから別の「クラウド・コード・リポジトリ」に移行するときに、コードを変更する必要はありません。

Autonomous Databaseには、クラウド・コード・リポジトリの操作に役立つ次の機能があります:

クラウド・コード・リポジトリの初期化

DBMS_CLOUD_REPO初期化ルーチンは、「クラウド・コード・リポジトリ」を初期化します。 「クラウド・コード・リポジトリ」ハンドルを取得したら、ハンドルを使用して「クラウド・コード・リポジトリ」にアクセスします。

クラウド・コード・リポジトリを初期化するには:

  1. 「クラウド・コード・リポジトリ」にアクセスするための資格証明を作成します。

    資格証明の作成の詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。

  2. リポジトリ、GitHub、Azureリポジトリまたは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は、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_SALARYおよびEMPLOYEE_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ファイル操作」を参照してください。

クラウド・コード・リポジトリでの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インストール操作」を参照してください。