Autonomous AI Databaseを使用したクラウド・コード・リポジトリでのファイルの管理および格納
Autonomous AI Databaseは、クラウド・コード(Git)リポジトリ内のファイルを管理および格納するためのルーチンを提供します。サポートされているクラウド・コード・リポジトリは、GitHub、AWS CodeCommitおよびAzure Reposです。
Autonomous AI Databaseを使用したクラウド・コード・リポジトリについて
DBMS_CLOUD_REPOパッケージは、Autonomous AI Databaseからクラウド・コード・リポジトリにアクセスするための単一のインタフェースを提供します。
サポートされているクラウド・コード・リポジトリには、次の機能があります。
-
Git Version Control System: Gitは、ファイル・セットの変更を追跡するためのソフトウェアで、通常はソフトウェア開発中にソース・コードを共同開発するプログラマ間の作業を調整するために使用されます。その目標には、速度、データの整合性、分散した非線形ワークフローのサポートが含まれます。
-
Gitリポジトリ: Gitリポジトリはプロジェクトの仮想記憶域です。これにより、必要に応じてアクセスできるコードのバージョンを保存できます。
DBMS_CLOUD_REPO APIは、リポジトリ・ハンドル(REPOオブジェクト)を使用します。リポジトリ・ハンドルは、特定のクラウド・プロバイダのクラウド・コード・リポジトリを表す不透明なJSONオブジェクトです。REPOオブジェクトは、異なるDBMS_CLOUD_REPO APIに渡すことができます。この不透明なオブジェクトは、DBMS_CLOUD_REPOプロシージャおよびファンクションがマルチクラウド互換であることを保証します。クラウド・コード・リポジトリ・プロバイダ間で移行する際に、コードを変更する必要はありません。
Autonomous AI Databaseは、クラウド・コード・リポジトリの操作に役立つ次のものを提供します:
-
リポジトリを初期化するためのリポジトリ初期化操作。
詳細は、Initialize a Cloud Code Repositoryを参照してください。
-
リポジトリを作成、リスト、更新または削除できるリポジトリ管理操作。
詳細は、クラウド・コード・リポジトリの作成と管理を参照してください。
-
リポジトリ内のブランチを作成、リスト、マージまたは削除できるリポジトリ・ブランチ管理操作。
詳細は、クラウド・コード・リポジトリでのブランチの作成および管理を参照してください。
-
スキーマ内のすべてのオブジェクトのメタデータDDLをリポジトリにエクスポートします。
詳細は、クラウド・コード・リポジトリ・ブランチへのスキーマ・オブジェクトのエクスポートを参照してください。
-
ファイルをアップロード、ダウンロード、更新および削除するためのリポジトリ・ファイル管理操作。
詳細は、Use File Operations with a Cloud Code Repositoryを参照してください。
-
データベース・オブジェクト・メタデータDDLをリポジトリにエクスポートし、クラウド・コード・リポジトリからデータベースにSQL文をインストールできるSQLインストール操作。
詳細は、クラウド・コード・リポジトリでのSQLインストール操作の使用を参照してください。
Cloud Codeリポジトリの初期化
DBMS_CLOUD_REPO初期化ルーチンは、クラウド・コード・リポジトリを初期化します。クラウド・コード・リポジトリ・ハンドルを取得したら、そのハンドルを使用してクラウド・コード・リポジトリにアクセスします。
クラウド・コード・リポジトリを初期化するには:
-
クラウド・コード・リポジトリにアクセスするための資格証明を作成します。
資格証明の作成の詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。
-
リポジトリ、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初期化操作」を参照してください。
クラウド・コード・リポジトリの作成と管理
DBMS_CLOUD_REPO管理ルーチンを使用すると、リポジトリを作成、リスト、更新または削除して、クラウド・コード・リポジトリを管理できます。
まず、クラウド・コード・リポジトリ・ハンドルを取得して、リポジトリへのアクセスを提供します。詳細は、クラウド・コード・リポジトリの初期化を参照してください。
-
リポジトリを生成するには:
VAR repo clob BEGIN DBMS_CLOUD_REPO.CREATE_REPOSITORY( repo => :repo, description => 'test repo' ); END; / -
リポジトリを更新するには:
VAR repo clob DEFINE repo_name='test_repo'; BEGIN DBMS_CLOUD_REPO.UPDATE_REPOSITORY( repo => :repo, new_name => '&repo_name' || '_new' ); END; / -
リポジトリをリストするには:
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); -
リポジトリを削除するには:
VAR repo clob BEGIN DBMS_CLOUD_REPO.DELETE_REPOSITORY( repo => :repo ); END; /
詳細は、「DBMS_CLOUD_REPOリポジトリ管理操作」を参照してください。
クラウド・コード・リポジトリでのブランチの作成および管理
DBMS_CLOUD_REPO管理ルーチンを使用すると、リポジトリ内のブランチを作成、リスト、マージまたは削除することで、クラウド・コード・リポジトリのブランチを管理できます。
クラウド・コード・リポジトリのブランチ管理操作を実行するには、まず次の操作を実行する必要があります。
-
資格証明を作成します。
詳細は、CREATE_CREDENTIALプロシージャを参照してください。
-
ハンドルを取得します。
詳細は、Initialize a Cloud Code Repositoryを参照してください。
-
リポジトリを作成します。
詳細は、Create and Manage a Cloud Code Repositoryを参照してください。
-
ADMINユーザーとしてログインするか、
DBMS_CLOUD_REPOに対するEXECUTE権限を持ちます。
-
クラウド・コード・リポジトリにブランチを作成するには:
BEGIN DBMS_CLOUD_REPO.CREATE_BRANCH ( repo => l_repo, branch_name => 'test_branch', parent_branch => 'main' ); END; / -
クラウド・コード・リポジトリ内のブランチを削除するには:
BEGIN DBMS_CLOUD_REPO.DELETE_BRANCH ( repo => l_repo, branch_name => 'test_branch' ); END; / -
ブランチを別のブランチにクラウド・コード・リポジトリでマージするには:
BEGIN DBMS_CLOUD_REPO.MERGE_BRANCH ( repo => l_repo, branch_name => 'test_branch', target_branch_name => 'main' ); END; / -
クラウド・コード・リポジトリにブランチをリストするには:
SELECT * FROM DBMS_CLOUD_REPO.LIST_BRANCHES (repo => l_repo); -
次のものに基づいて、クラウド・コード・リポジトリのブランチにコミットをリストできます。
-
リポジトリ
-
分岐
-
ブランチのファイル・パス
-
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管理ルーチンを使用すると、スキーマ内のオブジェクトのメタデータをクラウド・コード・リポジトリ・ブランチにエクスポートできます。オブジェクト名またはオブジェクト・タイプに基づいてリストをフィルタできます。
スキーマ・メタデータをエクスポートするには、最初に次のことを行う必要があります。
-
資格証明を作成します。
詳細は、CREATE_CREDENTIALプロシージャを参照してください。
-
ハンドルを取得します。
詳細は、Initialize a Cloud Code Repositoryを参照してください。
-
リポジトリを作成します。
詳細は、Create and Manage a Cloud Code Repositoryを参照してください。
-
ADMINユーザーとしてログインするか、
DBMS_CLOUD_REPOに対するEXECUTE権限を持ちます。
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ファイル操作では、クラウド・コード・リポジトリ内のファイルを作成、取得、リスト、更新または削除できます。
ファイル操作を使用する前に、クラウド・コード・リポジトリ・ハンドルを取得します。詳細は、クラウド・コード・リポジトリの初期化を参照してください。
また、ファイルを操作する前にリポジトリを作成する必要があります。詳細は、クラウド・コード・リポジトリの作成と管理を参照してください。
- ファイルを取得するには:
SELECT DBMS_CLOUD_REPO.GET_FILE(repo => :repo, file_path => 'test1.sql') -
ファイルを作成するには:
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; / -
ファイルを更新する手順は、次のとおりです。
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; / -
ファイルをリストするには:
SELECT id, name, bytes, url FROM DBMS_CLOUD_REPO.LIST_FILES(repo => :repo); -
ファイルを削除するには:
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文は、バインド変数または定義が含まれていない場合に機能します。
-
DDLメタデータをクラウド・コード・リポジトリにアップロードするには:
VAR repo clob BEGIN DBMS_CLOUD_REPO.EXPORT_OBJECT( repo => :repo, object_type => 'PACKAGE', object_name => 'MYPACK', file_path => 'mypack.sql' ); END; / -
ファイルからSQL文をインストールするには:
VAR repo clob BEGIN DBMS_CLOUD_REPO.INSTALL_FILE( repo => :repo, file_path => 'test3.sql', stop_on_error => FALSE ); END; / -
バッファから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インストール操作」を参照してください。