Oracle アプリケーション・コンテナの作成手順(12.2以降対応)

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

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_PDBAPP_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

dbca -silentでCDB構成のデータベースを作成する手順
Oracleでは、コマンドラインのみでデータベースを構築することができます。本記事では、dbca -silent を用いたCDB構成のデータベース作成手順を、Oracle 21c以降向けに詳しく解説します。 💰 【PR】Oracleエンジニ...

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

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

コメント

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