PDB$SEEDからのクローンでPDB02を作成する完全ガイド

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

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 USERPDB内に作成される管理者ユーザー名(C##は不要)
IDENTIFIED BY管理者ユーザーのパスワード
FILE_NAME_CONVERTpdbseedという文字列を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の作成および構成

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

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

コメント

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