前回のおさらい

こんにちは。プラチナホルダー浜辺です。
前回はPDBの自動起動をお伝えしました。

本ビジネスブログの右側の「最新の投稿」の下にある
カテゴリー > [連載]マルチテナント
から確認できます。

こちらに更新していきますので、宜しくお願いします。

PDBの作成方法

皆様、お待たせしました。
第5回目にして、ようやくPDB作成方法のご紹介です!

敢えて基本操作を先にご紹介したのは、PDB作成にあたって、CDB/PDBへの接続切替や起動停止が発生するためです。

と言うことで、上記基本操作も今回出てきますので、「基本操作を忘れた・分からない」「まだ読んでない」という方は過去回も含めて読んでいただけますと幸いです。

それでは、はじめていきたいと思います!

今回はPDBの新規作成を目的に、最もポピュラーな「シードを使用したPDBの作成」方法をご紹介します。 

クローニングやプラグインの方法については、別の回にて紹介しますね。

引用元)
Oracle® Database管理者ガイド  12cリリース2 (12.2)      38 SQL*Plusを使用したPDBの作成および削除
https://docs.oracle.com/cd/E82638_01/ADMIN/creating-and-removing-pdbs-with-sql-plus.htm

PDBの作成

それでは、” SAMPLE ” というPDBを作成してみましょう!

DBCAからも作成可能ですが、今回もこれまで同様コマンドにて操作していきます。
はじめに、CDBに接続します。

[oracle@12r2db1 /]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on 火 5月 22 00:46:48 2018

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
に接続されました。

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT

 

次に、作成するPDBの元のなるシードのデータファイルの位置を確認します。

SQL> alter session set container=PDB$SEED;

セッションが変更されました。

SQL> select file_name from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/product/12.2.0.1/oradata/test122cdb/pdbseed/system01.dbf
/u01/app/oracle/product/12.2.0.1/oradata/test122cdb/pdbseed/sysaux01.dbf
/u01/app/oracle/product/12.2.0.1/oradata/test122cdb/pdbseed/undotbs01.dbf

Hmmm…… 結構、階層が深くなってしまってますね…

が、それは置いておいて~

再び、CDBに接続します。

SQL> conn / as sysdba
接続されました。

 

シードと別のフォルダに” sample “PDBのデータファイルを配置するので事前にフォルダを作成しておきます。

SQL> !mkdir /u01/app/oracle/product/12.2.0.1/oradata/test122cdb/sample

 

いよいよ、PDB作成です!

SQL> create pluggable database sample admin user sample_adm identified by sample_adm
    file_name_convert = ('/u01/app/oracle/product/12.2.0.1/oradata/test122cdb/pdbseed/',
     '/u01/app/oracle/product/12.2.0.1/oradata/test122cdb/sample/');

プラガブル・データベースが作成されました。

ものの数分で出来上がりました!

え!?これだけ!!!という方もいるかと思います。
この手軽に作成できるのもPDB利用の魅了の一つです。

念のため、DBファイルが作成されているか 等を確認していきたいと思います。

SQL> ! ls -l /u01/app/oracle/product/11.2.0.4/oradata/test122cdb/sample/
合計 696408
-rw-r----- 1 oracle oinstall 346038272  5月 22 01:09 2018 sysaux01.dbf
-rw-r----- 1 oracle oinstall 262152192  5月 22 01:09 2018 system01.dbf
-rw-r----- 1 oracle oinstall  67117056  5月 22 01:09 2018 temp012018-02-28_14-20-42-159-PM.dbf
-rw-r----- 1 oracle oinstall 104865792  5月 22 01:09 2018 undotbs01.dbf

うん、バッチリ!

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 TEST122PDB                     READ WRITE NO
         4 TEST122PDB2                    READ WRITE NO
         5 SAMPLE                         MOUNTED

おお、PDB作成直後はMOUNT状態なのですね!

起動できるか試してみましょう。

SQL> alter pluggable database SAMPLE open;

プラガブル・データベースが変更されました。

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 TEST122PDB                     READ WRITE NO
         4 TEST122PDB2                    READ WRITE NO
         5 SAMPLE                         READ WRITE NO

問題なく起動できましたね!

シードにはPDBの新規作成にて使用する情報が全てテンプレートとして格納されているので、シードの情報を元に新規PDBが簡単に作成できます。

なお、上記については、マルチテナントとは?でもご紹介しておりますので、宜しければ確認して下さいね。

以上で、PDB作成方法の紹介は終わりです。

いかがでしたでしょうか?
やってみると以外とマルチテナントって簡単ですよね!

次回は何をご紹介しようかなぁ…?ネ、ネタ切れ?

いつもと変わりのない締めとなりますが…
乞うご期待!!!

投稿者プロフィール

技術チーム
技術チーム
DBひとりでできるもんを盛り上げるべく、技術チームが立ち上がり早6年。ひとりでできるもんと言いつつ、技術者が読んでプッとなるような、極めてピンポイントでマニアックな技術ネタを執筆しています!