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のアンプラグとプラグインでした。

0 件のコメント:

コメントを投稿