2013年7月30日火曜日

OracleDB 12c 絵でPDB

ひさびさに、絵的なポストをしてみます。
Oracle DB 12c のプラガブルデータベース(PDB)です。


Oracle DB 12c から、プラガブル・データベースという仕組みができました。通称、PDBです。
コンテナ・データベース(CDB)に、いくつもPDBをプラグインすることができます。

CDBと、PDBは、それぞれ別のデータファイルを持ちます。



CDBには、PDBをプラグインすることができます。
新しいPDBを作成することもできますし、
他のコンテナで作成したPDBを外して(アンプラグして)もってきて、
プラグインすることもできます。



PDBは、それぞれ個別にクローズしたり、オープンしたりすることができます。
クローズしたPDBは、CDBから「アンプラグ」することができます。
PDBをアンプラグするとき、PDBの構成情報をXMLファイルに保存します。



アンプラグしたPDBを、別のCDBに「プラグイン」できます。
プラグインするときは、「plugin~」ではなく、「create pluggable database」です。

そのとき、アンプラグしたときに保存したXMLファイルを使用します。


クローズしただけのPDBは、再びオープンすることができますが、
アンプラグしたPDBは、もとのCDBではオープンできません。
いちど削除してあらためてプラグインすると、使用できるようになります。


PDBは一度 unplugするとOpenできない?

いちどアンプラグしたPDBは、そのままではオープンもクローズもできなくなります。

そのまま、もとのCDBで使用したい時は、
いったんアンプラグしたPDBを 削除(drop pluggable database) して、プラグインすると使用できます。
再びPDBをプラグインしたいときも、「create pluggable database」します。
※削除するとき、まちがってデータファイルを一緒に消さないように注意。

アンプラグしたPDBをオープンしようとすると、エラーになります。
SQL> alter pluggable database pdb2orcl
  2  unplug into '/u02/pdbxml/pdb2orcl.xml';

Pluggable database altered.

SQL> alter pluggable database pdb2orcl open;
alter pluggable database pdb2orcl open
*
ERROR at line 1:
ORA-65086: cannot open/close the pluggable database

マニュアルより。アンプラグしたPDBは、drop だけできます。
Oracle Database Error Messages
12c Release 1 (12.1)
http://docs.oracle.com/cd/E16655_01/server.121/e26079/e60000.htm
ORA-65086: cannot open/close the pluggable database
Cause: The pluggable database has been unplugged.
Action: The pluggable database can only be dropped.

以上、絵でPDBでした。

2013年7月28日日曜日

Oracle 12c プラガブルDB(PDB)をクローンしてみる

Oracle 12c のプラガブルDB(PDB)を、クローニングしてみました。

環境

OS: Oracle Linux Server release 6.2
DB: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0
    CDB名: orcl
        PDB1: pdborcl
        PDB2: pdb2orcl  ★このPDBを「pdb3orcl」としてクローニングします。

手順

まずコンテナDB(CDB)に接続します。
[oracle@sv12c1 ~]$ sqlplus sys/password@localhost/orcl as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Sun Jul 28 14:05:42 2013
Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT  ★CDBに接続している

クローン前の状態を確認しておきます。
SQL> col NAME for a10
SQL> select NAME,CON_ID,DBID,CON_UID,GUID from v$pdbs;

NAME           CON_ID       DBID    CON_UID GUID
---------- ---------- ---------- ---------- --------------------------------
PDB$SEED            2 4061795626 4061795626 E018B7BF835F1D45E043B505A8C05DDA
PDBORCL             3 2266308759 2266308759 E018DCC0D76D1FF1E043B505A8C0FC1F
PDB2ORCL            4 3206526558 3206526558 E075165AF1027BCCE043B505A8C08729
★クローン前のPDB一覧です。

SQL> set pagesize 15
SQL> col NAME for a60
SQL> select con_id, name, status from v$datafile order by 1,2;

    CON_ID NAME                                                         STATUS
