コンテナ・データベース(CDB)からアンプラグして、
別のPDBにプラグインしてみます。
構成
- アンプラグ→プラグインするPDB: pdb3orcl
- アンプラグする元のCDB: orcl (サーバのホスト名は sv12c1 )
- プラグインする先のCDB: oradb (サーバのホスト名は sv12c00 )
- OSは、Oracle Linux Server release 6.2
CDBからアンプラグ
まず、ひとつめのCDB(CDB名:orcl)から、PDB(PDB名:pdb3orcl)をアンプラグします。
sqlplus で CDB「orcl」にログインします。
[oracle@sv12c1 ~]$ sqlplus sys/password@localhost/orcl as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Wed Jul 31 23:11:03 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 HOST_NAME for a10
SQL> select host_name,instance_name from v$instance;
HOST_NAME INSTANCE_NAME
---------- ----------------
sv12c1 orcl ★ひとつめのCDBです。
PDBを確認します。これからアンプラグするPDB「pdb3orcl」のCON_IDは 5 です。
SQL> col NAME for a10
SQL> select NAME,CON_ID,DBID,CON_UID from v$pdbs;
NAME CON_ID DBID CON_UID
---------- ---------- ---------- ----------
PDB$SEED 2 4061795626 4061795626
PDBORCL 3 2266308759 2266308759
PDB2ORCL 4 3206526558 3206526558
PDB3ORCL 5 2588836665 2588836665
赤字部分のデータファイルのファイルが、アンプラグ対象の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「pdb3orcl 」をクローズして、アンプラグします。
SQL> alter pluggable database pdb3orcl close;
Pluggable database altered.
SQL> alter pluggable database pdb3orcl
2 unplug into '/u02/pdbxml/pdb3orcl.xml';
Pluggable database altered.
ファイルを Tar + GZIP で圧縮して、別のCDBがあるサーバへ転送します。
PDBのデータファイルとXMLファイルを、両方とも転送しておきます。
[oracle@sv12c1 ~]$ cd /u02/oradata/
[oracle@sv12c1 oradata]$ ls -lh pdb3orcl
合計 976M
-rw-r----- 1 oracle oinstall 5.1M 7月 31 23:17 2013 pdb2orcl_users01.dbf
-rw-r----- 1 oracle oinstall 701M 7月 31 23:17 2013 sysaux01.dbf
-rw-r----- 1 oracle oinstall 271M 7月 31 23:17 2013 system01.dbf
-rw-r----- 1 oracle oinstall 21M 7月 31 14:00 2013 temp01.dbf
[oracle@sv12c1 oradata]$ tar zcvf pdb3orcl.tgz pdb3orcl
pdb3orcl/
pdb3orcl/pdb2orcl_users01.dbf
pdb3orcl/system01.dbf
pdb3orcl/sysaux01.dbf
pdb3orcl/temp01.dbf
[oracle@sv12c1 oradata]$ scp pdb3orcl.tgz /u02/pdbxml/pdb3orcl.xml sv12c00:/u02/dbdata/
oracle@sv12c00's password:
pdb3orcl.tgz 100% 196MB 48.9MB/s 00:04
pdb3orcl.xml 100% 3979 3.9KB/s 00:00
ふたつめのCDBにプラグイン
ふたつめのCDBがあるサーバで、PDBのデータファイルを展開します。
[oracle@sv12c00 ~]$ cd /u02/dbdata/
[oracle@sv12c00 dbdata]$ tar zxvf pdb3orcl.tgz
pdb3orcl/
pdb3orcl/pdb2orcl_users01.dbf
pdb3orcl/system01.dbf
pdb3orcl/sysaux01.dbf
pdb3orcl/temp01.dbf
CDB「oradb」にログインします。
[oracle@sv12c00 ~]$ sqlplus sys/password@localhost/oradb as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Wed Jul 31 23:57:10 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 HOST_NAME for a10
SQL> select host_name,instance_name from v$instance;
HOST_NAME INSTANCE_NAME
---------- ----------------
sv12c00 oradb ★ふたつめのCDBです。
こちらのCDBには、いまはPDBが1つだけあります。
SQL> col NAME for a10
SQL> select NAME,CON_ID,DBID,CON_UID from v$pdbs;
NAME CON_ID DBID CON_UID
---------- ---------- ---------- ----------
PDB$SEED 2 4064016361 4064016361
PDB1 3 3329097605 3329097605
CDB「orcl」からもってきたPDB「pdb3orcl」をプラグインします。
データファイルのパスが、もともとの場所とは違うので、
「source_file_name_convert」で指定変更しています。
そして、すでにデータファイルが指定の場所にあるので「nocopy」をつけています。
一時表領域用のファイルも一緒にもってきたので、
「tempfile reuse」を指定して、ファイル(今回は「temp01.dbf」)を再利用します。
SQL> create pluggable database pdb3orcl
2 using '/u02/dbdata/pdb3orcl.xml'
3 source_file_name_convert = (
4 '/u02/oradata/pdb3orcl/',
5 '/u02/dbdata/pdb3orcl/'
6 )
7 nocopy
8 tempfile reuse;
Pluggable database created.
PDBをオープンします。
オープンするときにエラーがあったと警告が表示されています。
プラグインしたPDBのデータファイルを認識しなおす過程で発生したもので、
問題ないのではないかと思われます。
※念のためアラートログ確認を忘れずに。
v$pdbs をみると、PDB「pdb3orcl」が追加されていることがわかります。
SQL> alter pluggable database pdb3orcl open;
Warning: PDB altered with errors.
SQL> col NAME for a10
SQL> select NAME,CON_ID,DBID,CON_UID from v$pdbs;
NAME CON_ID DBID CON_UID
---------- ---------- ---------- ----------
PDB$SEED 2 4064016361 4064016361
PDB1 3 3329097605 3329097605
PDB3ORCL 4 2588836665 2588836665
CON_IDが 4 のデータファイル(赤字の部分)がプラグインしたものです。
プラグインしたファイルはこちらのCDBは、OMF(Oracle Managed Files)なので
移行元のCDBとは、ファイル名の感じが違います・・・
SQL> set pagesize 40
SQL> col NAME for a45
SQL> select con_id, name, status from v$datafile order by 1,2;
CON_ID NAME STATUS
---------- --------------------------------------------- -------
1 /u01/app/oracle/oradata/ORADB/datafile/o1_mf_ ONLINE
sysaux_8yr7b481_.dbf
1 /u01/app/oracle/oradata/ORADB/datafile/o1_mf_ SYSTEM
system_8yr7dhjw_.dbf
1 /u01/app/oracle/oradata/ORADB/datafile/o1_mf_ ONLINE
undotbs1_8yr7h5to_.dbf
1 /u01/app/oracle/oradata/ORADB/datafile/o1_mf_ ONLINE
users_8yr7h4sn_.dbf
2 /u01/app/oracle/oradata/ORADB/datafile/o1_mf_ ONLINE
sysaux_8yr7jmkf_.dbf
2 /u01/app/oracle/oradata/ORADB/datafile/o1_mf_ SYSTEM
system_8yr7jmko_.dbf
3 /u01/app/oracle/oradata/ORADB/E20A461FD170438 ONLINE
DE0438C04A8C0ED68/datafile/o1_mf_sysaux_8yr85
pb5_.dbf
3 /u01/app/oracle/oradata/ORADB/E20A461FD170438 SYSTEM
DE0438C04A8C0ED68/datafile/o1_mf_system_8yr85
pfw_.dbf
3 /u01/app/oracle/oradata/ORADB/E20A461FD170438 ONLINE
DE0438C04A8C0ED68/datafile/o1_mf_users_8yr87p
0f_.dbf
4 /u02/dbdata/pdb3orcl/pdb2orcl_users01.dbf ONLINE
4 /u02/dbdata/pdb3orcl/sysaux01.dbf ONLINE
4 /u02/dbdata/pdb3orcl/system01.dbf SYSTEM
12 rows selected.
PDBへのログインもできます。
プラグイン先のCDBの方がPDB数が少なかったため、
CON_ID は減って 4 になりました。
SQL> conn system/password@localhost/pdb3orcl
Connected.
SQL> show con_name
CON_NAME
------------------------------
PDB3ORCL ★プラグインしたPDBにログインしている。
SQL> show con_id
CON_ID
------------------------------
4
以上、PDBを別のCDBへアンプラグ→プラグインしてみる話でした。
0 件のコメント:
コメントを投稿