52 DBMS_CLOUD_REPO

DBMS_CLOUD_REPOパッケージにより、Oracle Databaseからクラウド・ホスト型コード・リポジトリを使用および管理できます。サポートされているクラウド・コード・リポジトリとしては、GitHub、AWS CodeCommitおよびAzure Reposがあります。

52.1 DBMS_CLOUD_REPOの概要

DBMS_CLOUD_REPOパッケージを使用すると、クラウド・コード(Git)リポジトリ(GitHub、AWS CodeCommit、Azure Reposなど)にあるファイルに簡単にアクセスできます。

このパッケージは、マルチクラウド・コード・リポジトリにアクセスするための単一のインタフェースであり、これを使用すると、SQLファイルをGitリポジトリにアップロードすることや、クラウド・コード・リポジトリからSQLスクリプトを直接インストールすることができます。また、このパッケージを使用すると、クラウド・コード・リポジトリを使用してSQLスクリプトのコード・バージョンを管理でき、また、Gitリポジトリからのアプリケーション・コードのインストールとパッチ適用ができます。

概要

  • Gitバージョン・コントロール・システム: Gitは、任意の一連のファイルにおける変更点を追跡するためのソフトウェアであり、通常は、ソフトウェア開発の間に、ソース・コードを共同で開発するプログラマ間で作業を調整するために使用します。その目的としては、スピード、データの整合性、分散型の非線形ワークフローのサポートなどがあります。

  • Gitリポジトリ: Gitリポジトリは、プロジェクトの仮想ストレージです。これを使用すると、コードの各バージョンを保存できます(必要に応じてそれにアクセスできます)。

アーキテクチャ

DBMS_CLOUD_REPOパッケージには、次の4つの機能領域があります:
  • 汎用クラウド・コード・リポジトリ・ハンドルを使用したリポジトリ初期化

    • GitHubコード・リポジトリの初期化

    • AWS CodeCommitコード・リポジトリの初期化

    • Azure Reposコード・リポジトリの初期化

  • リポジトリ管理操作

    • リポジトリの作成

    • リポジトリの更新

    • リポジトリのリスト

    • リポジトリの削除

  • リポジトリ・ファイル管理操作

    • Oracle Databaseからコード・リポジトリへのファイルのアップロード。

    • コード・リポジトリからOracle Databaseへのファイルのダウンロード。

    • コード・リポジトリにあるファイルの削除。

    • コード・リポジトリにあるファイルのリスト。

  • SQLインストール操作

    • リポジトリへのデータベース・オブジェクト・メタデータDDLのエクスポート。
    • Oracle Databaseでの、コード・リポジトリ内のファイルからのSQL文のインストール。

    • バッファからのSQL文のインストール。

52.2 DBMS_CLOUD_REPOのデータ構造

DBMS_CLOUD_REPOパッケージは、レコード・タイプおよび汎用JSONオブジェクト・タイプrepoを定義します。

REPO JSONオブジェクト

DBMS_CLOUD_REPOREPOは、特定のクラウド・プロバイダのクラウド・コード・リポジトリを表す不透明なJSONオブジェクトです。REPOオブジェクトは、様々なDBMS_CLOUD_REPO APIに渡すことができます。この不透明オブジェクトにより、DBMS_CLOUD_REPOのプロシージャおよびファンクションが必ずマルチクラウド互換になります。あるクラウド・コード・リポジトリ・プロバイダから別のクラウド・コード・リポジトリに移行するときに、コードを変更する必要はありません。

52.3 DBMS_CLOUD_REPOのサブプログラム・グループ

DBMS_CLOUD_REPOパッケージのサブプログラムは、4つのカテゴリ(初期化操作、リポジトリ管理操作、ファイル操作およびSQLインストール操作)に分類できます。

52.3.1 DBMS_CLOUD_REPOの初期化操作

DBMS_CLOUD_REPOパッケージ内の初期化操作用のサブプログラムをリストします。

サブプログラム 説明

INIT_AWS_REPOファンクション

このファンクションは、AWSリポジトリ・ハンドルを初期化し、不透明なタイプを返します。

INIT_AZURE_REPOファンクション

このファンクションは、Azureリポジトリ・ハンドルを初期化し、不透明なタイプを返します。

INIT_GITHUB_REPOファンクション

このファンクションは、GitHubリポジトリ・ハンドルを初期化し、不透明なタイプを返します。

INIT_REPOファンクション

このファンクションは、クラウド・コード・リポジトリ・ハンドルを初期化し、不透明なJSONオブジェクトを返します。

52.3.2 DBMS_CLOUD_REPOのリポジトリ管理操作

DBMS_CLOUD_REPOパッケージ内のリポジトリ管理操作用のサブプログラムを示します。

サブプログラム 説明

CREATE_REPOSITORYプロシージャ

このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリを作成します。
DELETE_REPOSITORYプロシージャ このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリを削除します。

LIST_REPOSITORIESファンクション

このファンクションは、repoハンドル引数によって特定されたすべてのクラウド・コード・リポジトリをリストします。

