きさま!見ているなッ!!

【Oracle】プラガブル・データベース(PDB)を作成する

  • 2019-09-02
  • 2019-09-05
  • Oracle

マルチテナント・コンテナ・データベース(CDB)にプラガブル・データベース(PDB)を作成する手法としては、下記の通り、いくつかあります。

・シードを使用したPDBの作成

・既存のPDBまたはCDB以外のクローニングによるPDBの作成

・異なるCDBへの再配置によるPDBの作成

・CDBへの切断されたPDBの接続によるPDBの作成

・プロキシPDBとしてのPDBの作成

・非CDBを使用したPDBの作成

引用元:PDBを作成する手法

今回は、「シードを使用した PDB の作成」をご紹介します。

環境

環境情報です。

OSRDBMS
CentOS 7.6Oracle Database 12c R2 Enterprise Edition

CDB の情報です。

データベース名CDB
データベースタイプ単一インスタンス
アーキテクチャマルチテナント
データベース記憶域ローカル・ストレージ
高速リカバリ領域ローカル・ストレージ

今回作成する CDB コンポーネントの情報です。

コンポーネント名タイプ説明
PDBPDBユーザーが作成するデータベース。プラガブル・データベース。複数作成可能。

CDB の作成については、こちらの記事をどうぞ。

データベース作成

環境変数の設定

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
export ORACLE_HOSTNAME=testdb.oracle12c.jp
export ORACLE_SID=cdb

必要な環境変数を設定します。

環境変数設定値説明
ORACLE_BASE/u01/app/oracleOracleディレクトリ・ツリーのルート
ORACLE_HOME/u01/app/oracle/product/12.2.0/dbhome_1Oracleソフトウェアのインストール先
ORACLE_HOSTNAMEtestdb.oracle12c.jpPCのホスト名
ORACLE_SIDcdbインスタンス識別子(SID)

CDBルートに接続

$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on 月 9月 2 02:51:01 2019

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



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

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

SQL> 

現在のコンテナが CDB ルートであることを確認します。

初期化パラメータの確認

SQL> show parameter DB_CREATE_FILE_DEST

NAME                     TYPE      VALUE
------------------------ --------- --------
db_create_file_dest      string

SQL> 
SQL> show parameter PDB_FILE_NAME_CONVERT

NAME                     TYPE      VALUE
------------------------ --------- --------
pdb_file_name_convert    string

SQL> 

PDB のファイル作成場所・方法(OMF 使用可否)の設定を確認します。今回は、「FILE_NAME_CONVERT 句」を使用して PDB を作成するので、上記は未設定で構いません。

データベース(PDB)作成

SQL> CREATE PLUGGABLE DATABASE pdb1 ADMIN USER pdb1adm IDENTIFIED BY oracle
  2  FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/pdbseed/', '/u01/app/oracle/oradata/pdb1/')
  3  ;

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

SQL> 

CREATE PLUGGABLE DATABASE 文を使用して、CDB シードから PDB を作成します。FILE_NAME_CONVERT 句により、/u01/app/oracle/oradata/pdbseed/ から /u01/app/oracle/oradata/pdb1/ にファイルがコピーされます。

PDB名pdb1
PDBローカル管理者pdb1adm
PDBのデータファイルの場所/u01/app/oracle/oradata/pdb1/

データベース(PDB)をオープンする

SQL> set lin 1000
SQL> set pages 100
SQL> col name for a30
SQL> SELECT name, open_mode FROM v$pdbs;

NAME                           OPEN_MODE
------------------------------ ------------------------------
PDB$SEED                       READ ONLY
PDB1                           MOUNTED

SQL> 

作成したばかりの PDB は、マウント状態です。

SQL> ALTER PLUGGABLE DATABASE pdb1 OPEN;

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

SQL> 
SQL> SELECT name, open_mode FROM v$pdbs;

NAME                           OPEN_MODE
------------------------------ ------------------------------
PDB$SEED                       READ ONLY
PDB1                           READ WRITE

SQL> 

読取り/書込みモードでオープンしましょう。

PDBに接続

SQL> ALTER SESSION SET CONTAINER = pdb1;

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

SQL> show con_name

CON_NAME
------------------------------
PDB1

SQL> 

PDB に接続して、確認作業をします。

