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_REPOのREPOは、特定のクラウド・プロバイダのクラウド・コード・リポジトリを表す不透明な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パッケージ内の初期化操作用のサブプログラムをリストします。
| サブプログラム | 説明 |
|---|---|
| このファンクションは、AWSリポジトリ・ハンドルを初期化し、不透明なタイプを返します。 | |
| このファンクションは、Azureリポジトリ・ハンドルを初期化し、不透明なタイプを返します。 | |
| このファンクションは、GitHubリポジトリ・ハンドルを初期化し、不透明なタイプを返します。 | |
| このファンクションは、クラウド・コード・リポジトリ・ハンドルを初期化し、不透明なJSONオブジェクトを返します。 |
52.3.2 DBMS_CLOUD_REPOのリポジトリ管理操作
DBMS_CLOUD_REPOパッケージ内のリポジトリ管理操作用のサブプログラムを示します。
| サブプログラム | 説明 |
|---|---|
このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリを作成します。
|
|
| DELETE_REPOSITORYプロシージャ | このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリを削除します。
|
このファンクションは、repoハンドル引数によって特定されたすべてのクラウド・コード・リポジトリをリストします。
|
|
このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリを更新します。このプロシージャは、クラウド・コード・リポジトリでサポートされているとおりに、名前、説明またはプライベート可視性ステータスの更新をサポートしています。
|
52.3.3 DBMS_CLOUD_REPOのリポジトリ・ブランチ管理操作
DBMS_CLOUD_REPOパッケージ内のリポジトリ・ブランチ管理操作用のサブプログラムをリストします。
| サブプログラム | 説明 |
|---|---|
このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリ内のブランチを作成します。
|
|
このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリ内のブランチを削除します。
|
|
このファンクションは、repoハンドル引数によって特定されたすべてのクラウド・コード・リポジトリ・ブランチをリストします。
|
|
このファンクションは、repoハンドル引数によって特定されたクラウド・コード・リポジトリ・ブランチ内のコミットをすべてリストします。
|
|
このプロシージャは、クラウド・コード・リポジトリのブランチを、repoハンドル引数によって特定されたクラウド・コード・リポジトリ内の別の指定されたブランチにマージします。
|
52.3.4 DBMS_CLOUD_REPOのファイル操作
DBMS_CLOUD_REPOパッケージ内のファイル操作用のサブプログラムをリストします。
| サブプログラム | 説明 |
|---|---|
このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリからファイルを削除します。
|
|
| このファンクションは、クラウド・コード・リポジトリからファイルのコンテンツをダウンロードします。このプロシージャを使用すると、クラウド・コード・リポジトリからファイルのコンテンツをダウンロードし、そのファイルをディレクトリ内に保存できます。 | |
| このファンクションは、クラウド・コード・リポジトリからファイルをダウンロードします。オプションで、ファイル・コンテンツに、特定のブランチ名、タグ名またはコミット名からアクセスできます。デフォルトでは、これらのファイルに、デフォルトのリポジトリ・ブランチからアクセスします。 | |
このプロシージャは、repoハンドル引数によって特定されたクラウド・コード・リポジトリにファイルをアップロードします。このプロシージャは、ディレクトリ・オブジェクトからのファイルのアップロード、またはCLOBからリポジトリ・ファイルへのコンテンツのアップロードをサポートするようにオーバーロードされています。
|
52.3.5 DBMS_CLOUD_REPOのSQLインストール操作
DBMS_CLOUD_REPOパッケージ内のSQLインストール操作用のサブプログラムをリストします。
| サブプログラム | 説明 |
|---|---|
このプロシージャは、データベース・オブジェクトのDDLメタデータを、repoハンドル引数によって特定されたクラウド・コード・リポジトリにアップロードします。
|
|
このプロシージャは、スキーマ内のすべてのオブジェクトのメタデータを、repoハンドル引数によって特定されたクラウド・コード・リポジトリ・ブランチにエクスポートします。
|
|
このプロシージャは、repo ハンドル引数によって特定されたクラウド・コード・リポジトリ内のファイルからSQL文をインストールします。
|
|
| このプロシージャは、入力として指定されたバッファからSQL文をインストールします。 |
52.4 DBMS_CLOUD_REPOサブプログラムの要約
この項では、Oracle Databaseに付随する、DBMS_CLOUD_REPOのサブプログラムについて説明します。
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_commit_id |
指定されたリポジトリ・コミットを使用して、新しいブランチを作成します。 このパラメータは、すべてのクラウド・プロバイダでサポートされています。
|
例
ノート:
クラウド・コード・リポジトリにブランチを作成するには、親ブランチまたは親コミット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ドキュメントとしてのコミット詳細: |
append |
既存のファイルにメタデータDDLを追加します。 |
使用上のノート
オブジェクトDDLに対するカスタマイズした制御の場合は、DBMS_METADATA.GET_DDLをDBMS_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パラメータは次のとおりです:
|
branch_name |
リポジトリ・ブランチ名を指定します。 このパラメータは、すべてのクラウド・プロバイダでサポートされています。
|
commit_details |
JSONドキュメントとしてのコミット詳細 {"message": "Commit message", "author": {"name": "Committing user name", "email": "Email of committing user" } }このパラメータは、すべてのクラウド・プロバイダでサポートされています。
|
例
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 |
特定のブランチからのコミットをリストします。
このパラメータは、すべてのクラウド・プロバイダでサポートされています。
|
file_path |
リポジトリ内の指定されたサブフォルダ・パスの下にあるファイルをリストします。
このパラメータは、GitおよびAzureクラウド・プロバイダの場合のみサポートされています。
|
commit_id |
指定されたsha/idから始まるファイルをリストしますこのパラメータは、すべてのクラウド・プロバイダでサポートされています。
|
例
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は、列id、name、urlおよび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は、列id、name、owner、description、private、url、bytes、createdおよび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" } }
|
例
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;
/