---------- ------------------------------------------------------------ -------
         1 /u01/app/oracle/oradata/orcl/sysaux01.dbf                    ONLINE
         1 /u01/app/oracle/oradata/orcl/system01.dbf                    SYSTEM
         1 /u01/app/oracle/oradata/orcl/undotbs01.dbf                   ONLINE
         1 /u01/app/oracle/oradata/orcl/users01.dbf                     ONLINE
         2 /u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf            ONLINE
         2 /u01/app/oracle/oradata/orcl/pdbseed/system01.dbf            SYSTEM
         3 /u01/app/oracle/oradata/orcl/pdborcl/pdborcl_users01.dbf     ONLINE
         3 /u01/app/oracle/oradata/orcl/pdborcl/sysaux01.dbf            ONLINE
         3 /u01/app/oracle/oradata/orcl/pdborcl/system01.dbf            SYSTEM
         4 /u02/oradata/pdb2orcl/pdb2orcl_users01.dbf                   ONLINE
         4 /u02/oradata/pdb2orcl/sysaux01.dbf                           ONLINE
         4 /u02/oradata/pdb2orcl/system01.dbf                           SYSTEM

12 rows selected.  ★クローン前のデータファイル一覧です。

SQL> col NAME for a15
SQL> col NETWORK_NAME for a15
SQL> col PDB for a10
SQL> select SERVICE_ID,CON_ID,NAME,PDB,NETWORK_NAME from CDB_SERVICES order by 1,2;

SERVICE_ID     CON_ID NAME            PDB        NETWORK_NAME
---------- ---------- --------------- ---------- ---------------
         1          1 SYS$BACKGROUND  CDB$ROOT
         2          1 SYS$USERS       CDB$ROOT
         5          1 orclXDB         CDB$ROOT   orclXDB
         6          1 orcl            CDB$ROOT   orcl
         6          3 pdborcl         PDBORCL    pdborcl
         7          4 pdb2orcl        PDB2ORCL   pdb2orcl

6 rows selected.  ★クローン前のPDBサービス一覧です。


クローン元のPDBを読み取り専用でオープンします。
SQL> alter pluggable database pdb2orcl close;

Pluggable database altered.

SQL> alter pluggable database pdb2orcl open read only;

Pluggable database altered.

クローンします。
SQL> create pluggable database pdb3orcl from pdb2orcl
  2  file_name_convert = (
  3    '/u02/oradata/pdb2orcl/',
  4    '/u02/oradata/pdb3orcl/'
  5  )
  6  path_prefix = '/u02/oradata/pdb3orcl';

Pluggable database created.

読み取り専用にしていたクローン元のPDBを、オープンしなおします。
SQL> alter pluggable database pdb2orcl close;

Pluggable database altered.

SQL> alter pluggable database pdb2orcl open;

Pluggable database altered.

クローニングしたPDBを、オープンします。
SQL> alter pluggable database pdb3orcl open;

Pluggable database altered.

PDBがクローンされました。
SQL> col NAME for a10
SQL> select NAME,CON_ID,DBID,CON_UID,GUID from v$pdbs;

NAME           CON_ID       DBID    CON_UID GUID
---------- ---------- ---------- ---------- --------------------------------
PDB$SEED            2 4061795626 4061795626 E018B7BF835F1D45E043B505A8C05DDA
PDBORCL             3 2266308759 2266308759 E018DCC0D76D1FF1E043B505A8C0FC1F
PDB2ORCL            4 3206526558 3206526558 E075165AF1027BCCE043B505A8C08729
PDB3ORCL            5 2588836665 2588836665 E28C5FA5B84E7396E043B505A8C0D0A9

クローニングしたPDBのデータファイルが追加されました。
SQL> set pagesize 20
SQL> col NAME for a60
SQL> select con_id, name, status from v$datafile order by 1,2;

    CON_ID NAME                                                         STATUS
---------- ------------------------------------------------------------ -------
         1 /u01/app/oracle/oradata/orcl/sysaux01.dbf                    ONLINE
         1 /u01/app/oracle/oradata/orcl/system01.dbf                    SYSTEM
         1 /u01/app/oracle/oradata/orcl/undotbs01.dbf                   ONLINE
         1 /u01/app/oracle/oradata/orcl/users01.dbf                     ONLINE
         2 /u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf            ONLINE
         2 /u01/app/oracle/oradata/orcl/pdbseed/system01.dbf            SYSTEM
         3 /u01/app/oracle/oradata/orcl/pdborcl/pdborcl_users01.dbf     ONLINE
         3 /u01/app/oracle/oradata/orcl/pdborcl/sysaux01.dbf            ONLINE
         3 /u01/app/oracle/oradata/orcl/pdborcl/system01.dbf            SYSTEM
         4 /u02/oradata/pdb2orcl/pdb2orcl_users01.dbf                   ONLINE
         4 /u02/oradata/pdb2orcl/sysaux01.dbf                           ONLINE
         4 /u02/oradata/pdb2orcl/system01.dbf                           SYSTEM
         5 /u02/oradata/pdb3orcl/pdb2orcl_users01.dbf                   ONLINE
         5 /u02/oradata/pdb3orcl/sysaux01.dbf                           ONLINE
         5 /u02/oradata/pdb3orcl/system01.dbf                           SYSTEM

