~公式構文でのインストール処理/CREATE USER 付き~
Oracle Multitenant構成において提供されているアプリケーション・コンテナ(Application Container)は、アプリケーション定義をAPP_ROOTで集中管理し、アプリケーションPDB(APP_PDB)へ効率よく展開するための機能です。
本記事では、APP_ROOT内でアプリケーションを作成・定義する手順を、CREATE USER を含めて丁寧に解説します。
※アプリケーションPDBの作成や同期方法は本記事では扱いません。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
✅ この記事で学べること
- アプリケーション定義の正しい手順(BEGIN INSTALL~END INSTALL)
CREATE USERの定義を含めたアプリケーション登録方法DBMS_PDB.INSTALL_APPを使わない、Oracle公式推奨構文のみによるアプリ定義
1. 前提条件
| 項目 | 内容 |
|---|---|
| バージョン | Oracle Database 12.2以降 |
| 環境 | CDB + アプリケーション・コンテナ構成 |
| 権限 | SYSDBA またはAPP_ROOTの管理者ユーザー |
| APP_ROOT | 作成済かつOPEN状態であること |
2. アプリケーション定義の構成
アプリケーションは次のように、Oracle内部でバージョン管理された一連の定義として扱われます。
APP_ROOT
└─ BEGIN INSTALL '1.0'
├─ CREATE USER
├─ GRANT 権限
├─ CREATE TABLE
├─ CREATE VIEW
END INSTALL
3. APP_ROOTに接続
-- APP_ROOTへ切り替え
ALTER SESSION SET CONTAINER = app_root;
-- 現在のコンテナ確認
SHOW CON_NAME;
-- → APP_ROOT
4. アプリケーションのインストール開始
ALTER PLUGGABLE DATABASE APPLICATION sales_app BEGIN INSTALL '1.0';
| パラメータ | 意味 |
|---|---|
sales_app | アプリケーション名(任意) |
'1.0' | バージョン名(任意) |
5. アプリケーションオブジェクトの定義(CREATE USER付き)
① ユーザー作成と権限付与
CREATE USER app_user IDENTIFIED BY oracle;
GRANT CREATE SESSION, RESOURCE, UNLIMITED TABLESPACE TO app_user;
🔍 RESOURCEロールとは?
テーブルやインデックスなどのスキーマ・オブジェクトを作成可能にするロールです。
🔍 UNLIMITED TABLESPACEとは?
表領域の割当制限を無制限にします。通常、PDB配下でも使用されます。
② テーブル作成
CREATE TABLE app_user.app_sales (
sale_id NUMBER PRIMARY KEY,
product VARCHAR2(100),
amount NUMBER,
sale_date DATE
);
③ ビュー作成
CREATE VIEW app_user.app_sales_summary AS
SELECT product, SUM(amount) AS total_amount
FROM app_user.app_sales
GROUP BY product;
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
6. アプリケーションのインストール終了
ALTER PLUGGABLE DATABASE APPLICATION sales_app END INSTALL;
これにより、sales_app バージョン1.0のアプリケーションとしてOracleに登録され、以降アプリケーションPDBで同期・配布できるようになります。
7. アプリケーションの登録確認
SELECT app_name, app_version, install_time
FROM dba_applications;
出力例:
APP_NAME APP_VERSION INSTALL_TIME
--------- ------------ ---------------------
SALES_APP 1.0 2025-05-18 17:32:10
SQL> ALTER SESSION SET CONTAINER = app_root;
セッションが変更されました。
SQL> SHOW CON_NAME
CON_NAME
------------------------------
APP_ROOT
SQL> ALTER PLUGGABLE DATABASE APPLICATION sales_app BEGIN INSTALL '1.0';
プラガブル・データベースが変更されました。
SQL> CREATE USER app_user IDENTIFIED BY oracle;
ユーザーが作成されました。
SQL> GRANT CREATE SESSION, RESOURCE, UNLIMITED TABLESPACE TO app_user;
権限付与が成功しました。
SQL> CREATE TABLE app_user.app_sales (
2 sale_id NUMBER PRIMARY KEY,
3 product VARCHAR2(100),
4 amount NUMBER,
5 sale_date DATE
6 );
表が作成されました。
SQL> CREATE VIEW app_user.app_sales_summary AS
2 SELECT product, SUM(amount) AS total_amount
3 FROM app_user.app_sales
4 GROUP BY product;
ビューが作成されました。
SQL> ALTER PLUGGABLE DATABASE APPLICATION sales_app END INSTALL;
プラガブル・データベースが変更されました。
SQL> col app_name for a20
SQL> col app_version for a20
SQL> SELECT app_name, app_version FROM dba_applications
2 WHERE app_name = 'SALES_APP';
APP_NAME APP_VERSION
-------------------- --------------------
SALES_APP 1.0
🔍 補足:DBMS_PDB.INSTALL_APPはなぜ使わないのか?
Oracle Database 12.2以降では、ALTER PLUGGABLE DATABASE APPLICATION 構文のみでアプリケーションの作成とバージョン管理が完結します。DBMS_PDB.INSTALL_APP は12.1時代の方式であり、以降のバージョンでは不要・非推奨です。
📌 テキスト図:全体フロー
APP_ROOT
├─ ALTER PLUGGABLE DATABASE APPLICATION sales_app BEGIN INSTALL '1.0'
│ ├─ CREATE USER app_user IDENTIFIED BY oracle
│ ├─ GRANT CREATE SESSION, RESOURCE, UNLIMITED TABLESPACE TO app_user
│ ├─ CREATE TABLE app_user.app_sales ...
│ └─ CREATE VIEW app_user.app_sales_summary ...
└─ ALTER PLUGGABLE DATABASE APPLICATION sales_app END INSTALL
✅ まとめ
- アプリケーションの定義は、
BEGIN INSTALL~END INSTALLの間で記述 CREATE USERを含めて構成できるため、スキーマ単位でのアプリ管理が可能- 必要な権限は
CREATE SESSION+RESOURCE+UNLIMITED TABLESPACE DBMS_PDB.INSTALL_APPは不要(12.2以降では標準構文ではない)
[参考]
Oracle Multitenant 管理者ガイド 19c




コメント