UPDATE_REPOSITORYプロシージャ

このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリを更新します。このプロシージャは、クラウド・コード・リポジトリでサポートされているとおりに、名前、説明またはプライベート可視性ステータスの更新をサポートしています。

52.3.3 DBMS_CLOUD_REPOのリポジトリ・ブランチ管理操作

DBMS_CLOUD_REPOパッケージ内のリポジトリ・ブランチ管理操作用のサブプログラムをリストします。

サブプログラム 説明

CREATE_BRANCHプロシージャ

このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリ内のブランチを作成します。

DELETE_BRANCHプロシージャ

このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリ内のブランチを削除します。

LIST_BRANCHESファンクション

このファンクションは、repoハンドル引数によって特定されたすべてのクラウド・コード・リポジトリ・ブランチをリストします。

LIST_COMMITSファンクション

このファンクションは、repoハンドル引数によって特定されたクラウド・コード・リポジトリ・ブランチ内のコミットをすべてリストします。

MERGE_BRANCHプロシージャ

このプロシージャは、クラウド・コード・リポジトリのブランチを、repoハンドル引数によって特定されたクラウド・コード・リポジトリ内の別の指定されたブランチにマージします。

52.3.4 DBMS_CLOUD_REPOのファイル操作

DBMS_CLOUD_REPOパッケージ内のファイル操作用のサブプログラムをリストします。

サブプログラム 説明

DELETE_FILEプロシージャ

このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリからファイルを削除します。

GET_FILEプロシージャおよびファンクション

このファンクションは、クラウド・コード・リポジトリからファイルのコンテンツをダウンロードします。このプロシージャを使用すると、クラウド・コード・リポジトリからファイルのコンテンツをダウンロードし、そのファイルをディレクトリ内に保存できます。

LIST_FILESファンクション

このファンクションは、クラウド・コード・リポジトリからファイルをダウンロードします。オプションで、ファイル・コンテンツに、特定のブランチ名、タグ名またはコミット名からアクセスできます。デフォルトでは、これらのファイルに、デフォルトのリポジトリ・ブランチからアクセスします。

PUT_FILEプロシージャ

このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリにファイルをアップロードします。このプロシージャは、ディレクトリ・オブジェクトからのファイルのアップロード、またはCLOBからリポジトリ・ファイルへのコンテンツのアップロードをサポートするようにオーバーロードされています。

52.3.5 DBMS_CLOUD_REPOのSQLインストール操作

DBMS_CLOUD_REPOパッケージ内のSQLインストール操作用のサブプログラムをリストします。

サブプログラム 説明

EXPORT_OBJECTプロシージャ

このプロシージャは、データベース・オブジェクトのDDLメタデータを、repoハンドル引数によって特定されたクラウド・コード・リポジトリにアップロードします。

EXPORT_SCHEMAプロシージャ

このプロシージャは、スキーマ内のすべてのオブジェクトのメタデータを、repoハンドル引数によって特定されたクラウド・コード・リポジトリ・ブランチにエクスポートします。

INSTALL_FILEプロシージャ

このプロシージャは、repo ハンドル引数によって特定されたクラウド・コード・リポジトリ内のファイルからSQL文をインストールします。

INSTALL_SQLプロシージャ

このプロシージャは、入力として指定されたバッファからSQL文をインストールします。

52.4 DBMS_CLOUD_REPOサブプログラムの要約

この項では、Oracle Databaseに付随する、DBMS_CLOUD_REPOのサブプログラムについて説明します。

52.4.1 CREATE_BRANCHプロシージャ

このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリ内のブランチを作成します。

構文

PROCEDURE DBMS_CLOUD_REPO.CREATE_BRANCH(
    repo               IN   CLOB,
    branch_name        IN   VARCHAR2,
    parent_branch_name IN   VARCHAR2 DEFAULT NULL,
    parent_commit_id   IN   VARCHAR2 DEFAULT NULL
 );

パラメータ

パラメータ 説明
repo

リポジトリ・ハンドルを指定します。

このパラメータは必須であり、すべてのクラウド・プロバイダでサポートされています。

branch_name

リポジトリ・ブランチ名を指定します。

このパラメータは必須であり、すべてのクラウド・プロバイダでサポートされています。

parent_branch_name

指定された親ブランチのHEADコミットを使用して、新しいブランチを作成します。

このパラメータは、すべてのクラウド・プロバイダでサポートされています。

parent_branch_nameの値を指定しなかった場合、parent_branch_namemainに設定されます。

parent_commit_id

指定されたリポジトリ・コミットを使用して、新しいブランチを作成します。

このパラメータは、すべてのクラウド・プロバイダでサポートされています。

parent_commit_idの値を指定しなかった場合、parent_commit_idはNULL値に設定されます。

ノート:

クラウド・コード・リポジトリにブランチを作成するには、親ブランチまたは親コミットIDを指定する必要があります。
BEGIN
  DBMS_CLOUD_REPO.CREATE_BRANCH (
    repo                 => l_repo,
    branch_name          => 'test_branch',
    parent_branch_name   => 'main'
    );