15 rows selected.

クローニングしたPDBのサービスも追加されました。
SQL> col NAME for a15
SQL> col NETWORK_NAME for a15
SQL> col PDB for a10
SQL> select SERVICE_ID,CON_ID,NAME,PDB,NETWORK_NAME from CDB_SERVICES order by 1,2;

SERVICE_ID     CON_ID NAME            PDB        NETWORK_NAME
---------- ---------- --------------- ---------- ---------------
         1          1 SYS$BACKGROUND  CDB$ROOT
         2          1 SYS$USERS       CDB$ROOT
         5          1 orclXDB         CDB$ROOT   orclXDB
         6          1 orcl            CDB$ROOT   orcl
         6          3 pdborcl         PDBORCL    pdborcl
         7          4 pdb2orcl        PDB2ORCL   pdb2orcl
         8          5 pdb3orcl        PDB3ORCL   pdb3orcl

7 rows selected.

クローニングしたPDBに接続できました。
SQL> conn system/password@localhost/pdb3orcl
Connected.
SQL> show con_name

CON_NAME
------------------------------
PDB3ORCL

以上、PDBのクローニングでした。

2013年7月21日日曜日

Oracle 12c プラガブルDB(PDB)をサーバ内でアンプラグ→プラグインしてみる

Oracle 12c のプラガブルDB(PDB)を、
同じサーバ内でアンプラグ(切断)→プラグ(再接続)してみました。

環境

