Database Cloud Service로 PDB를 이동해 보았습니다.

개요



온 프레미스 환경에서 만드는 Oracle Datatabase 12c 환경에서 Database Cloud Service로 플러그 가능 데이터베이스를 이동하여 클라우드에서 동일한 데이터 환경을 재현합니다.



플러그 가능 데이터베이스란?



Oracle Database 12c에는 플러그 가능 데이터베이스 (이후 PDB)라고하는 기능이 있습니다.
이것은 데이터베이스 내에 가상적으로 데이터베이스를 구성하는 기능으로, 이 가상적인 데이터베이스가 PDB입니다.
PDB는 여러 PDB간에 메모리 영역, 프로세스, 제어 파일 등을 공유합니다. 그리고 PDB 단위로 이동(플러그/언플러그)하는 것이 가능합니다.
  • 오라클 공개 문서에서 인용

  • プラガブル・データベース

    이동할 플러그 가능 데이터베이스



    온-프레미스에 구성된 플러그 가능한 데이터베이스를 검토해 보십시오.

    플러그 가능 데이터베이스 목록


    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의 인스턴스를 생성합니다.
  • 인스턴스 요약


  • 만든 인스턴스



  • 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/
    

    Unplug 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에서의 이동은 구성 파일과 데이터 파일을 대상에 배치하고 인식하는 직관적으로 이해하기 쉬운 작업입니다.
    온프레미스에서 클라우드로의 이동도 매우 쉽게 수행할 수 있었습니다.

    좋은 웹페이지 즐겨찾기