データベース確認

V$PDBS

SQL> set lin 1000
SQL> col name for a20
SQL> col open_mode for a15
SQL> SELECT name, open_mode FROM v$pdbs;

NAME                 OPEN_MODE
-------------------- ---------------
PDB1                 READ WRITE

SQL>

読取り/書込みモードでオープンしています。

V$CONTAINERS

SQL> set lin 1000
SQL> col name for a10
SQL> SELECT name, con_id FROM v$containers ORDER BY con_id;

NAME       CON_ID
---------- ----------
PDB1       3

SQL> 

PDB コンポーネントが作成されています。

V$DATAFILE

SQL> set lin 1000
SQL> col enabled for a10
SQL> col name for a50
SQL> SELECT file#, status, enabled, bytes, name, con_id
  2  FROM v$datafile
  3  ORDER BY con_id, file#
  4  ;

     FILE# STATUS                ENABLED    BYTES      NAME                                               CON_ID
---------- --------------------- ---------- ---------- -------------------------------------------------- ----------
        10 SYSTEM                READ WRITE  209715200 /u01/app/oracle/oradata/pdb1/system01.dbf          3
        11 ONLINE                READ WRITE  157286400 /u01/app/oracle/oradata/pdb1/sysaux01.dbf          3
        12 ONLINE                READ WRITE  225443840 /u01/app/oracle/oradata/pdb1/undotbs01.dbf         3
        13 ONLINE                READ WRITE  524288000 /u01/app/oracle/oradata/pdb1/users01.dbf           3
        14 ONLINE                READ WRITE  314572800 /u01/app/oracle/oradata/pdb1/usertbs01.dbf         3

SQL> 

PDB コンポーネントのデータ・ファイル情報が確認できます。

CDB_TABLESPACES

SQL> set lin 1000
SQL> set null @
SQL> col tablespace_name for a20
SQL> col status for a10
SQL> col contents for a10
SQL> SELECT tablespace_name, block_size, initial_extent, next_extent, min_extents, max_extents, max_size, status, contents
  2  FROM cdb_tablespaces
  3  ORDER BY tablespace_name
  4  ;

TABLESPACE_NAME      BLOCK_SIZE INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS MAX_SIZE   STATUS     CONTENTS
-------------------- ---------- -------------- ----------- ----------- ----------- ---------- ---------- ----------
SYSAUX                     8192          65536 @                     1  2147483645 2147483645 ONLINE     PERMANENT
SYSTEM                     8192          65536 @                     1  2147483645 2147483645 ONLINE     PERMANENT
TEMPTS1                    8192        1048576     1048576           1 @           2147483645 ONLINE     TEMPORARY
UNDOTBS1                   8192          65536 @                     1  2147483645 2147483645 ONLINE     UNDO
USERS                      8192          65536 @                     1  2147483645 2147483645 ONLINE     PERMANENT
USERTBS                    8192          65536 @                     1  2147483645 2147483645 ONLINE     PERMANENT

6行が選択されました。

SQL> 

PDB の表領域情報が確認できます。

CDB_TEMP_FILES

SQL> set lin 1000
SQL> col con_id for 999
SQL> col file_id for 9999
SQL> col tablespace_name for a15
SQL> col file_name for a45
SQL> col maxbytes for 999999999999
SQL> SELECT con_id, file_id, tablespace_name, file_name, bytes, status, maxbytes, user_bytes
  2  FROM cdb_temp_files
  3  ORDER BY con_id
  4  ;

CON_ID FILE_ID TABLESPACE_NAME FILE_NAME                                     BYTES      STATUS     MAXBYTES      USER_BYTES
------ ------- --------------- --------------------------------------------- ---------- ---------- ------------- ----------
     3       3 TEMPTS1         /u01/app/oracle/oradata/pdb1/temp01.dbf         52428800 ONLINE       34359721984   51380224

SQL> 

PDB の一時ファイル情報が確認できます。

まとめ

CDB シード(テンプレート)を使用して、簡単に PDB を作成することができます。作成したばかりの PDB は、マウント状態なので注意が必要ですね。

他の PDB を作成する手法については、別の機会にご紹介したいと思います。

【Oracle】プラガブル・データベース(PDB)を作成する
最新情報をチェックしよう!