~仕組み・メリット・同期と展開の注意点を図解で理解~
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_APP→ APP_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は読み取り専用のテンプレート用PDBCREATE 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




コメント