LoginSignup
5
5

More than 5 years have passed since last update.

Database Cloud ServiceにPDBを移動してみた

Posted at

概要

オンプレミス環境に作っているOracle Datatabase 12c環境から、Database Cloud Serviceへプラガブル・データベースを移動し、クラウド上に同一データ環境を再現してみます。

plug-unplug.png

プラガブル・データベースとは

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
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のインスタンスを作成しておきます。

  • インスタンスサマリー

dbcs.emea.oraclecloud.com_2016-11-07_15-58-46.png

  • 作成したインスタンス

dbcs.emea.oraclecloud.com_2016-11-07_16-33-03.png

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での移動は、構成ファイルとデータファイルを移動先に配置し、認識させるという直感的に分かりやすい操作です。
オンプレミスからクラウドへの移動もとても簡単に実施できました。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5