Oracleアプリケーション・コンテナ完全解説

CDB/PDB(マルチテナント)

~仕組み・メリット・同期と展開の注意点を図解で理解~

Oracleのマルチテナント環境では、アプリケーション・コンテナ(Application Container)という特別な構成を利用することで、共通アプリケーションを複数のPDBで効率的に管理・展開することができます。

本記事では、アプリケーション・コンテナの概念、構造、同期方法、注意点まで、実務で役立つ情報を図解つきで分かりやすく解説します。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


■ アプリケーション・コンテナとは?

アプリケーション・コンテナは、1つのアプリケーション本体(APP_ROOT)を複数のPDB(APP_PDB)に展開し、バージョン管理・同期できる仕組みです。

▼ アーキテクチャ図(概念)

[CDB]
└─ [APP_ROOT] ← アプリの本体(表・パッケージ・ビューなど定義)
├─ [APP_PDB1] ← 実行環境1(アプリPDB)
└─ [APP_PDB2] ← 実行環境2(アプリPDB)
  • APP_ROOT:アプリケーションの共通定義を持つ親PDB
  • APP_PDB:APP_ROOTのアプリケーションを使用する子PDB

■ どんなときに使う?

アプリケーション・コンテナは、以下のような場面で特に効果を発揮します。

ユースケース説明
SaaS型構成テナントごとにPDBを分けつつ、アプリ本体は一元管理
バージョンアップの簡素化アプリを一度更新すれば全てのPDBに配布できる
テスト・検証環境の容易な構築APP$SEEDからPDBをコピーして統一された環境を簡単に作成可能

■ アプリケーションの展開と管理の流れ

アプリケーション・コンテナは、アプリケーションのバージョン付きライフサイクル管理をサポートします。

▼ 展開から同期までの流れ(概要)

1. APP_ROOTでアプリを定義
→ CREATE_APP('アプリ名', '1.0')

2. オブジェクト作成(表・ビュー・パッケージなど)

3. END_APPで定義を確定

4. APP_PDBでINSTALL_APPを実行し展開

5. APP_ROOTでPATCH_APPまたはUPGRADE_APPで更新

6. APP_PDBでSYNCを実行し同期

■ アプリケーション・コンテナの主なメリット

メリット説明
共通オブジェクトの一元管理表、ビュー、パッケージなどをAPP_ROOTで一括定義できる
アプリの配布・更新が容易INSTALL_APPやSYNCで簡単に配布・更新が可能
バージョン制御が可能複数バージョンのアプリ定義を保持しながら更新の追跡が可能
テンプレート化が可能APP$SEEDから新規PDBを簡単に作成可能

■ 注意点と実務上の落とし穴

アプリケーション・コンテナは便利な反面、設計や運用にはいくつかの注意点があります。

① コンテナ間の操作区分を意識せよ!

  • CREATE_APP, END_APP, PATCH_APP など → APP_ROOTで実行
  • INSTALL_APP, SYNC_APPAPP_PDBで実行
-- ×:APP_ROOT以外でCREATE_APPを実行するとエラー
-- ORA-06550: 行2、列12: PLS-00302: コンポーネントINSTALL_APPを宣言してください。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


② ユーザーや権限は個別管理が必要

APP_ROOTで作成したユーザーやロールはAPP_PDBには継承されません

オブジェクト自動的に反映されるか?
表、ビューなど○(アプリ定義済みのもの)
ユーザー、ロール✕(各APP_PDBで作成が必要)

③ アプリケーション定義中は制限あり

アプリ定義中(CREATE_APP~END_APP間)は、APP_ROOTがアプリケーション・モードとなり、以下のような制限があります。

  • 複数のアプリを同時に定義できない
  • END_APPしないと次の定義に進めない

④ アプリケーション・シードの扱いに注意

  • APP$SEED読み取り専用のテンプレート用PDB
  • CREATE PLUGGABLE DATABASE newpdb FROM APP$SEEDで簡単にコピー可能

■ よくある質問(FAQ)

Q1. APP_ROOTで定義した表をAPP_PDBで直接変更できますか?

→ できません。APP_ROOTで定義した表はAPP_PDBでは読み取り専用です。

Q2. APP_PDBで追加の表やパッケージは作れますか?

→ 可能です。APP_PDB固有のローカルオブジェクトは自由に作成できます。

Q3. 通常のPDBとAPP_PDBの違いは?

→ APP_PDBはAPP_ROOTを参照し、共通アプリを同期・更新できる点が違いです。


■ まとめ:一元管理の鍵は設計にあり

ポイント解説
概要複数PDBに共通アプリを配布・同期するための特別な構成
主な操作APP_ROOTで定義→APP_PDBでINSTALL/SYNC
設計時に注意すること権限・ユーザーの住み分け、更新のバージョン管理、モード制限を理解すること
アプリ配布の最適化に有効な構成SaaS、複数環境運用などに非常に効果的


[参考]
Oracle Multitenant 管理者ガイド 19c

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

コメント

タイトルとURLをコピーしました