ORACLE 19C 使用热克隆PDB实现 PDB的创建

ORACLE 19C 使用热克隆PDB实现 PDB的创建

环境:
    本地:cdb2
    远端:cdb1

目标:
   把远端cdb1 中的PDB1 热克隆到本地CDB2中,自动刷新,或者手动刷新

要求:
   1.两端 CDB必须开启归档

   2.两端CDB必须使用LOCAL UNDO 

    3.源端用于DBLINK的用户,必须具有CREATE PLUGGABLE DATABASE的权限

操作步骤:
    1.远端CDB中,创建有CRTEATE PLUGGABLE DATABASE 权限的通用用户,并通用授权
         [oracle@dbserver ~]$ sqlplus /nolog

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Oct 22 14:57:25 2023
Version 19.20.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.

@ >conn / as sysdba
Connected.
SYS@cdb1 >

SYS@cdb1 >create user c##remote_user identified by oracle_4U;

SYS@cdb1 >grant create session,create pluggable database 
  2         to c##remote_user
  3        container=all;

SYS@cdb1 >
               
  2.在本地创建DBLINK 指向远端的CDBROOT

[oracle@dbserver ~]$ . oraenv
ORACLE_SID = [cdb2] ? 
The Oracle base remains unchanged with value /u01/app/oracle

  [oracle@dbserver ~]$ sqlplus /nolog

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Oct 22 14:59:40 2023
Version 19.20.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.

@ >conn / as sysdba
Connected.
SYS@cdb2 >create database link link_cdb1 
  2        connect to c##remote_user identified by oracle_4U
  3        using 'cdb1';

Database link created.

--确认DBLINK OK。
SYS@cdb2 >
SYS@cdb2 >select * from dual@link_cdb1;

D
-
X

SYS@cdb2 >


3.确认两端都必须是 LOCAL UNDO

  SYS@cdb2 >select CON_ID,PROPERTY_NAME,PROPERTY_VALUE from CDB_PROPERTIES where PROPERTY_NAME like '%UNDO%';

    CON_ID PROPERTY_NAME                  PROPERTY_VALUE
---------- ------------------------------ ------------------------------
         3 LOCAL_UNDO_ENABLED             TRUE
         1 LOCAL_UNDO_ENABLED             TRUE

  SYS@cdb1 >select CON_ID,PROPERTY_NAME,PROPERTY_VALUE from CDB_PROPERTIES where PROPERTY_NAME like '%UNDO%'

    CON_ID PROPERTY_NAME                  PROPERTY_VALUE
---------- ------------------------------ ------------------------------
         3 LOCAL_UNDO_ENABLED             TRUE
         1 LOCAL_UNDO_ENABLED             TRUE

SYS@cdb1 >

4.创建PDB3,每隔5分钟刷新
 
SYS@cdb2 >create pluggable database pdb3
  2         from pdb1@link_cdb1
  3        refresh mode every 5 minutes;

Pluggable database created.

SYS@cdb2 >

SYS@cdb2 >show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB2                           READ WRITE NO
         4 PDB3                           MOUNTED

5.确认刷新

SYS@cdb2 >r
  1* select PDB_NAME,STATUS,REFRESH_MODE  ,REFRESH_INTERVAL from cdb_pdbs

PDB_NAME                       STATUS     REFRES REFRESH_INTERVAL
------------------------------ ---------- ------ ----------------
PDB2                           NORMAL     NONE
PDB$SEED                       NORMAL     NONE
PDB3                           REFRESHING AUTO                  5

6.只读模式打开PDB3

SYS@cdb2 >alter pluggable database pdb3 open;
alter pluggable database pdb3 open
*
ERROR at line 1:
ORA-65341: cannot open pluggable database in read/write mode

--只能只读模式打开

SYS@cdb2 >alter pluggable database pdb3 open read only;

Pluggable database altered.

SYS@cdb2 >show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB2                           READ WRITE NO
         4 PDB3                           READ ONLY  NO
SYS@cdb2 >


7.远端 PDB1 模拟制造数据