END;
/

使用上のノート

DBMS_CLOUD_REPO.CREATE_BRANCHプロシージャを実行するには、ADMINユーザーとしてログインするか、DBMS_CLOUD_REPOに対するEXECUTE権限がある必要があります。

52.4.2 CREATE_REPOSITORYプロシージャ

このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリを作成します。

構文

PROCEDURE DBMS_CLOUD_REPO.CREATE_REPOSITORY(
      repo                 IN   CLOB,
      description          IN   CLOB     DEFAULT NULL,
      private              IN   BOOLEAN  DEFAULT TRUE
);

パラメータ

パラメータ 説明
repo リポジトリ・ハンドルを指定します。

このパラメータは、すべてのクラウド・プロバイダでサポートされています。

description リポジトリについての短いテキスト説明。

このパラメータは、GITHUBおよびAWSクラウド・プロバイダの場合にサポートされています。

private

リポジトリはプライベートであり、有効な資格証明がある場合のみアクセスできます

このパラメータは、GITHUBクラウド・プロバイダの場合のみサポートされています。

BEGIN
  DBMS_CLOUD_REPO.CREATE_REPOSITORY(
    repo        => l_repo,
    description => 'My test repo',
    private => TRUE
    );
END;
/

52.4.3 DELETE_BRANCHプロシージャ

このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリ内のブランチを削除します。

構文

PROCEDURE DBMS_CLOUD_REPO.DELETE_BRANCH (
      repo              IN  CLOB, 
      branch_name       IN  VARCHAR2  DEFAULT NULL
 );

パラメータ

パラメータ 説明
repo リポジトリ・ハンドルを指定します。

このパラメータは必須であり、すべてのクラウド・プロバイダでサポートされています。

branch_name 特定のリポジトリからブランチを削除します。

このパラメータは必須であり、すべてのクラウド・プロバイダでサポートされています。

BEGIN
  DBMS_CLOUD_REPO.DELETE_BRANCH (
      repo        => l_repo,
      branch_name => 'test_branch'
  );
END;
/

使用上のノート

DBMS_CLOUD_REPO.DELETE_BRANCHプロシージャを実行するには、ADMINユーザーとしてログインするか、DBMS_CLOUD_REPOに対するEXECUTE権限がある必要があります。

52.4.4 DELETE_FILEプロシージャ

このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリからファイルを削除します。

構文

PROCEDURE DBMS_CLOUD_REPO.DELETE_FILE(
      repo              IN  CLOB,
      file_path         IN  VARCHAR2,
      branch_name       IN  VARCHAR2  DEFAULT NULL,
      commit_details    IN  CLOB      DEFAULT NULL
);

パラメータ

パラメータ 説明
repo リポジトリ・ハンドルを指定します。
file_path リポジトリ内のファイルを削除するためのファイル・パス。
branch_name 特定のブランチからファイルを削除します。
commit_details

JSONドキュメントとしてのコミット詳細

{"message": "Commit message", "author": {"name": "Committing user name", "email": "Email of committing user" } }

BEGIN
  DBMS_CLOUD_REPO.DELETE_FILE(
      repo        => l_repo,
      file_path   => 'scripts/test3.sql',
      branch_name => 'test_branch'
  );
END;
/

52.4.5 DELETE_REPOSITORYプロシージャ

このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリを削除します。

構文

PROCEDURE DBMS_CLOUD_REPO.DELETE_REPOSITORY(
      repo           IN   CLOB
);

パラメータ

パラメータ 説明
repo リポジトリ・ハンドルを指定します。

BEGIN
  DBMS_CLOUD_REPO.DELETE_REPOSITORY(
       repo => l_repo
  );
END;
/

52.4.6 EXPORT_OBJECTプロシージャ

このプロシージャは、データベース・オブジェクトのDDLメタデータを、repoハンドル引数によって特定されたクラウド・コード・リポジトリにアップロードします。このプロシージャは、データベース・オブジェクトのメタデータ定義を単一のステップでアップロードするための簡単な方法です。

構文

PROCEDURE DBMS_CLOUD_REPO.EXPORT_OBJECT(
      repo              IN  CLOB,
      file_path         IN  VARCHAR2,
      object_type       IN  VARCHAR2,
      object_name       IN  VARCHAR2 DEFAULT NULL,
      object_schema     IN  VARCHAR2 DEFAULT NULL,
      branch_name       IN  VARCHAR2 DEFAULT NULL,
      commit_details    IN  CLOB     DEFAULT NULL,
      append            IN  BOOLEAN  DEFAULT FALSE
);

パラメータ

パラメータ 説明
repo リポジトリ・ハンドルを指定します。
file_path リポジトリにオブジェクト・メタデータをアップロードするためのファイル・パス。
object_type

DBMS_METADATAでサポートされているオブジェクト・タイプ。

