はじめに
本記事は複数あるPDBの作成方法のひとつで、PDB$SEEDから新しいPDBを作成する方法の紹介になります。
CDB/PDBとは?という内容は弊社の技術ブログ「いまさら遅い?Oracle Databaseのコンテナ技術」を参照していただければと思います。
目次
1. PDB$SEEDとは
2. 前提条件
3. PDB$SEEDからの新規PDB作成
4. まとめ
5. 参考
1. PDB$SEEDとは
PDB$SEEDとは、PDBが作成される際の初期テンプレートです。
CREATE PLUGGABLE DATABASE コマンドの実行でPDB$SEEDの内容がコピーされ新しいPDBが作成されます。
また、作成したPDBはPDB$SEEDのコピーであるため必要に応じて各種設定が必要になります。(本記事では割愛します。)
PDB$SEEDは、CDBを作成すると自動的に1つ作成され、読み取り専用として扱われるためシードへのオブジェクトの追加やシード内のオブジェクトの変更は実行できません。
2.前提条件
検証環境でPDB$SEEDをもとに新規PDBを作成します。
バージョンは以下の通りです。
・OSバージョン
Oracle Linux Server release 8.7
・Oracle database version
Oracle Database 23c
この記事では簡単なコマンドや設定のみを使用しています。より詳しいPDB作成のための条件や使用できる設定は製品マニュアルをご参照ください。
参考の欄にマニュアル名を記載してあります。
※Oracle Database 23 Freeについて 開発者向けに無償で提供されている製品です。 ・有償のサポート、パッチは提供されていません。 ・稼働リソース制限は以下となります - 最大 2 つの CPU スレッド その他の詳細情報は参照記載(Database Licensing Information User Manual )を参照してください。 |
3.PDB$SEEDからの新規PDB作成
1.SQL*Plus で Oracle (ルート・コンテナ)に接続します。
[oracle@23c ~]$ echo $ORACLE_SID
FREE
[oracle@23c ~]$ sqlplus / as sysdba
SQL*Plus: Release 23.0.0.0.0 - Production on 金 10月 24 14:37:14 2023
Version 23.4.0.23.00Copyright (c) 1982, 2023, Oracle. All rights reserved.
Oracle Database 23c Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.3.0.23.09
に接続されました
2.ルート・コンテナに接続されていること、作成するPDBが存在しないことを確認します。
今回、作成予定のPDB名は「TEST」です。
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOTSQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 FREEPDB1 READ WRITE NO
3.新規作成の際にPDB$SEED のデータファイルのパスが必要になるのでPDB$SEED に接続します。
SQL> alter session set container=PDB$SEED;
セッションが変更されました。
SQL> show con_name
CON_NAME
------------------------------
PDB$SEED
4.PDB$SEED のデータファイルのパスを確認します。
(PDB作成で必要となるためメモしておくとよいです。)
SQL> select file_name from dba_data_files;
FILE_NAME
----------------------------------------------------------------------------------------------------
/opt/oracle/oradata/FREE/pdbseed/undotbs01.dbf
/opt/oracle/oradata/FREE/pdbseed/system01.dbf
/opt/oracle/oradata/FREE/pdbseed/sysaux01.dbf
5.PDBの作成のためルート・コンテナに切り替えます。
SQL> alter session set container=CDB$ROOT ;
セッションが変更されました。SQL> show con_name;
CON_NAME
------------------------------
CDB$ROOT
6.PDB$SEED をから新しい PDB「TEST」を作成します。
PDB$SEEDからのPDB作成ではadminユーザとそのパスワードを指定する必要があります。
またこの例では、新規PDBのデータファイルのパスを指定するため「file_name_convert=('/PDB$SEEDパス/','/新規作成PDBパス/')」も使用しています。
(PDB$SEEDパスは項目4で確認したパスです。新規パスは /opt/oracle/oradata/TEST/ としてます。)
SQL> create pluggable database TEST admin user pdbadmin identified by oracle file_name_convert=('/opt/oracle/oradata/FREE/pdbseed/','/opt/oracle/oradata/TEST/');
プラガブル・データベースが作成されました。
7.作成したPDBが存在していることを確認します。
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 FREEPDB1 READ WRITE NO
4 TEST MOUNTED
8.作成したPDBのデータファイルを確認します。
SQL> !ls -l /opt/oracle/oradata/TEST
合計 706640
-rw-r-----. 1 oracle oinstall 325066752 10月 27 16:30 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 293609472 10月 27 16:30 system01.dbf
-rw-r-----. 1 oracle oinstall 20979712 10月 27 16:30 temp01.dbf
-rw-r-----. 1 oracle oinstall 104865792 10月 27 16:30 undotbs01.dbf
9.作成直後のPDBは「MOUNT」モードです。
作成操作を完了させるため一度「READ/WRITE」モードでオープンします。
SQL> alter pluggable database TEST open;
プラガブル・データベースが変更されました。
10.変更後の確認し「OPEN_MODE」が「READ/WRITE」になっていることを確認します。
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 FREEPDB1 READ WRITE NO
4 TEST READ WRITE NO ★ OPEN_MODEがMOUNTEDではなくなった
これで実際にPDBを作成することができました。
4.まとめ
以上、PDB$SEEDからPDBの作成方法の紹介でした。
作成したPDBはPDB$SEEDの設定を引き継ぐため、作成後必要に応じて設定変更してください。