SYS@cdb1 >SHOW pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO
SYS@cdb1 >select systimestamp from dual;

SYSTIMESTAMP
---------------------------------------------------------------------------
22-OCT-23 03.22.39.579214 PM +08:00

SYS@cdb1 >alter session set container=pdb1;

Session altered.

SYS@cdb1 >show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         3 PDB1                           READ WRITE NO
SYS@cdb1 >create table refresh_tab (empid number);

Table created.

SYS@cdb1 >insert into refresh_tab values(100);

1 row created.

SYS@cdb1 >insert into refresh_tab values(101);

1 row created.

SYS@cdb1 >commit;

Commit complete.

SYS@cdb1 >


8.在本地确认数据同步

SYSTIMESTAMP
---------------------------------------------------------------------------
22-OCT-23 03.49.02.723158 PM +08:00

SYS@cdb2 >show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         4 PDB3                           MOUNTED
SYS@cdb2 >alter pluggable database open read only;

Pluggable database altered.

SYS@cdb2 >show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         4 PDB3                           READ ONLY  NO

SYS@cdb2 >select * from refresh_tab;
select * from refresh_tab
              *
ERROR at line 1:
ORA-00942: table or view does not exist

看不到数据,主要是自动刷新,不能在OPEN READ ONLY下刷新,报警日志中有记录

。。。
2023-10-22T15:44:03.145812+08:00
PDB3(4):alter pluggable database refresh
PDB3(4):PDB3(4):ERROR:PDB needs to be closed for auto refresh
PDB3(4):Completed: alter pluggable database refresh

。。。

所有需要关闭PDB3
SYS@cdb2 >alter pluggable database pdb3 close;

--等下一次刷新后,再只读打开,就可以看到变化了

。。。
PDB3(4):alter pluggable database refresh
2023-10-22T15:49:04.827946+08:00
Applying media recovery for pdb-4099 from SCN 3021634 to SCN 3022317
Remote log information: count-1
thr-1,seq-36,logfile-/u01/app/oracle/fast_recovery_area/CDB1/foreign_archivelog/PDB1/2023_10_22/o1_mf_1_36_lm9nzjkq_.arc,los-2984979,nxs-18446744073709551615,maxblks-155410
PDB3(4):Media Recovery Start
2023-10-22T15:49:04.829769+08:00
PDB3(4):Serial Media Recovery started
PDB3(4):max_pdb is 4
2023-10-22T15:49:04.908399+08:00
PDB3(4):Media Recovery Log /u01/app/oracle/fast_recovery_area/CDB1/foreign_archivelog/PDB1/2023_10_22/o1_mf_1_36_lm9nzjkq_.arc
2023-10-22T15:49:05.087621+08:00
PDB3(4):Incomplete Recovery applied until change 3022317 time 10/22/2023 15:49:04
2023-10-22T15:49:05.090089+08:00
PDB3(4):Media Recovery Complete (cdb2)
PDB3(4):Completed: alter pluggable database refresh
。。。

再次打开,就可以看到数据了。

SYS@cdb2 >alter pluggable database open read only;

SYS@cdb2 >select * from refresh_tab;

     EMPID
----------
       100
       101
       200

SYS@cdb2 >

9.想正常打开PDB3

SYS@cdb2 >ALTER PLUGGABLE DATABASE REFRESH mode none;

Pluggable database altered.

SYS@cdb2 >show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         4 PDB3                           MOUNTED
SYS@cdb2 >conn / as sysdba
Connected.
SYS@cdb2 >select PDB_NAME,STATUS,REFRESH_MODE  ,REFRESH_INTERVAL from cdb_pdbs;

PDB_NAME                       STATUS     REFRES REFRESH_INTERVAL
------------------------------ ---------- ------ ----------------
PDB$SEED                       NORMAL     NONE
PDB3                           NEW        NONE

SYS@cdb2 >alter pluggable database pdb3 open;

Pluggable database altered.

SYS@cdb2 >show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         4 PDB3                           READ WRITE NO
SYS@cdb2 >

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值