~バージョン1.0から1.1への変更とSYNCによる反映~
Oracle Multitenant構成では、アプリケーション・コンテナ(Application Container)に定義されたアプリケーションをバージョン管理付きでアップグレードすることができます。アプリケーションのアップグレードには、テーブル定義の変更だけでなく、データ挿入(INSERT)による初期データの展開も含まれます。
この記事では、sales_app アプリケーションを バージョン1.0 → 1.1 にアップグレードし、APP_ROOTでデータをINSERTしたのち、APP_PDBに同期する手順を紹介します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
✅ 前提条件
- Oracle Database 12.2以降
- APP_ROOTに
sales_appバージョン1.0 がインストール済み APP_USERスキーマにAPP_SALESテーブルが存在するAPP_PDB01はsales_appを同期済みの状態
1. APP_ROOTでアプリケーションのアップグレードを開始
1.1 APP_ROOTに接続
ALTER SESSION SET CONTAINER = app_root;
SHOW CON_NAME;
-- → APP_ROOT
1.2 アップグレードの開始
ALTER PLUGGABLE DATABASE APPLICATION sales_app BEGIN UPGRADE '1.0' TO '1.1';
✅ バージョン1.0から1.1へのアップグレード処理を開始します。
TO '1.1'によって、アップグレード先バージョンが明示されます。
2. テーブルへの初期データINSERT
ここでは、APP_USER.APP_SALES テーブルに2件のデータを登録します。
INSERT INTO app_user.app_sales (sale_id, product, amount, sale_date)
VALUES (1, 'ノートパソコン', 150000, SYSDATE);
INSERT INTO app_user.app_sales (sale_id, product, amount, sale_date)
VALUES (2, 'プリンター', 35000, SYSDATE);
💡 このINSERTは、APP_PDBにはまだ反映されていません。
END UPGRADEによりバージョン1.1として登録された後、SYNCによって配布されます。
3. アップグレードの完了
ALTER PLUGGABLE DATABASE APPLICATION sales_app END UPGRADE;
✅ これにより、
sales_appバージョン1.1がAPP_ROOTに正式登録されます。
4. APP_PDBでの同期実行
4.1 APP_PDBに接続
ALTER SESSION SET CONTAINER = app_pdb01;
SHOW CON_NAME;
-- → APP_PDB01
4.2 SYNCの実行
ALTER PLUGGABLE DATABASE APPLICATION sales_app SYNC;
✅ これにより、APP_PDB内にINSERTされたデータが反映されます。
5. データ反映の確認
SELECT * FROM app_user.app_sales;
出力例:
SALE_ID PRODUCT AMOUNT SALE_DATE
------- -------------- ------- -------------------
1 ノートパソコン 150000 2025-05-18
2 プリンター 35000 2025-05-18
SQL> ALTER SESSION SET CONTAINER = app_root;
セッションが変更されました。
SQL> show con_name
CON_NAME
------------------------------
APP_ROOT
SQL> ALTER PLUGGABLE DATABASE APPLICATION sales_app BEGIN UPGRADE '1.0' to '1.1';
プラガブル・データベースが変更されました。
SQL> INSERT INTO app_user.app_sales (sale_id, product, amount, sale_date)
2 VALUES (1, 'ノートパソコン', 150000, SYSDATE);
1行が作成されました。
SQL> INSERT INTO app_user.app_sales (sale_id, product, amount, sale_date)
2 VALUES (2, 'プリンター', 35000, SYSDATE);
1行が作成されました。
SQL> ALTER PLUGGABLE DATABASE APPLICATION sales_app END UPGRADE;
プラガブル・データベースが変更されました。
SQL> ALTER SESSION SET CONTAINER = app_pdb01;
セッションが変更されました。
SQL> show con_name
CON_NAME
------------------------------
APP_PDB01
SQL> ALTER PLUGGABLE DATABASE APPLICATION sales_app SYNC;
プラガブル・データベースが変更されました。
SQL> set lin 1000 pages 1000
SQL> col product for a30
SQL> SELECT * FROM app_user.app_sales;
SALE_ID PRODUCT AMOUNT SALE_DAT
---------- ------------------------------ ---------- --------
1 ノートパソコン 150000 25-05-18
2 プリンター 35000 25-05-18
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
📌 テキスト図:今回の処理の流れ
APP_ROOT
├─ sales_app v1.0
├─ BEGIN UPGRADE '1.0' TO '1.1'
│ └─ INSERT INTO app_sales ...
└─ END UPGRADE → v1.1確定
APP_PDB01
└─ SYNC 実行 → INSERTデータ反映
✅ まとめ
| 操作内容 | コマンド例 |
|---|---|
| アップグレード開始 | ALTER PLUGGABLE DATABASE APPLICATION sales_app BEGIN UPGRADE '1.0' TO '1.1'; |
| データINSERT | INSERT INTO app_sales ... |
| アップグレード完了 | ALTER PLUGGABLE DATABASE APPLICATION sales_app END UPGRADE; |
| 同期(反映) | ALTER PLUGGABLE DATABASE APPLICATION sales_app SYNC; |
[参考]
Oracle Multitenant 管理者ガイド 19c




コメント