Oracle Multitenant機能の1つであるアプリケーション・コンテナ(Application Container)は、アプリケーションを複数のPDBで効率的に管理・運用するための機能です。この記事では、アプリケーション・コンテナの作成手順を、実行例とともに丁寧に解説します。
✅ この記事で扱う内容
- アプリケーション・コンテナの概要
- アプリケーション・コンテナの作成前提
- アプリケーション・コンテナ作成SQL
- 作成後の確認方法
- よくあるエラーとその対処法
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
1. アプリケーション・コンテナとは?
アプリケーション・コンテナは以下の構造を持ちます:
[CDB$ROOT]
├─[PDB$SEED]
└─[APP_ROOT] ←アプリケーション・コンテナ
└─[APP_PDB1], [APP_PDB2] ... ← アプリケーションPDB(別記事で解説)
| 用語 | 説明 |
|---|---|
| APP_ROOT | アプリケーション定義を保持(テーブル、ビュー、PL/SQLなど) |
| APP_PDB | APP_ROOTに属し、定義を共有するPDB |
たとえば、1つのアプリケーション(例:販売管理システム)を複数の拠点(PDB)で使いたい場合に便利です。
2. 作成前の前提条件
- Oracle Database 12.2以降(Enterprise Edition + Multitenant Option)
- CDB環境であること
- SYSDBA権限を持つユーザーで接続していること
- 十分なディスク領域があること
3. アプリケーション・コンテナの作成手順
ここではアプリケーション・コンテナ名を APP_ROOT とし、ファイル格納先を /u01/app/oracle/oradata/V19M/APP_ROOT/ とします。
3.1 CDB$ROOTに接続する
SQL> SHOW CON_NAME;
CON_NAME
------------------------------
CDB$ROOT
3.2 アプリケーション・コンテナの作成
CREATE PLUGGABLE DATABASE app_root
ADMIN USER app_admin IDENTIFIED BY Oracle_123
ROLES = (DBA)
FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/V19M/pdbseed/',
'/u01/app/oracle/oradata/V19M/APP_ROOT/')
AS APPLICATION CONTAINER;
💡 補足:
AS APPLICATION CONTAINERを忘れると通常のPDBが作成されます。FILE_NAME_CONVERTは必須ではありませんが、明示的に指定することでデータファイルの配置場所を制御できます。
3.3 コンテナをオープンする
ALTER PLUGGABLE DATABASE app_root OPEN;
3.4 セッションをAPP_ROOTに切り替える
ALTER SESSION SET CONTAINER = app_root;
確認:
SHOW CON_NAME;
CON_NAME
------------------------------
APP_ROOT
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
4. 作成結果の確認
SELECT NAME, APPLICATION_ROOT, APPLICATION_PDB
FROM V$PDBS
WHERE NAME = 'APP_ROOT';
出力例:
NAME APPLICATION_ROOT APPLICATION_PDB
---------- ---------------- ----------------
APP_ROOT YES NO
APPLICATION_ROOT列がYESになっていれば、正しくアプリケーション・コンテナが作成されています。
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> CREATE PLUGGABLE DATABASE app_root AS APPLICATION CONTAINER
2 ADMIN USER app_admin IDENTIFIED BY password
3 FILE_NAME_CONVERT = ('/pdbseed/', '/app_root/');
プラガブル・データベースが作成されました。
SQL> ALTER PLUGGABLE DATABASE app_root OPEN;
プラガブル・データベースが変更されました。
SQL> ALTER SESSION SET CONTAINER = app_root;
セッションが変更されました。
SQL> SHOW CON_NAME
CON_NAME
------------------------------
APP_ROOT
SQL> col name for a20
SQL> SELECT NAME, APPLICATION_ROOT, APPLICATION_PDB FROM V$PDBS
2 WHERE NAME = 'APP_ROOT';
NAME APPLICATI APPLICATI
-------------------- --------- ---------
APP_ROOT YES NO
5. よくあるエラーと対処法
| エラー内容 | 原因と対処法 |
|---|---|
ORA-65010: プラガブル・データベース APP_ROOT はすでに存在します | 同名のPDBがすでに存在しています。名前を変えて作成してください。 |
ORA-65180: AS APPLICATION CONTAINER 句はCREATE PLUGGABLE DATABASE文でのみ使用可能です | 通常のPDBやSEEDに対して使用した場合に出るエラーです。対象を確認してください。 |
6. まとめ
アプリケーション・コンテナは、アプリケーションを一元管理・一括配布したいときに非常に有効です。CDB環境下でのデータベース設計の柔軟性が高まり、大規模システムでも保守性を向上させられます。
[参考]
Oracle Multitenant 管理者ガイド 19c




コメント