概要
オンプレミス環境に作っているOracle Datatabase 12c環境から、Database Cloud Serviceへプラガブル・データベースを移動し、クラウド上に同一データ環境を再現してみます。
プラガブル・データベースとは
Oracle Database 12cには**プラガブル・データベース(以降、PDB)**と呼ぶ機能があります。
これは、データベース内に仮想的にデータベースを構成する機能で、この仮想的なデータベースの事がPDBです。
PDBは、複数のPDB間でメモリ領域やプロセス、制御ファイルなどを共有します。そしてPDB単位で移動(プラグ/アンプラグ)する事が可能です。
- Oracle公開資料より引用
移動対象のプラガブル・データベース
オンプレミスに構成済みのプラガブル・データベースを確認してみます。
プラガブル・データベース一覧
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB READ WRITE NO
PDBという名前のプラガブル・データベースがあります。
テーブル一覧
PDBに接続して構成済みのテーブルを確認してみます。
[oracle@db01 ~]$ sqlplus medrec/medrec@localhost:1521/pdb.jp.oracle.com
select table_name, tablespace_name, status from user_tables;
TABLE_NAME TABLESPACE_NAME STATUS
---------------------- -------------------- --------
ADMINISTRATORS USERS VALID
PATIENTS USERS VALID
PATIENTS_RECORDS USERS VALID
PHYSICIANS USERS VALID
PRESCRIPTIONS USERS VALID
RECORDS USERS VALID
RECORDS_PRESCRIPTIONS USERS VALID
SEQUENCE USERS VALID
8 rows selected.
8つのテーブルがあります。
データファイル
移動対象のPDBのデータファイルを確認してみます。
set lines 120
set pages 100
set term off
clear col
col TABLESPACE_NAME format a10
col FILE_NAME format a35
col STATUS format a10
col MBYTES format 9,999,990
col INCRE format 9,999,990
col AUTOEXTENSIBLE format a5
col ONLINE_STATUS format a6
select
tablespace_name,
file_name,
status,
bytes/1024/1024 mbytes,
increment_by,
autoextensible,
online_status
from
dba_data_files;
TABLESPACE FILE_NAME STATUS MBYTES INCREMENT_BY AUTOE ONLINE
---------- ----------------------------------- ---------- ---------- ------------ ----- ------
SYSTEM /u01/app/oracle/oradata/orcl12c/pdb AVAILABLE 250 1280 YES SYSTEM
/system01.dbf
SYSAUX /u01/app/oracle/oradata/orcl12c/pdb AVAILABLE 570 1280 YES ONLINE
/sysaux01.dbf
USERS /u01/app/oracle/oradata/orcl12c/pdb AVAILABLE 5 160 YES ONLINE
/pdb_users01.dbf
[oracle@db01 pdb]$ ls -l /u01/app/oracle/oradata/orcl12c/pdb
total 844888
-rw-r-----. 1 oracle oinstall 5251072 Nov 7 06:50 pdb_users01.dbf
-rw-r-----. 1 oracle oinstall 597696512 Nov 7 06:50 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 262152192 Nov 7 06:50 system01.dbf
-rw-r-----. 1 oracle oinstall 20979712 Nov 7 05:11 temp012016-11-07_04-38-41-AM.dbf
/u01/app/oracle/oradata/orcl12c/pdb ディレクトリの配下にデータファイルがあります。
プラガブル・データベースのアンプラグ
プラガブル・データベースを取り出すことをアンプラグと呼びます。
アンプラグをするとプラガブル・データベースに関する情報がXMLファイルとして出力されます。
アンプラグの実施
以下のSQLでプラガブル・データベースをアンプラグします。
SQL> alter pluggable database pdb unplug into '/home/oracle/for_cloud/pdb.xml';
Pluggable database altered.
指定したディレクトリにXMLファイルが出力されています。
$ ls -l /home/oracle/for_cloud/pdb.xml
-rw-r--r--. 1 oracle oinstall 4367 Nov 7 06:50 /home/oracle/for_cloud/pdb.xml
Database Cloud Service インスタンスの作成
プラガブル・データベースの移動先となるDatabase Cloud Serviceのインスタンスを作成しておきます。
- インスタンスサマリー
- 作成したインスタンス
Database Cloud Serviceへの移動
オンプレミスでアンプラグしたPDB(XMLファイル)とデータファイルをDatabase Cloud Serviceへ移動します。
データファイル配置先の準備
Database Cloud Service環境にデータファイルを配置するディレクトリを作っておきます。
- データファイルディレクトリ:/u02/app/oracle/oradata/
$ ls -l /u02/app/oracle/oradata/ORCL
total 2282704
drwxr-x--- 2 oracle oinstall 4096 Nov 7 16:18 changetracking
-rwxr-x--- 1 oracle oinstall 17973248 Nov 7 16:56 control01.ctl
drwxr-x--- 2 oracle oinstall 4096 Nov 7 16:15 PDB1
drwxr-x--- 2 oracle oinstall 4096 Sep 12 16:35 pdbseed
-rwxr-x--- 1 oracle oinstall 702554112 Nov 7 16:52 sysaux01.dbf
-rwxr-x--- 1 oracle oinstall 828383232 Nov 7 16:55 system01.dbf
-rwxr-x--- 1 oracle oinstall 206577664 Nov 7 16:27 temp01.dbf
-rwxr-x--- 1 oracle oinstall 576724992 Nov 7 16:55 undotbs01.dbf
-rwxr-x--- 1 oracle oinstall 5251072 Nov 7 16:35 users01.dbf
/u02/app/oracle/oradata/ORCLにディレクトリを作成しておきます。
$ mkdir /u02/app/oracle/oradata/ORCL/pdb_from_onpremise
$ ls -l /u02/app/oracle/oradata/ORCL/
total 2282708
drwxr-x--- 2 oracle oinstall 4096 Nov 7 16:18 changetracking
-rwxr-x--- 1 oracle oinstall 17973248 Nov 7 17:02 control01.ctl
drwxr-x--- 2 oracle oinstall 4096 Nov 7 16:15 PDB1
drwxr-xr-x 2 oracle oinstall 4096 Nov 7 17:02 pdb_from_onpremise
drwxr-x--- 2 oracle oinstall 4096 Sep 12 16:35 pdbseed
-rwxr-x--- 1 oracle oinstall 702554112 Nov 7 17:01 sysaux01.dbf
-rwxr-x--- 1 oracle oinstall 828383232 Nov 7 17:00 system01.dbf
-rwxr-x--- 1 oracle oinstall 206577664 Nov 7 17:01 temp01.dbf
-rwxr-x--- 1 oracle oinstall 576724992 Nov 7 16:59 undotbs01.dbf
-rwxr-x--- 1 oracle oinstall 5251072 Nov 7 16:35 users01.dbf
データファイルの移動
データファイルをクラウドへコピーします。
$ scp pdb_users01.dbf oracle@<DBCS-IPアドレス>:/u02/app/oracle/oradata/ORCL/pdb_from_onpremise/
$ scp sysaux01.dbf oracle@<DBCS-IPアドレス>:/u02/app/oracle/oradata/ORCL/pdb_from_onpremise/
$ scp system01.db oracle@<DBCS-IPアドレス>:/u02/app/oracle/oradata/ORCL/pdb_from_onpremise/
アンプラグPDB XMLファイルの移動
アンプラグしたPDB XMLファイルをクラウドへコピーします。
$ scp pdb.xml oracle@<DBCS-IPアドレス>:/u02/app/oracle/oradata/ORCL/pdb_from_onpremise/
プラガブル・データベースをプラグ
すでにDatabase Cloud Service上にはプラガブル・データベースが作られているので、まず削除した後に移動したきたPDBをプラグします。
Database Cloud Service上のプラガブル・データベースを削除
SQL> alter pluggable database pdb1 close;
Pluggable database altered.
SQL> drop pluggable database pdb1 including datafiles;
Pluggable database dropped.
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
アンプラグしたPDBのXMLを編集
XMLには、データファイルの配置場所がハードコードされているので、今回のケースであれば*/u02/app/oracle/oradata/ORCL/pdb_from_onpremise/*でパスを書き換える
プラガブル・データベースのプラグ
以下のSQLでアンプラグしたPDBをプラグする
SQL> create pluggable database pdb1
2 using '/u02/app/oracle/oradata/ORCL/pdb_from_onpremise/pdb.xml'
3 file_name_convert = (
4 '/u02/app/oracle/oradata/ORCL/pdb_from_onpremise/',
5 '/u02/app/oracle/oradata/ORCL/pdb_migrated/'
6 );
Pluggable database created.
確認
SQL> select table_name, tablespace_name, status from user_tables;
TABLE_NAME TABLESPACE_NAME STATUS
--------------------- -------------------- --------
ADMINISTRATORS USERS VALID
PATIENTS USERS VALID
PATIENTS_RECORDS USERS VALID
PHYSICIANS USERS VALID
PRESCRIPTIONS USERS VALID
RECORDS USERS VALID
RECORDS_PRESCRIPTIONS USERS VALID
SEQUENCE USERS VALID
まとめ
PDBでの移動は、構成ファイルとデータファイルを移動先に配置し、認識させるという直感的に分かりやすい操作です。
オンプレミスからクラウドへの移動もとても簡単に実施できました。