OS: Oracle Linux Server release 6.2
DB: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0
    CDB名: orcl
        PDB1: pdborcl
        PDB2: pdb2orcl  ★このPDBをアンプラグ→プラグインします。
          ついでに、PDBの場所(データファイルのパス)を変更してみます。
           /u01/app/oracle/oradata/orcl/pdb2orcl/*.dbf
           ↓
           /u02/oradata/pdb2orcl/*.dbf


手順

PDBをアンプラグするときにXMLファイルを作成するので、
事前にディレクトリを作成しておきます。
[root@sv12c1 ~]# mkdir /u02/pdbxml
[root@sv12c1 ~]# chown oracle:dba /u02/pdbxml

コンテナデータベース(CDB)にログインします。
[oracle@sv12c1 ~]$ sqlplus sys/password@localhost/orcl as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Sat Jul 20 23:12:29 2013
Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT  ★CDBにログインしました

SQL> set pagesize 15
SQL> col NAME for a60
SQL> select con_id,name,status from v$datafile order by 1,2;
    CON_ID NAME                                                         STATUS
---------- ------------------------------------------------------------ -------
         1 /u01/app/oracle/oradata/orcl/sysaux01.dbf                    ONLINE
         1 /u01/app/oracle/oradata/orcl/system01.dbf                    SYSTEM
         1 /u01/app/oracle/oradata/orcl/undotbs01.dbf                   ONLINE
         1 /u01/app/oracle/oradata/orcl/users01.dbf                     ONLINE
         2 /u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf            ONLINE
         2 /u01/app/oracle/oradata/orcl/pdbseed/system01.dbf            SYSTEM
         3 /u01/app/oracle/oradata/orcl/pdborcl/pdborcl_users01.dbf     ONLINE
         3 /u01/app/oracle/oradata/orcl/pdborcl/sysaux01.dbf            ONLINE
         3 /u01/app/oracle/oradata/orcl/pdborcl/system01.dbf            SYSTEM
         4 /u01/app/oracle/oradata/orcl/pdb2orcl/pdb2orcl_users01.dbf   ONLINE
         4 /u01/app/oracle/oradata/orcl/pdb2orcl/sysaux01.dbf           ONLINE
         4 /u01/app/oracle/oradata/orcl/pdb2orcl/system01.dbf           SYSTEM
12 rows selected.

SQL> col NAME for a10
SQL> select NAME,CON_ID,DBID,CON_UID,GUID from v$pdbs;
NAME           CON_ID       DBID    CON_UID GUID
---------- ---------- ---------- ---------- --------------------------------
PDB$SEED            2 4061795626 4061795626 E018B7BF835F1D45E043B505A8C05DDA
PDBORCL             3 2266308759 2266308759 E018DCC0D76D1FF1E043B505A8C0FC1F
PDB2ORCL            4 3206526558 3206526558 E075165AF1027BCCE043B505A8C08729

SQL> col NAME for a15
SQL> col NETWORK_NAME for a15
SQL> col PDB for a10
SQL> select SERVICE_ID,CON_ID,NAME,PDB,NETWORK_NAME from CDB_SERVICES order by 1,2;
SERVICE_ID     CON_ID NAME            PDB        NETWORK_NAME
---------- ---------- --------------- ---------- ---------------
         1          1 SYS$BACKGROUND  CDB$ROOT
         2          1 SYS$USERS       CDB$ROOT
         5          1 orclXDB         CDB$ROOT   orclXDB
         6          1 orcl            CDB$ROOT   orcl
         6          3 pdborcl         PDBORCL    pdborcl
         7          4 pdb2orcl        PDB2ORCL   pdb2orcl
6 rows selected.

まず、アンプラグするPDB(pdb2orcl)をクローズしておきます。
SQL> alter pluggable database pdb2orcl close;
Pluggable database altered.

PDBをアンプラグします。
指定したXMLファイルに、PDBの構成情報が出力されます。
SQL> alter pluggable database pdb2orcl
  2  unplug into '/u02/pdbxml/pdb2orcl.xml';
Pluggable database altered.

アンプラグしたPDBを、同じ名前でプラグインするため
一度CDBからPDBを削除(DROP)します。
あとでプラグインするときに使用するため、このとき
PDBのデータファイルは削除しない(「including datafiles」を指定しない)ようにします。
SQL> drop pluggable database pdb2orcl;
Pluggable database dropped.

PDBをプラグインします。
実際は、アンプラグするときに作成したXMLファイルをもとに、
もう一度PDBを作成(create pluggable database)します。
「file_name_convert」 を指定すると、PDBのデータファイルが新しい場所にコピーされます。
※すでにデータファイルを新しい場所に配置してある場合は「nocopy」を指定します。
SQL> create pluggable database pdb2orcl
  2  using '/u02/pdbxml/pdb2orcl.xml'
  3  file_name_convert = (
  4   '/u01/app/oracle/oradata/orcl/pdb2orcl/',
  5   '/u02/oradata/pdb2orcl/'
  6  );
Pluggable database created.

PDBをオープンします。
これで、PDBにログインできるようになります。
SQL> alter pluggable database pdb2orcl open;
Pluggable database altered.

確認

プラグインしたPDBのデータファイルのパスが変更されました。
SQL> set pagesize 15
SQL> col NAME for a60
SQL> select con_id, name, status from v$datafile order by 1,2;
    CON_ID NAME                                                         STATUS
---------- ------------------------------------------------------------ -------
         1 /u01/app/oracle/oradata/orcl/sysaux01.dbf                    ONLINE
         1 /u01/app/oracle/oradata/orcl/system01.dbf                    SYSTEM
         1 /u01/app/oracle/oradata/orcl/undotbs01.dbf                   ONLINE
         1 /u01/app/oracle/oradata/orcl/users01.dbf                     ONLINE
         2 /u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf            ONLINE
         2 /u01/app/oracle/oradata/orcl/pdbseed/system01.dbf            SYSTEM
         3 /u01/app/oracle/oradata/orcl/pdborcl/pdborcl_users01.dbf     ONLINE
         3 /u01/app/oracle/oradata/orcl/pdborcl/sysaux01.dbf            ONLINE
         3 /u01/app/oracle/oradata/orcl/pdborcl/system01.dbf            SYSTEM
         4 /u02/oradata/pdb2orcl/pdb2orcl_users01.dbf                   ONLINE
         4 /u02/oradata/pdb2orcl/sysaux01.dbf                           ONLINE
         4 /u02/oradata/pdb2orcl/system01.dbf                           SYSTEM
12 rows selected.

データファイルは、create pluggable database の処理の中でコピーされました。
元の場所にも、データファイルは残っていました。
SQL> ! ls -lh /u01/app/oracle/oradata/orcl/pdb2orcl
合計 966M ★元の場所にもデータファイルが残っている。
-rw-r----- 1 oracle oinstall 5.1M  7月 21 14:33 2013 pdb2orcl_users01.dbf
-rw-r----- 1 oracle oinstall 691M  7月 21 14:33 2013 sysaux01.dbf
-rw-r----- 1 oracle oinstall 271M  7月 21 14:33 2013 system01.dbf

SQL> ! ls -lh /u02/oradata/pdb2orcl
合計 966M ★新たにプラグインしたPDBのデータファイル。
-rw-r----- 1 oracle oinstall 5.1M  7月 21 14:40 2013 pdb2orcl_users01.dbf
-rw-r----- 1 oracle oinstall 691M  7月 21 15:15 2013 sysaux01.dbf
-rw-r----- 1 oracle oinstall 271M  7月 21 15:15 2013 system01.dbf
-rw-r----- 1 oracle oinstall  21M  7月 21 15:00 2013 temp01.dbf

プラグインしたPDBのDBIDやGUIDは変わらないようです。
PDBをオープン(alter pluggable database ~open)することで、
CDB_SERVICES に追加されました。
SQL> col NAME for a10
SQL> select NAME,CON_ID,DBID,CON_UID,GUID from v$pdbs;
NAME           CON_ID       DBID    CON_UID GUID

---------- ---------- ---------- ---------- --------------------------------

PDB$SEED            2 4061795626 4061795626 E018B7BF835F1D45E043B505A8C05DDA
PDBORCL             3 2266308759 2266308759 E018DCC0D76D1FF1E043B505A8C0FC1F
PDB2ORCL            4 3206526558 3206526558 E075165AF1027BCCE043B505A8C08729

SQL> col NAME for a15
SQL> col NETWORK_NAME for a15
SQL> col PDB for a10
SQL> select SERVICE_ID,CON_ID,NAME,PDB,NETWORK_NAME from CDB_SERVICES order by 1,2;
SERVICE_ID     CON_ID NAME            PDB        NETWORK_NAME

---------- ---------- --------------- ---------- ---------------

         1          1 SYS$BACKGROUND  CDB$ROOT
         2          1 SYS$USERS       CDB$ROOT
         5          1 orclXDB         CDB$ROOT   orclXDB
         6          1 orcl            CDB$ROOT   orcl
         6          3 pdborcl         PDBORCL    pdborcl
         7          4 pdb2orcl        PDB2ORCL   pdb2orcl
6 rows selected.

プラグインしたPDBに接続できました。
SQL> conn system/password@localhost/pdb2orcl
Connected.

SQL> show con_name
CON_NAME
------------------------------
PDB2ORCL

以上、PDBのアンプラグとプラグインでした。

2013年7月15日月曜日

Oracle 12c プラガブル・データベースのRedoログファイル

Oracle 12c のコンテナ・データベース(CDB)とプラガブル・データベース(PDB)では、
Redoログファイルが共用されています。
今回は、sqlplusでDBインスタンスにログインして、Redoログファイルを見てみます。
DB構成は、前回と同様で、
CDB「orcl」に、PDB「pdborcl」と「pdb2orcl」が接続されています。

コンテナ・データベース: CDB$ROOT
                |-- プラガブル・データベース1: PDBORCL
                |-- プラガブル・データベース2: PDB2ORCL
※ホスト名はRACっぽいですが、シングル構成です

まず、PDBにログインしてRedoログファイルを見てみます。
[oracle@rac12c1 ~]$ sqlplus system/password@localhost/orcl
SQL*Plus: Release 12.1.0.1.0 Production on Mon Jul 15 14:56:11 2013
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Last Successful login time: Fri Jul 05 2013 06:32:42 +09:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT

SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/redo03.log
/u01/app/oracle/oradata/orcl/redo02.log
/u01/app/oracle/oradata/orcl/redo01.log
SQL> select GROUP#,SEQUENCE#,FIRST_CHANGE# from v$log;

    GROUP#  SEQUENCE# FIRST_CHANGE#
---------- ---------- -------------
         1        109       3582405
         2        110       3597487
         3        108       3559411 

1つめのPDBに接続してRedoログファイルを見てみると、
CDBと同じファイルを使用していることがわかります。
[oracle@rac12c1 ~]$ sqlplus system/password@localhost/pdborcl
SQL*Plus: Release 12.1.0.1.0 Production on Mon Jul 15 14:58:02 2013
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Last Successful login time: Mon Jul 15 2013 14:57:55 +09:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> show con_name
CON_NAME
------------------------------
PDBORCL

SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/redo03.log  ★CDBと同じRedoログファイル
/u01/app/oracle/oradata/orcl/redo02.log
/u01/app/oracle/oradata/orcl/redo01.log

SQL> select GROUP#,SEQUENCE#,FIRST_CHANGE# from v$log;
    GROUP#  SEQUENCE# FIRST_CHANGE#
---------- ---------- -------------
         1        109       3582405
         2        110       3597487
         3        108       3559411

2つめのPDB(PDB2ORCL)に接続してRedoログファイルを見てみると、
1つめのPDBと同様に、CDBと同じファイルを使用しています。
[oracle@rac12c1 ~]$ sqlplus system/password@localhost/pdb2orcl
SQL*Plus: Release 12.1.0.1.0 Production on Mon Jul 15 14:58:42 2013
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Last Successful login time: Mon Jul 15 2013 14:50:51 +09:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> show con_name
CON_NAME
------------------------------
PDB2ORCL

SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/redo03.log
/u01/app/oracle/oradata/orcl/redo02.log
/u01/app/oracle/oradata/orcl/redo01.log

SQL> select GROUP#,SEQUENCE#,FIRST_CHANGE# from v$log;
    GROUP#  SEQUENCE# FIRST_CHANGE#
---------- ---------- -------------
         1        109       3582405
         2        110       3597487
         3        108       3559411

ためしに、Redoログの切り替えをPDBで実施してみたところ、エラーになってしまいました。
Redoログファイルの切り替えは、プラガブル・データベース側では許可されていません。
SQL> show con_name
CON_NAME
------------------------------
PDB2ORCL

SQL> alter system switch logfile;
alter system switch logfile
*
ERROR at line 1:
ORA-65040: operation not allowed from within a pluggable database

Redoログの切り替えは、CDBにログインして実行します。
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT

SQL> alter system switch logfile;
System altered.  ★CDB側では、ログ切り替えができた。

以上、CDBとPDBのRedoログファイルでした。

2013年7月3日水曜日

Oracle 12c プラガブル・データベースのデータファイル構成について

Oracle 12c コンテナ・データベース(CDB)、プラガブル・データベース(PDB)の
データファイル構成を見てみました。

DB構成は、前回と同様で、
CDB「orcl」に、PDB「pdborcl」と「pdb2orcl」が接続されています。
コンテナ・データベース: CDB$ROOT
                |-- プラガブル・データベース1: PDBORCL
                |-- プラガブル・データベース2: PDB2ORCL

まず、CDBにsqlplusでログインして、データファイルを見てみます。
CDB(ROOT)から dba_data_files を見てみると、CDBのデータファイルしか見えません。
しかし、cdb_data_files を参照すれば、PDBのデータファイルも見えました。
[oracle@rac12c1 ~]$ sqlplus system/password@localhost/orcl
SQL*Plus: Release 12.1.0.1.0 Production on Wed Jul 3 02:11:57 2013
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Last Successful login time: Wed Jul 03 2013 02:11:07 +09:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> show con_id
CON_ID
------------------------------
1

SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT    ★CDB(コンテナ・データベース)にログイン中。

SQL> set pagesize 20
SQL> col file_name for a60
SQL> select file_name from dba_data_files order by 1;
FILE_NAME
------------------------------------------------------------
/u01/app/oracle/oradata/orcl/sysaux01.dbf   ★CDBのデータファイル(DBF)だけ見える
/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/users01.dbf

SQL> select con_id,file_name from cdb_data_files order by 1,2;
    CON_ID FILE_NAME
---------- ------------------------------------------------------------
         1 /u01/app/oracle/oradata/orcl/sysaux01.dbf   ★CDBのDBF
         1 /u01/app/oracle/oradata/orcl/system01.dbf
         1 /u01/app/oracle/oradata/orcl/undotbs01.dbf
         1 /u01/app/oracle/oradata/orcl/users01.dbf
         2 /u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf   ★SEEDDBのDBF
         2 /u01/app/oracle/oradata/orcl/pdbseed/system01.dbf
         3 /u01/app/oracle/oradata/orcl/pdborcl/pdborcl_users01.dbf   ★PDB1のDBF
         3 /u01/app/oracle/oradata/orcl/pdborcl/sysaux01.dbf
         3 /u01/app/oracle/oradata/orcl/pdborcl/system01.dbf

         4 /u01/app/oracle/oradata/orcl/pdb2orcl/pdb2orcl_users01.dbf  ★PDB2のDBF
         4 /u01/app/oracle/oradata/orcl/pdb2orcl/sysaux01.dbf
         4 /u01/app/oracle/oradata/orcl/pdb2orcl/system01.dbf

12 rows selected.

SQL> select TABLESPACE_NAME from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS


1つめのPDB「pdborcl」にログインしてみます。
PDBからは dba_data_files を見てみると、
CDBと同じように、ログイン中であるPDBのデータファイルしか見えません。
そして、cdb_data_files を参照しても、PDBのデータファイルしか見えませんでした。
(データファイルのパスに、「pdborcl」が含まれていることからわかります。)
[oracle@rac12c1 ~]$ sqlplus system/password@localhost/pdborcl
SQL*Plus: Release 12.1.0.1.0 Production on Wed Jul 3 02:16:08 2013
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Last Successful login time: Tue Jul 02 2013 07:51:18 +09:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> show con_id
CON_ID
------------------------------
3

SQL> show con_name
CON_NAME
------------------------------
PDBORCL   ★PDBにログイン中。

SQL> col file_name for a60
SQL> select file_name from dba_data_files order by 1;
FILE_NAME
------------------------------------------------------------
/u01/app/oracle/oradata/orcl/pdborcl/pdborcl_users01.dbf
/u01/app/oracle/oradata/orcl/pdborcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/pdborcl/system01.dbf

SQL> select con_id,file_name from cdb_data_files order by 1,2;
    CON_ID FILE_NAME
---------- ------------------------------------------------------------
         3 /u01/app/oracle/oradata/orcl/pdborcl/pdborcl_users01.dbf
         3 /u01/app/oracle/oradata/orcl/pdborcl/sysaux01.dbf
         3 /u01/app/oracle/oradata/orcl/pdborcl/system01.dbf

SQL> select TABLESPACE_NAME from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
TEMP
USERS

2つめのPDB「pdb2orcl」にログインしてみます。
こちらも、1つめPDBと同様、dba_data_files と cdb_data_files の
どちらを参照しても、ログイン中のPDBのデータファイルしか見えませんでした。
(データファイルのパスに、「pdb2orcl」が含まれていることからわかります。)
[oracle@rac12c1 ~]$ sqlplus system/password@localhost/pdb2orcl
SQL*Plus: Release 12.1.0.1.0 Production on Wed Jul 3 02:18:47 2013
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Last Successful login time: Tue Jul 02 2013 07:56:42 +09:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> show con_id
CON_ID
------------------------------
4

SQL> show con_name
CON_NAME
------------------------------
PDB2ORCL  ★2つめのPDBにログイン中。

SQL> col file_name for a60
SQL> select file_name from dba_data_files order by 1;
FILE_NAME
------------------------------------------------------------
/u01/app/oracle/oradata/orcl/pdb2orcl/pdb2orcl_users01.dbf
/u01/app/oracle/oradata/orcl/pdb2orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/pdb2orcl/system01.dbf

SQL> select con_id,file_name from cdb_data_files order by 1,2;
    CON_ID FILE_NAME
---------- ------------------------------------------------------------
         4 /u01/app/oracle/oradata/orcl/pdb2orcl/pdb2orcl_users01.dbf
         4 /u01/app/oracle/oradata/orcl/pdb2orcl/sysaux01.dbf
         4 /u01/app/oracle/oradata/orcl/pdb2orcl/system01.dbf

CDBでも、それぞれのPDBでも、
ユーザ用の領域(USERSのような)だけでなく
システム用の領域(SYSTEM や SYSAUX)を持っているように見えます。
それぞれ、データファイルも別に用意されていました。

以上、PDBのデータファイル構成についてでした。

2013年7月2日火曜日

Oracle 12c プラガブル・データベースにsqlplusで接続してみた。

Oracle 12c のプラガブル・データベースがどのように見えるのか気になったので
ためしに、作成したプラガブル・データベース(PDB)にsqlplusで接続してみました。


今回の構成は、下記のように、
1つのコンテナ・データベース(CDB)に
2つのプラガブル・データベースが接続されています。

コンテナ・データベース: CDB$ROOT
                |-- プラガブル・データベース1: PDBORCL
                |-- プラガブル・データベース2: PDB2ORCL

※ホスト名はRACっぽいですが、シングル構成です


まず、1つめのPDB「pdborcl」に接続して、DBユーザとテーブル作成してみます。
[oracle@rac12c1 ~]$ sqlplus system/password@localhost/pdborcl
SQL*Plus: Release 12.1.0.1.0 Production on Tue Jul 2 07:38:37 2013
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Last Successful login time: Tue Jul 02 2013 07:31:06 +09:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> show con_name
CON_NAME
------------------------------
PDBORCL  ★PDB「PDBORCL」にログインしている。

SQL> create user TEST_PDBORCL identified by pass_word;
User created.

SQL> grant connect,resource to TEST_PDBORCL;
Grant succeeded.

SQL> select username from dba_users where username = 'TEST_PDBORCL';
USERNAME
--------------------------------------------------------------------------------
TEST_PDBORCL

SQL> create table TEST_PDBORCL.TAB_PDBORCL(col1 varchar2(10));
Table created.
SQL> select table_name from dba_tables where table_name = 'TAB_PDBORCL';
TABLE_NAME
--------------------------------------------------------------------------------
TAB_PDBORCL

2つめのPDB「pdb2orcl」にsqlplus接続してみました。
1つめのPDBで作成したDBユーザとテーブルは、2つめのPDBからは見えません。
[oracle@rac12c1 ~]$ sqlplus system/password@localhost/pdb2orcl
SQL*Plus: Release 12.1.0.1.0 Production on Tue Jul 2 07:49:52 2013
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Last Successful login time: Tue Jul 02 2013 07:19:29 +09:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> show con_name
CON_NAME
------------------------------
PDB2ORCL

SQL> select username from dba_users where username = 'TEST_PDBORCL';
no rows selected    ★他のPDBで作成したDBユーザは見えていない

SQL> select table_name from dba_tables where table_name = 'TAB_PDBORCL';
no rows selected    ★他のPDBで作成したテーブルは見えていない

コンテナ・データベース(CDB$ROOT)に接続しても、PDBで作成したDBユーザとテーブルは見えません。
[oracle@rac12c1 ~]$ sqlplus system/password@localhost/orcl
SQL*Plus: Release 12.1.0.1.0 Production on Tue Jul 2 07:58:38 2013
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Last Successful login time: Tue Jul 02 2013 07:32:05 +09:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT

SQL> select username from dba_users where username = 'TEST_PDBORCL';
no rows selected    ★PDBで作成したDBユーザは見えていない

SQL> select table_name from dba_tables where table_name = 'TAB_PDBORCL';
no rows selected    ★PDBで作成したテーブルは見えていない

以上、ためしにプラガブル・データベースに接続してみました。

2013年7月1日月曜日

Oracle 12c のDBCAでプラガブル・データベースを作成してみた。

さっそく、Oracle Database 12cのプラガブル・データベースをDBCAで作成してみました。

DBCAを起動すると、
「プラガブル・データベースの管理」 というメニューが追加されています。


「プラガブル・データベースの作成」をしてみます。


もともと作成していたコンテナ・データベース(CDB)の「orcl」 に
追加でプラガブル・データベースを作成します。


「新規プラガブル・データベースの作成」を選択します。


プラガブル・データベース名は「pdb2orcl」にしてみました。


確認画面です。


プラガブル・データベース作成中。


完了しました。


同時に、正常に接続されたという、プラガブルらしいメッセージが表示されます。


EM Expressでは、下記のように表示されます。
すでに作成ずみのプラガブル・データベース「pdborcl」も表示されています。
「orcl」というコンテナ・データベースに、
2つのプラガブル・データベース(pdborcl と pdb2orcl)が接続されています。


以上、DBCAでのプラガブル・データベースの作成でした。