object_name メタデータを取得するデータベース・オブジェクトの名前。
object_schema データベース・オブジェクトの所有スキーマ。
branch_name ファイルを特定のブランチに配置します。
commit_details

JSONドキュメントとしてのコミット詳細:{"message": "Commit message", "author": {"name": "Committing user name", "email": "Email of committing user" } }

append 既存のファイルにメタデータDDLを追加します。

使用上のノート

オブジェクトDDLに対するカスタマイズした制御の場合は、DBMS_METADATA.GET_DDLDBMS_CLOUD_REPO.PUT_FILEとともに使用します。オブジェクトのメタデータ定義を取得するには、現在のユーザーに、そのオブジェクト・メタデータを取得するための権限がある必要があります。パッケージのセキュリティ要件については、「DBMS_METADATA」を参照してください。

BEGIN
  DBMS_CLOUD_REPO.EXPORT_OBJECT(
     repo        => l_repo,
     object_type => 'PACKAGE',
     object_name => 'MYPACK',
     file_path   => 'mypack.sql'
  );
END;
/

52.4.7 EXPORT_SCHEMAプロシージャ

このプロシージャは、スキーマ内のすべてのオブジェクトのメタデータを、repoハンドル引数によって特定されたクラウド・コード・リポジトリ・ブランチにエクスポートします。

構文

PROCEDURE DBMS_CLOUD_REPO.EXPORT_SCHEMA(
     repo            IN CLOB,
     file_path       IN VARCHAR2,
     schema_name     IN VARCHAR2,
     filter_list     IN CLOB         DEFAULT NULL,
     branch_name     IN VARCHAR2     DEFAULT NULL,
     commit_details  IN CLOB         DEFAULT NULL
);

パラメータ

パラメータ 説明
repo

リポジトリ・ハンドルを指定します。

このパラメータは必須であり、すべてのクラウド・プロバイダでサポートされています。

file_path

リポジトリにアップロードするスキーマ・ファイルの名前を指定します。

このパラメータは必須であり、すべてのクラウド・プロバイダでサポートされています。

schema_name

DDLスクリプトをクラウド・コード・リポジトリのブランチにアップロードするスキーマの名前を指定します。

このパラメータは必須であり、すべてのクラウド・プロバイダでサポートされています。

filter_list

フィルタ条件(メタデータをエクスポートする必要があるオブジェクトを含めるか除外する)を定義するJSON配列のCLOBを指定します。

このパラメータは、すべてのクラウド・プロバイダでサポートされています。

filter_listのJSONパラメータは次のとおりです:
  • match_type: オブジェクト・タイプまたはオブジェクト名に適用されるフィルタのタイプを指定します。

    有効なmatch_type値は次のとおりです:
    • in/not_in

    • like/not_like

    • equal/not_equal

  • type: フィルタ基準にするオブジェクト・タイプを指定します。

  • name: フィルタ基準にするオブジェクト名を指定します。

branch_name

リポジトリ・ブランチ名を指定します。

このパラメータは、すべてのクラウド・プロバイダでサポートされています。

branch_nameの値を指定しなかった場合、branch_nameはデフォルトのリポジトリ・ブランチに設定されます。

commit_details

JSONドキュメントとしてのコミット詳細

{"message": "Commit message", "author": {"name": "Committing user name", "email": "Email of committing user" } }

このパラメータは、すべてのクラウド・プロバイダでサポートされています。

commit_detailsの値を指定しなかった場合、commit_detailsは、現在のデータベース・セッション・ユーザー、およびそのコミットを実行しているデータベースの名前についての情報を含む、デフォルトのコミット・メッセージに設定されます。

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

使用上のノート

DBMS_CLOUD_REPO.EXPORT_SCHEMAプロシージャを実行するには、ADMINユーザーとしてログインするか、DBMS_CLOUD_REPOに対するEXECUTE権限がある必要があります。

52.4.8 GET_FILEプロシージャおよびファンクション

このファンクションは、クラウド・コード・リポジトリからファイルのコンテンツをダウンロードします。このプロシージャを使用すると、クラウド・コード・リポジトリからファイルのコンテンツをダウンロードし、そのファイルをディレクトリ内に保存できます。

構文

FUNCTION DBMS_CLOUD_REPO.GET_FILE(
      repo              IN  CLOB,
      file_path         IN  VARCHAR2,
      branch_name       IN  VARCHAR2  DEFAULT NULL,
      tag_name          IN  VARCHAR2  DEFAULT NULL,
      commit_name       IN  VARCHAR2  DEFAULT NULL
) RETURN CLOB;
 
PROCEDURE DBMS_CLOUD_REPO.GET_FILE(
      repo              IN  CLOB,
      file_path         IN  VARCHAR2,
      directory_name    IN  VARCHAR2,
      target_file_name  IN  VARCHAR2  DEFAULT NULL,
      branch_name       IN  VARCHAR2  DEFAULT NULL,
      tag_name          IN  VARCHAR2  DEFAULT NULL,
      commit_name       IN  VARCHAR2  DEFAULT NULL
);

パラメータ

