※ 本記事は、Witold Swierzyによる”Integrating Oracle Database with GitHub“を翻訳したものです。
2025年5月19日
Table of Contents
プログラマが1人でシステム全体を開発できたのは遠い過去の話です。今やアプリケーションのほとんどは、一人で開発するには複雑で大規模すぎます。そのため、開発チームのメンバー間のコラボレーションは必須です。さまざまなコード管理ソリューションが普及しているのはこのためです。コラボレーションに対するこのアプローチは、もちろんデータベース開発者にも当てはまります。このため、Oracle Databaseでは、GitHubなどの普及しているクラウド・コード・リポジトリを簡単に使用できる機能が導入されています。
パッケージDBMS_CLOUD_REPOは導入済みなので、Autonomous Databases – 23aiまたは19cではすぐに利用できます。23.7 ODAやExadataのリリースでは、ここで説明するステップで簡単にインストールできます。19cや21cなどの他のデータベース・リリースでdbms_cloudパッケージ・ファミリをインストールする場合は、MOSドキュメント「How To Setup And Use DBMS_CLOUD Package」(Doc ID 2748362.1)をご参照ください。
この機能を使用するには、次の要件を満たす必要があります:
- GitHub、AWS Code CommitまたはAzure Repoのいずれかのクラウド・コード・リポジトリ・システムのアカウント
- DBMS_CLOUD_REPOがADBがプリインストールされているADB、またはインストール済みのOracleデータベース (上のリンクを参照)
この記事では、GitHubの使用方法について説明しますが、全体の流れは、他のリポジトリ・システムと同様で、通常、次のステップで進めます:
1. データベースから直接リポジトリを使用するため、認証資格証明を取得する必要があります。GitHubの場合、ユーザー名と認証トークンで構成されるペアです。トークンを生成する手順は、ここのGitHubのドキュメントで説明されています。適切なレベルの権限がトークンに割り当てられているか、例えばすべてのリポジトリ、メタデータなどへのアクセスについて、いま一度確認しておくことが非常に重要です。いざというときに、追加の操作ができないことになりかねません。
2. 次に、資格証明オブジェクトを作成します。そのために、ADBではDBMS_CLOUDパッケージを使用し、ADB以外のデータベースではDBMS_CREDENTIALを使用します。
begin
dbms_cloud.create_credential(
credential_name => 'GITHUB_CREDENTIAL',
username => 'witold.swierzy@oracle.com',
password => '<access token>'
);
end;
/
もちろん、資格証明オブジェクトの作成は1回で済みます。繰り返し使用できます。
3. これで、コード・リポジトリを使用できます。たとえば、PL/SQLプログラムを含むSQLスクリプトをダウンロードでき、すぐにデータベースで実行されます。
declare l_repo_handle clob; -- CLOB object will contain a JSON document -- containing all the details required to connect to a GitHub account begin -- below code initializes the connection to a GitHub account and repository l_repo_handle := dbms_cloud_repo.init_github_repo( credential_name => 'GITHUB_CREDENTIAL', owner => 'witold-swierzy', -- GitHub username repo_name => 'sql_horizontal_aggregation' -- name of the repository ); dbms_cloud_repo.install_file( -- download and execute a SQL script repo => l_repo_handle, -- CLOB connection descriptor file_path => 'json_arr.sql', -- name of the file we want to download and execute stop_on_error => true -- stop in case of any error ); end; /
スクリプトjson_arr.sqlにはjson_arr_vc集計関数の定義が含まれており、正常にインストールされたらすぐにその関数の使用を開始できます:
SQL> select department_id, json_arr_vc(last_name)
2 from employees
3* group by department_id;
DEPARTMENT_ID JSON_ARR_VC(LAST_NAME)
________________ _______________________________________________
10 ["Whalen"]
20 ["Hartstein","Be Charge"]
50 ["Mourgos","Vargas","Matos","Davies","Rajs"]
60 ["Hunold","Lorentz","Ernst"]
80 ["Zlotkey","Taylor","Abel"]
90 ["King","De Haan","Kochhar"]
110 ["Higgins","Gietz"]
["Grant"]
4. DBMS_CLOUD_REPOパッケージでは、もちろん他のアクションもカバーします。例えばリポジトリの作成、プッシュおよび変更のコミットなどです。一般的には、gitコマンドライン・ツールの全機能に対する部分的な機能を提供しますが、PL/SQL APIの形式で実装されます。
次の例は、新しいリポジトリplsql_demosを作成し、それにジオコード・プロシージャを追加/アップロードする方法を示しています。
declare
repo_handle clob;
begin
-- first, we need to initalize the repository in the database
-- the repository has not been created in our GitHub yet
repo_handle:=dbms_cloud_repo.init_github_repo(
credential_name => 'GITHUB_CREDENTIAL',
repo_name => 'plsql_demos', -- new repository name
owner => 'witold-swierzy');
-- below call creates the repository in our GitHub account
dbms_cloud_repo.create_repository(
repo => repo_handle,
description => 'My test repo',
private => false);
...
5. これで、以前に作成したリポジトリにプロシージャのコードをプッシュしてコミットできます:
...
dbms_cloud_repo.export_object(
repo => repo_handle,
file_path => 'spatial/geocode.sql',
object_type => 'PROCEDURE',
object_schema => user,
object_name => 'GEOCODE',
branch_name => 'main',
commit_details => json_object('message' value 'geocoding wrapper procedure',
'author' value 'Witold Swierzy',
'email' value 'witold.swierzy@oracle.com' ),
append => false );
end;
/
DBMS_CLOUD_REPOを使えば、簡単かつ快適にクラウド・コード・リポジトリをデータベース・レベルで使うことができます。複数のプラットフォームをサポートし、組織内で公式なソリューションとして受け入れられているものを選択することができます。この機能により、開発者のコラボレーションが可能になり、マルチユーザー環境でコードとその一貫性を保護する新しい方法が提供されたことで、データ中心のアプリケーションの最新の開発が大幅に容易になります。
- 23aiドキュメントの『Oracle Autonomous Database Serverlessの使用』のDBMS_CLOUD_REPOに関する項
- Oracle23ai non-autonomousデータベースでのDBMS_CLOUDパッケージの手動インストール手順
- Oracle Database 19cおよび21cでDBMS_CLOUDパッケージを設定および使用する方法 (Doc ID 2748362.1)
- 例で使用されているGitHub Repositories
