[Oracle DB] 핫 클론에서 새로 고침 가능한 PDB를 만드는 단계

6191 단어 오라클oraclecloud

소개



정지할 수 없는 DB를 한 단면에서 복제하고, 정기적으로 차분을 반영하고 싶은 요건이 있었기 때문에 Oracle Database 12.2의 새로운 기능인 리프레시 가능 PDB의 핫 ​​클론에 의한 작성 순서를 확인했습니다.

그 때의 비망 메모입니다. 로컬 CDB에서 PDB를 복제합니다.
18c 새로운 기능인 PDB 스냅샷 회전 목마는 동작하는 에디션에 제한(Exadata 등 엔지니어드 시스템이나 클라우드만 동작)이 있었기 때문에 핫클론으로 했습니다.

참고 : Oracle Database 제품에서 허용되는 기능, 옵션 및 Management Pack

PDB 핫클론이란?



클론 원의 PDB가 READ/WRITE 상태인 채 클론 PDB를 작성할 수 있는 기능입니다.
핫 클론 생성 후에도 수동 또는 자동으로 복제 원본 업데이트를 복제 대상에 반영할 수 있습니다. 다음과 같은 용도로 사용할 수 있습니다.

출처 : Oracle Database 12.2 CoreTech Seminer Multitenant

새로 고침 가능 PDB란?



소스 PDB의 변경을 반영할 수 있는 PDB입니다. PDB를 복제 할 때 REFRESH MODE 절을 지정하여 설정할 수 있습니다. 차분을 임의의 타이밍에서 수동으로 반영시키는 것도, 정기적으로 10분 간격 등으로 반영시키는 것도 가능합니다.

구현 절차



확인 환경


  • Oracle Cloud Infrastructure (OCI)에서 만든 Oracle Database 19.4 Enterprise Edition High Performance

  • 핫 클론 전제 조건


  • CDB가 ARCHIVELOG 모드 및 로컬 UNDO 모드

  • 절차



    핫클론 대상 PDB가 READ/WRITE인지 확인.
    [oracle@db01 ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Thu Dec 12 03:28:51 2019
    Version 19.4.0.0.0
    
    Copyright (c) 1982, 2019, Oracle.  All rights reserved.
    
    Connected to:
    Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production
    Version 19.4.0.0.0
    
    SQL> show pdbs
    
        CON_ID CON_NAME                       OPEN MODE  RESTRICTED
    ---------- ------------------------------ ---------- ----------
             2 PDB$SEED                       READ ONLY  NO
             3 PDB01                          READ WRITE NO ★←read/write
    

    PDB측의 system 유저에게 "create pluggable database"권한을 부여.
    SQL> grant create pluggable database to system container=all;
    
    Grant succeeded.
    

    복제 원본 PDB에 액세스하는 DB 링크를 만듭니다.
    SQL> create public database link link_to1 connect to system identified by xxx using 'PDB01';
    
    Database link created.
    

    새로 고침 가능한 PDB를 핫 클론으로 만듭니다. Oracle Cloud는 기본적으로 테이블 공간 암호화되어 있으므로 "keystore"절에 암호를 입력합니다. 이 명령은 PDB 데이터 파일을 복제합니다.
    SQL> create pluggable database pdb02 from pdb01@link_to1 keystore identified by xxx refresh mode every 3 minutes;
    
    Pluggable database created.
    

    아래 핫 클론 런타임 메시지. 경고 로그에서 발췌.
    PDB02(4):Endian type of dictionary set to little
    \****************************************************************
    Pluggable Database PDB02 with pdb id - 4 is created as UNUSABLE.
    If any errors are encountered before the pdb is marked as NEW,
    then the pdb must be dropped
    local undo-1, localundoscn-0x000000000000012c
    \****************************************************************
    (略)
    

    핫 클론 실행 후 "MOUNTED"로 PDB가 생성됩니다.
    SQL> show pdbs
    
        CON_ID CON_NAME                       OPEN MODE  RESTRICTED
    ---------- ------------------------------ ---------- ----------
             2 PDB$SEED                       READ ONLY  NO
             3 PDB01                          READ WRITE NO
             4 PDB02                          MOUNTED ★←ホットクローンで作成したPDB
    

    다음은 자동 리프레시시의 메시지. 경고 로그에서 발췌. 내부적으로 alter pluggable database refresh가 실행 중입니다. 업데이트 차이는 DataGuard의 대기 기계처럼 복구되었음을 알 수 있습니다.
    2019-12-12T05:35:14.601356+00:00
    PDB02(4):alter pluggable database refresh
    ・・・
    PDB02(4):Media Recovery Start
    ・・・
    PDB02(4):Media Recovery Complete (cdb01)
    ・・・
    PDB02(4):Completed: alter pluggable database refresh
    

    새로 고침 가능 PDB를 시작할 때 새로 고침 모드를 중지해야 합니다. 한 번 새로 고침 모드를 중지하면 다시 새로 고침 모드로 전환할 수 없습니다.
    SQL> alter pluggable database pdb02 open;
    alter pluggable database pdb02 open
    *
    ERROR at line 1:
    ORA-65341: cannot open pluggable database in read/write mode
    ★↑リフレッシュ可能PDBのためopen不可
    
    SQL> alter pluggable database pdb02 refresh mode none;
    
    Pluggable database altered.
    ★↑リフレッシュモードを停止
    
    SQL> alter pluggable database pdb02 open;
    
    Pluggable database altered.
    ★↑リフレッシュモードを停止するとOPENできることを確認
    

    직면한 오류



    DB 링크가 없는 경우

    리프레시 가능 PDB의 경우는 DB 링크가 필요.
    SQL> create pluggable database pdb03 from pdb01 keystore identified by WElcome##01 refresh mode every 3 minutes;
    create pluggable database pdb03 from pdb01 keystore identified by WElcome##01 refresh mode every 3 minutes
                                                                                               *
    ERROR at line 1:
    ORA-00922: missing or invalid option
    

    PDB 측 사용자에게 "create pluggable database"권한이 없는 경우
    SQL> create pluggable database pdb02 from pdb01@link_to1 keystore identified by WElcome##01 refresh mode every 3 minutes;
    create pluggable database pdb02 from pdb01@link_to1 keystore identified by WElcome##01 refresh mode every 3 minutes
    *
    ERROR at line 1:
    ORA-17628: Oracle error 1031 returned by remote Oracle server
    ORA-01031: insufficient privileges
    

    DB 링크를 "sys"로 치면
    SQL> create public database link link_to1 connect to sys identified by WElcome##01 using 'PDB01';
    
    Database link created.
    
    SQL> create pluggable database pdb02 from pdb01@link_to1 keystore identified by WElcome##01 refresh mode every 3 minutes;
    create pluggable database pdb02 from pdb01@link_to1 keystore identified by WElcome##01 refresh mode every 3 minutes
    *
    ERROR at line 1:
    ORA-17627: ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
    ORA-17629: Cannot connect to the remote database server
    

    참조



    Oracle Database 19c SQL 언어 참조 - CREATE PLUGGABLE DATABASE

    좋은 웹페이지 즐겨찾기