パラメータ 説明
repo リポジトリ・ハンドルを指定します。
file_path リポジトリ内のファイル・パス。
directory_name ファイル・コンテンツを保存するディレクトリ・オブジェクトの名前。
target_file_name ディレクトリ内の、コンテンツを保存するターゲット・ファイルの名前。
branch_name 特定のブランチからファイルを取得します。
tag_name 特定のタグからファイルを取得します。
commit_name 特定のコミットからファイルを取得します。

BEGIN
  DBMS_CLOUD_REPO.GET_FILE(
     repo             =>  l_repo,
     file_path        => 'test3.sql',
     directory_name   => 'DATA_PUMP_DIR',
     target_file_name => 'test2.sql'
  );
END;
/

52.4.9 INIT_AWS_REPOファンクション

このファンクションは、AWSリポジトリ・ハンドルを初期化し、不透明なタイプを返します。

構文

FUNCTION DBMS_CLOUD_REPO.INIT_AWS_REPO(
      credential_name IN  VARCHAR2,
      repo_name       IN  VARCHAR2,
      region          IN  VARCHAR2
)  RETURN repo;

パラメータ

パラメータ 説明
credential_name

AWS CodeCommitのaccesskey/secretkeyを示す資格証明オブジェクト。

repo_name リポジトリ名を指定します。
region CodeCommitリポジトリのAWSリージョンを指定します。

BEGIN
  :repo := DBMS_CLOUD_REPO.INIT_AWS_REPO(
                 credential_name => 'AWS_CRED',
                 repo_name       => 'my_repo',
                 region          => 'us-east-1'
           );
END;
/  

52.4.10 INIT_AZURE_REPOファンクション

このファンクションは、Azureリポジトリ・ハンドルを初期化し、不透明なタイプを返します。このファンクションは、Azureクラウド・プロバイダの場合のみサポートされています。

構文

FUNCTION DBMS_CLOUD_REPO.INIT_AZURE_REPO(
      credential_name IN  VARCHAR2,
      repo_name       IN  VARCHAR2,
      organization    IN  VARCHAR2,
      project         IN  VARCHAR2
)  RETURN repo;

パラメータ

パラメータ 説明
credential_name

ユーザー名と個人アクセス・トークン(PAT)を含む、Azureを示す資格証明オブジェクト。

repo_name リポジトリ名を指定します。
organization Azure DevOps組織を指定します。
project Azureチーム・プロジェクト名。

BEGIN
  :repo := DBMS_CLOUD_REPO.INIT_AZURE_REPO(
                 credential_name => 'AZURE_CRED',
                 repo_name       => 'my_repo',
                 organization    => 'myorg',
                 project         => 'myproj',
           );
END;
/

52.4.11 INIT_GITHUB_REPOファンクション

このファンクションは、GitHubリポジトリ・ハンドルを初期化し、不透明なタイプを返します。

構文

FUNCTION DBMS_CLOUD_REPO.INIT_GITHUB_REPO(
      credential_name IN  VARCHAR2  DEFAULT NULL,
      repo_name       IN  VARCHAR2,
      owner           IN  VARCHAR2) 
RETURN repo;

パラメータ

パラメータ 説明
credential_name

GitHubを示す資格証明オブジェクト。

ユーザーの電子メールおよび個人アクセス・トークン(PAT)。

repo_name リポジトリ名を指定します。
owner リポジトリ所有者を指定します。

BEGIN
  :repo := DBMS_CLOUD_REPO.INIT_GITHUB_REPO(
                 credential_name => 'GITHUB_CRED',
                 repo_name       => 'my_repo',
                 owner           => 'foo'
           );
END;
/  

52.4.12 INIT_REPOファンクション

このファンクションは、クラウド・コード・リポジトリ・ハンドルを初期化し、不透明なJSONオブジェクトを返します。このファンクションは、JSONドキュメントを受け入れるための汎用インタフェースです。これを使用すればコードの変更は必要ありません。コード・リポジトリをあるクラウド・コード・リポジトリから別のクラウド・コード・リポジトリに移動するときに必要なのは、JSONドキュメントの変更のみです。

構文

FUNCTION DBMS_CLOUD_REPO.INIT_REPO(
     params      IN   CLOB)
RETURN CLOB;

パラメータ

JSONパラメータ 説明
provider

次のクラウド・コード・リポジトリ・プロバイダ:

DBMS_CLOUD_REPO.GITHUB_REPO ('GITHUB')

DBMS_CLOUD_REPO.AWS_REPO ('AWS')

DBMS_CLOUD_REPO.AZURE_REPO ('AZURE')
repo_name リポジトリ名を指定します。DBMS_CLOUD_REPO.PARAM_REPO_NAME
owner GitHubリポジトリ所有者。DBMS_CLOUD_REPO.PARAM_OWNER

このパラメータは、GitHubクラウド・プロバイダの場合のみ適用されます。

region AWSリポジトリ・リージョンDBMS_CLOUD_REPO_PARAM_REGION

