Oracleのマルチテナント構成では、PDB$SEEDからクローンしてPDBを作成する方法がもっとも基本かつ実用的です。本記事では、PDB02を作成する手順を初心者にもわかりやすく、コマンドレベルで丁寧に解説します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
🔰 PDB$SEEDとは?
OracleがCDBを作成したときに自動的に生成する、読み取り専用のテンプレートPDBです。
新規PDB作成時には、これをクローンすることで短時間でデータベースを構築できます。
┌────────────┐
│ CDB │
├────┬──────────┬──────────┤
│ROOT│PDB$SEED │PDB02 │
└────┴──────────┴──────────┘
↑
クローン元
✅ PDB作成に必要な前提条件
| 項目 | 内容 |
|---|---|
| 接続ユーザー | SYSDBA権限を持つユーザー(例:SYS) |
| 接続先 | CDB$ROOT |
| データファイル確認 | FILE_NAME_CONVERT指定のため、PDB$SEEDのファイルパス確認が必要 |
📂 PDB$SEEDのデータファイルパス確認手順
以下の手順で、PDB$SEEDのデータファイルディレクトリを確認します。
-- 現在のPDB一覧を確認
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB01 READ WRITE NO
-- PDB$SEEDに切り替え
SQL> alter session set container=pdb$seed;
セッションが変更されました。
-- 現在のコンテナを確認
SQL> show con_name;
CON_NAME
------------------------------
PDB$SEED
-- データファイルパスを確認
SQL> select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/V19M/pdbseed/system01.dbf
/u01/app/oracle/oradata/V19M/pdbseed/sysaux01.dbf
/u01/app/oracle/oradata/V19M/pdbseed/undotbs01.dbf
このディレクトリパス /u01/app/oracle/oradata/V19M/pdbseed/ をベースにして、pdb02用にファイルを配置するディレクトリを指定します。
🛠 PDB02の作成(FILE_NAME_CONVERT使用)
PDBの作成はCDB$ROOTから実行します。
SQL> CREATE PLUGGABLE DATABASE pdb02
ADMIN USER admin IDENTIFIED BY oracle
FILE_NAME_CONVERT=('pdbseed','pdb02');
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> CREATE PLUGGABLE DATABASE pdb02
2 ADMIN USER admin IDENTIFIED BY oracle
3 FILE_NAME_CONVERT=('pdbseed','pdb02');
プラガブル・データベースが作成されました。
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB01 READ WRITE NO
4 PDB02 MOUNTED ★作成された
🔍 各句の意味
| 句 | 説明 |
|---|---|
ADMIN USER | PDB内に作成される管理者ユーザー名(C##は不要) |
IDENTIFIED BY | 管理者ユーザーのパスワード |
FILE_NAME_CONVERT | pdbseedという文字列をpdb02に置換し、ファイルをコピー |
🔸
FILE_NAME_CONVERTはファイルパスの一部に「pdbseed」が含まれていることが前提です。/u01/app/oracle/oradata/V19M/pdbseed/→/u01/app/oracle/oradata/V19M/pdb02/に変換されます。
▶ PDB02をOPEN状態にする
作成直後のPDBはMOUNT状態です。使用できるようにするにはOPENが必要です。
ALTER PLUGGABLE DATABASE pdb02 OPEN;
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
📋 作成後の確認
-- PDBの一覧表示
SHOW PDBS;
-- PDB02に接続して確認
ALTER SESSION SET CONTAINER = pdb02;
-- 現在のコンテナ名を表示
SHOW CON_NAME;
-- 管理ユーザーが存在するか確認
SELECT username FROM dba_users WHERE username = 'ADMIN';
⚠ よくあるエラーと対処法
| エラー | 内容 | 対処法 |
|---|---|---|
| ORA-65096 | ユーザー名が無効 | ADMINのようにローカルユーザー名にする(C##不要) |
| ORA-65010 | パスが存在しない | FILE_NAME_CONVERTの指定を見直す |
| ORA-65048 | ファイル名が競合 | pdb02フォルダを事前に削除 or ファイル名を変更 |
💡 補足:自動ファイル配置を使う方法(参考)
DB_CREATE_FILE_DESTを事前に設定すれば、パス指定不要で作成可能です:
ALTER SYSTEM SET DB_CREATE_FILE_DEST='/u01/app/oracle/oradata/V19M/pdb02';
CREATE PLUGGABLE DATABASE pdb02
ADMIN USER admin IDENTIFIED BY oracle;
✅ まとめ
PDB$SEEDからのクローンは、最もシンプルで確実なPDB作成手法です。特に検証やテスト用の環境構築に非常に有効です。
✔ ポイント
FILE_NAME_CONVERTはファイル名の一括置換- 作成後は必ずOPEN状態に変更
- パスの確認にはPDB$SEEDのファイルパス調査が重要
[参考]
4 CDBの作成および構成




コメント