アプリケーションPDBの作成とアプリケーションの同期方法

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

~APP_ROOT配下にAPP_PDBを作成し、アプリケーションを同期する手順~

Oracle DatabaseのMultitenant構成で使用されるアプリケーション・コンテナ(Application Container)は、アプリケーション定義をAPP_ROOTで一元管理し、各アプリケーションPDB(APP_PDB)へ展開することで、効率的な運用が可能になります。

この記事では以下の2点について詳しく解説します:

  1. アプリケーションPDB(app_pdb01)の作成
  2. 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

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

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

コメント

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