このパラメータは、AWSクラウド・プロバイダの場合のみ適用されます。

organization Azure組織DBMS_CLOUD_REPO_PARAM_ORGANIZATION

このパラメータは、Azureクラウド・プロバイダの場合のみ適用されます。

project Azureチーム・プロジェクトDBMS_CLOUD_REPO_PARAM_PROJECT

このパラメータは、Azureクラウド・プロバイダの場合のみ適用されます

BEGIN
  :repo := DBMS_CLOUD_REPO.INIT_REPO(
          params => JSON_OBJECT('credential_name' value 'mycred',
                        'repo_name'       value 'myrepo',
                        'repo_owner'      value 'foo')
       );
END;
/

52.4.13 INSTALL_FILEプロシージャ

このプロシージャは、repo ハンドル引数によって特定されたクラウド・コード・リポジトリ内のファイルからSQL文をインストールします。

構文

PROCEDURE DBMS_CLOUD_REPO.INSTALL_FILE(
      repo              IN  CLOB,
      file_path         IN  VARCHAR2,
      branch_name       IN  VARCHAR2  DEFAULT NULL,
      tag_name          IN  VARCHAR2  DEFAULT NULL,
      commit_name       IN  VARCHAR2  DEFAULT NULL,
      stop_on_error     IN  BOOLEAN   DEFAULT TRUE
);

パラメータ

パラメータ 説明
repo リポジトリ・ハンドルを指定します。
file_path リポジトリ内のファイル・パス。
branch_name 特定のブランチからのファイルをインストールするブランチ。
tag_name 特定のタグからのファイルをインストールするタグ。
commit_name 特定のコミットからのファイルをインストールするコミットID。
stop_on_error 最初のエラーでSQL文の実行を停止します。

使用上のノート

  • 次を使用して、クラウド・コード・リポジトリのファイルから、ネストされたSQLを含むSQL文をインストールできます:

    • @: リポジトリのROOTを基準とした相対パスを使用してSQLファイルを含めます。

    • @@: 現在のファイルを基準とした相対パスを使用してSQLファイルを含めます。

  • これらのスクリプトで意図されているのは、汎用SQLスクリプトではなくスキーマ・インストール・スクリプトです:

    • スクリプトにSQL*Plusのクライアント固有コマンドを含めることはできません。
    • スクリプトにバインド変数またはパラメータ化されたスクリプトを含めることはできません。
    • SQL文は、改行時にスラッシュ(/)で終了する必要があります。
    • スクリプトにはDDL、DML PLSQL文を含めることができます。ただし、直接のSELECT文はサポートされていません。PL/SQLブロック内でのSELECTの使用がサポートされています。

    EXECUTE IMMEDIATEを使用して実行できるSQL文は、それにバインド変数や定義が含まれていない場合に機能します。

BEGIN
     DBMS_CLOUD_REPO.INSTALL_FILE(
         repo          => l_repo,
         file_path     => 'test3.sql',
         stop_on_error => FALSE
     );
END;
/

52.4.14 INSTALL_SQLプロシージャ

このプロシージャは、入力として指定されたバッファからSQL文をインストールします。

構文

PROCEDURE DBMS_CLOUD_REPO.INSTALL_SQL(
      content           IN  CLOB,
      stop_on_error     IN  BOOLEAN  DEFAULT TRUE
);

パラメータ

パラメータ 説明
content 実行するSQL文を含むCLOB。
stop_on_error 最初のエラーでSQL文の実行を停止します。

使用上のノート

  • これらのスクリプトで意図されているのは、汎用SQLスクリプトではなくスキーマ・インストール・スクリプトです:

    • スクリプトにSQL*Plusのクライアント固有コマンドを含めることはできません。
    • スクリプトにバインド変数またはパラメータ化されたスクリプトを含めることはできません。
    • SQL文は、改行時にスラッシュ(/)で終了する必要があります。
    • スクリプトにはDDL、DML PLSQL文を含めることができます。ただし、直接のSELECT文はサポートされていません。PL/SQLブロック内でのSELECTの使用がサポートされています。

    EXECUTE IMMEDIATEを使用して実行できるSQL文は、それにバインド変数や定義が含まれていない場合に機能します。

BEGIN
  DBMS_CLOUD_REPO.INSTALL_SQL(
      content   => 'create table t1 (x varchar2(30))' || CHR(10) || '/',
      stop_on_error => FALSE
  );
END;
/

52.4.15 LIST_BRANCHESファンクション

このファンクションは、repoハンドル引数によって特定されたクラウド・コード・リポジトリ・ブランチ内のブランチをリストします。

構文

FUNCTION DBMS_CLOUD_REPO.LIST_BRANCHES(
    repo           IN   CLOB
) RETURN list_branch_ret_tab PIPELINED PARALLEL_ENABLE;

パラメータ

パラメータ 説明
repo リポジトリ・ハンドルを指定します。

このパラメータは必須であり、すべてのクラウド・プロバイダでサポートされています。

SELECT * FROM DBMS_CLOUD_REPO.LIST_BRANCHES (repo => l_repo);

