~APP_ROOT配下にAPP_PDBを作成し、アプリケーションを同期する手順~
Oracle DatabaseのMultitenant構成で使用されるアプリケーション・コンテナ(Application Container)は、アプリケーション定義をAPP_ROOTで一元管理し、各アプリケーションPDB(APP_PDB)へ展開することで、効率的な運用が可能になります。
この記事では以下の2点について詳しく解説します:
- アプリケーションPDB(
app_pdb01)の作成 - APP_ROOTに定義されたアプリケーション(
sales_app)の同期
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
✅ 本記事の前提条件
- APP_ROOTにて
sales_appバージョン 1.0 が定義済み - APP_ROOT内に
APP_USER01というアプリケーションスキーマが作成されている - Oracle Database 12.2以降(Multitenant構成)
1. アプリケーションPDBとは?
アプリケーションPDB(APP_PDB)は、アプリケーション・コンテナに属する特別なPDBであり、APP_ROOTに定義されたアプリケーション構成(ユーザー・テーブル・ビューなど)を同期(SYNC)によって継承します。
[APP_ROOT]
├─ アプリケーション: sales_app v1.0
└─ [APP_PDB01] ← 同期対象(APP_PDB)
2. APP_PDBの作成手順
2.1 APP_ROOTに接続
ALTER SESSION SET CONTAINER = app_root;
2.2 APP_USER01ユーザーが定義されていることを確認
SELECT username FROM dba_users WHERE username = 'APP_USER01';
出力例:
USERNAME
------------------------------
APP_USER01
2.3 APP_PDBの作成(変更後の構文)
CREATE PLUGGABLE DATABASE app_pdb01
ADMIN USER app_user01 IDENTIFIED BY oracle
FILE_NAME_CONVERT = ('/pdbseed/','/app_pdb01/');
✅
APPLICATION CREATEを指定することで、APP_ROOTに属するアプリケーションPDBとして作成されます。
2.4 APP_PDBの起動
ALTER PLUGGABLE DATABASE app_pdb01 OPEN;
3. アプリケーションの同期(SYNC)
作成したばかりのAPP_PDBには、まだアプリケーション定義が適用されていません。以下の手順でAPP_ROOTのアプリケーションを同期させます。
3.1 APP_PDBに接続
ALTER SESSION SET CONTAINER = app_pdb01;
3.2 SYNC実行
ALTER PLUGGABLE DATABASE APPLICATION sales_app SYNC;
これにより、sales_app バージョン1.0の内容(例:APP_USER01のテーブル・ビュー等)が app_pdb01 に適用されます。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
4. 同期内容の確認
4.1 スキーマの確認
SELECT username FROM dba_users WHERE username = 'APP_USER';
4.2 テーブルの確認
SELECT table_name FROM all_tables WHERE owner = 'APP_USER';
SQL> ALTER SESSION SET CONTAINER = app_root;
セッションが変更されました。
SQL> show con_name
CON_NAME
------------------------------
APP_ROOT
SQL> CREATE PLUGGABLE DATABASE app_pdb01
2 ADMIN USER app_user01 IDENTIFIED BY oracle
3 FILE_NAME_CONVERT = ('/pdbseed/','/app_pdb01/');
プラガブル・データベースが作成されました。
SQL> ALTER PLUGGABLE DATABASE app_pdb01 OPEN;
プラガブル・データベースが変更されました。
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
4 APP_ROOT READ WRITE NO
5 APP_PDB01 READ WRITE NO
SQL> ALTER SESSION SET CONTAINER = app_pdb01;
セッションが変更されました。
SQL> ALTER PLUGGABLE DATABASE APPLICATION sales_app SYNC;
プラガブル・データベースが変更されました。
SQL> SELECT username FROM dba_users WHERE username = 'APP_USER';
USERNAME
--------------------------------------------------------------------------------
APP_USER
SQL> SELECT table_name FROM all_tables WHERE owner = 'APP_USER';
TABLE_NAME
--------------------------------------------------------------------------------
APP_SALES
📌 構成図(テキスト)
[CDB$ROOT]
└─ APP_ROOT
├─ アプリケーション: sales_app v1.0
└─ app_pdb01(APPLICATION CREATE)
└─ SYNC により sales_app の定義を継承
✅ まとめ
- APP_PDBを作成するには、
APPLICATION CREATE句とAPP_ROOTで事前に定義されたユーザー名をADMIN USERに指定する必要がある - 作成後は
ALTER PLUGGABLE DATABASE APPLICATION ... SYNCによりアプリケーションを同期 - 同期後はアプリケーションの構成要素(ユーザー、テーブル、ビューなど)がAPP_PDBに展開される
[参考]
Oracle Multitenant 管理者ガイド 19c




コメント