使用上のノート

  • これは、戻り値のタイプがlist_branch_ret_tabである、パイプライン・テーブル・ファンクションです

  • DBMS_CLOUD_REPO.LIST_BRANCHESは、クラウド・コード・リポジトリのブランチの名前を示す、列nameを戻します。

52.4.16 LIST_COMMITSファンクション

このファンクションは、repoハンドル引数によって特定されたクラウド・コード・リポジトリ・ブランチ内のコミットをリストします。

構文

FUNCTION DBMS_CLOUD_REPO.LIST_COMMITS(
      repo              IN  CLOB,
      branch_name       IN  VARCHAR2  DEFAULT NULL,
      file_path         IN  VARCHAR2 DEFAULT NULL,
      commit_id         IN  VARCHAR2  DEFAULT NULL
) RETURN list_commit_ret_tab PIPELINED PARALLEL_ENABLE;

パラメータ

パラメータ 説明
repo リポジトリ・ハンドルを指定します。

このパラメータは必須であり、すべてのクラウド・プロバイダでサポートされています。

branch_name 特定のブランチからのコミットをリストします。

このパラメータは、すべてのクラウド・プロバイダでサポートされています。

branch_nameの値を指定しなかった場合、branch_namemainに設定されます。

file_path リポジトリ内の指定されたサブフォルダ・パスの下にあるファイルをリストします。

このパラメータは、GitおよびAzureクラウド・プロバイダの場合のみサポートされています。

file_pathの値を指定しなかった場合、file_pathはNULL値に設定されます。

commit_id 指定されたsha/idから始まるファイルをリストします

このパラメータは、すべてのクラウド・プロバイダでサポートされています。

commit_idの値を指定しなかった場合、commit_idはNULL値に設定されます。

SELECT name FROM DBMS_CLOUD_REPO.LIST_COMMITS(repo => l_repo);

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

使用上のノート

  • これは、戻り値のタイプがlist_commit_ret_tabである、パイプライン・テーブル・ファンクションです

  • DBMS_CLOUD_REPO.LIST_COMMITSは、列commit_idを戻します。

52.4.17 LIST_FILESファンクション

このファンクションは、クラウド・コード・リポジトリからファイルをダウンロードします。オプションで、ファイル・コンテンツに、特定のブランチ名、タグ名またはコミット名からアクセスできます。デフォルトでは、これらのファイルに、デフォルトのリポジトリ・ブランチからアクセスします。結果には、ファイル名と、それらのファイルに関する追加メタデータが含まれます。

構文

FUNCTION DBMS_CLOUD_REPO.LIST_FILES(
      repo              IN  CLOB,
      path              IN  VARCHAR2  DEFAULT NULL,
      branch_name       IN  VARCHAR2  DEFAULT NULL,
      tag_name          IN  VARCHAR2  DEFAULT NULL,
      commit_id         IN  VARCHAR2  DEFAULT NULL
) RETURN list_file_ret_tab PIPELINED PARALLEL_ENABLE;

パラメータ

パラメータ 説明
repo リポジトリ・ハンドルを指定します。
path リポジトリ内の指定されたサブフォルダ・パスの下にあるファイルをリストします。
branch_name 特定のブランチからファイルをリストします。
tag_name 特定のタグからファイルをリストします。
commit_name 特定のコミットからファイルをリストします。

使用上のノート

  • これは、戻り値のタイプがlist_file_ret_tabである、パイプライン・テーブル・ファンクションです

  • DBMS_CLOUD_REPO.LIST_FILESは、列idnameurlおよびbytesを戻します。

SELECT name FROM DBMS_CLOUD_REPO.LIST_FILES(repo => l_repo);

NAME
-------------------------
test3.sql

52.4.18 LIST_REPOSITORIESファンクション

このファンクションは、repoハンドル引数によって特定されたすべてのクラウド・コード・リポジトリをリストします。repoハンドルにリポジトリ名が指定されている場合、このファンクションは、リスト内容をその指定されたリポジトリ名に限定するのではなく、そのユーザーがアクセスできるすべてのリポジトリをリストします。

構文

FUNCTION DBMS_CLOUD_REPO.LIST_REPOSITORIES(
      repo                 IN   CLOB
) RETURN list_repo_ret_tab PIPELINED PARALLEL_ENABLE;

パラメータ

パラメータ 説明
repo

リポジトリ・ハンドルを指定します。このパラメータは、すべてのクラウド・プロバイダでサポートされています。

使用上のノート

  • これは、戻り値のタイプがlist_repo_ret_tabである、パイプライン・テーブル・ファンクションです

  • DBMS_CLOUD_REPO.LIST_REPOSITORIESは、列idnameownerdescriptionprivateurlbytescreatedおよびlast_modifiedを戻します。

SELECT name description FROM DBMS_CLOUD_REPO.LIST_REPOSITORIES(:repo);

NAME                  DESCRIPTION
--------------------- ---------------
TestRepo1             My test repo

52.4.19 MERGE_BRANCHプロシージャ

このプロシージャは、リポジトリ・ブランチを、repoハンドル引数によって特定されたクラウド・コード・リポジトリ内の別の指定されたブランチにマージします。MERGE_BRANCHプロシージャは、現在、Azureではサポートされていません。

構文

PROCEDURE DBMS_CLOUD_REPO.MERGE_BRANCH (
    repo               IN   CLOB,
    branch_name        IN   VARCHAR2,
    parent_branch_name IN   VARCHAR2 DEFAULT NULL,
    commit_details     IN   CLOB      DEFAULT NULL
 );

パラメータ

パラメータ 説明
repo

リポジトリ・ハンドルを指定します。

このパラメータは必須であり、GITHUBおよびAWSクラウド・プロバイダの場合にサポートされています。

branch_name

マージするGitブランチの名前を指定します。

このパラメータは必須であり、すべてのクラウド・プロバイダでサポートされています。

target_branch_name

マージ先のターゲット・ブランチの名前を指定します。

このパラメータは必須であり、すべてのクラウド・プロバイダでサポートされています。

commit_details

JSONドキュメントとしてのコミット詳細

{"message": "Commit message", "author": {"name": "Committing user name", "email": "Email of committing user" } }

commit_detailsの値を指定しなかった場合、commit_detailsは、現在のデータベース・セッション・ユーザー、およびそのコミットを実行しているデータベースの名前についての情報を含む、デフォルトのコミット・メッセージに設定されます。

BEGIN
  DBMS_CLOUD_REPO.MERGE_BRANCH (
    repo               => l_repo,
    branch_name        => 'test_branch',
    target_branch_name => 'main'
    );
END;
/

使用上のノート

DBMS_CLOUD_REPO.MERGE_BRANCHプロシージャを実行するには、ADMINユーザーとしてログインするか、DBMS_CLOUD_REPOに対するEXECUTE権限がある必要があります。

52.4.20 PUT_FILEプロシージャ

このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリにファイルをアップロードします。このプロシージャは、ディレクトリ・オブジェクトからのファイルのアップロード、またはBLOBからリポジトリ・ファイルへのコンテンツのアップロードをサポートするようにオーバーロードされています。

構文

PROCEDURE DBMS_CLOUD_REPO.PUT_FILE(
      repo              IN  CLOB,
      file_path         IN  VARCHAR2,
      contents          IN  BLOB,
      branch_name       IN  VARCHAR2  DEFAULT NULL,
      commit_details    IN  CLOB      DEFAULT NULL
);
 
PROCEDURE DBMS_CLOUD_REPO.PUT_FILE(
      repo              IN  CLOB,
      file_path         IN  VARCHAR2,
      directory_name    IN  VARCHAR2,
      source_file_name  IN  VARCHAR2  DEFAULT NULL,
      branch_name       IN  VARCHAR2  DEFAULT NULL,
      commit_details    IN  CLOB      DEFAULT NULL
);

パラメータ

パラメータ 説明
repo リポジトリ・ハンドルを指定します。
file_path リポジトリ内のファイルをアップロードするためのファイル・パス。
contents ファイル・コンテンツを含むBLOB。
directory_name そのファイル名を含むディレクトリ・オブジェクト名。
source_file_name リポジトリにアップロードするソース・ファイルの名前。
branch_name ファイルを特定のブランチに配置します。
commit_details

JSONドキュメントとしてのコミット詳細:

{"message": "Commit message", "author": {"name": "Committing user name", "email": "Email of committing user" } }

BEGIN
  DBMS_CLOUD_REPO.PUT_FILE(
     repo   => l_repo,
  );
END;
/

52.4.21 UPDATE_REPOSITORYプロシージャ

このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリを更新します。UPDATE_REPOSITORYは、クラウド・コード・リポジトリでサポートされているとおりに、名前、説明またはプライベート可視性ステータスの更新をサポートしています。

構文

PROCEDURE DBMS_CLOUD_REPO.UPDATE_REPOSITORY(
      repo                 IN OUT  CLOB,
      new_name             IN      VARCHAR2 DEFAULT NULL,
      description          IN      CLOB     DEFAULT NULL,
      private              IN      BOOLEAN  DEFAULT NULL
);

パラメータ

パラメータ 説明
repo リポジトリ・ハンドルを指定します。

このパラメータは、すべてのクラウド・プロバイダでサポートされています。

new_name リポジトリの新しい名前。

このパラメータは、すべてのクラウド・プロバイダでサポートされています。

description リポジトリについての短いテキスト説明。

このパラメータは、GITHUBおよびAWSクラウド・プロバイダの場合にサポートされています。

private

リポジトリはプライベートであり、有効な資格証明がある場合のみアクセスできます。

このパラメータは、GITHUBクラウド・プロバイダの場合にサポートされています。

BEGIN
  DBMS_CLOUD_REPO.UPDATE_REPOSITORY(
     repo        => l_repo,
     new_name    => 'repo2'
  );
END;
/