19c pdb relocate/pdb refresh区别及使用

来源:这里教程网 时间:2026-03-03 23:04:09 作者:

前言:日常运维过程中,特别是涉及到数据库迁移,在19c pdb库迁移过程中,涉及到pdb relocate和refresh两种方式,这两种方式对比ADG方式配置过程确实少了不少,但各种方式各有自己的前置条件,下面我们来测试下。 一、环境介绍 1、操作系统  orhel 7.9 x64 2、数据库:oracle 19c pdb库 3、源目库都采用omf方式存储文件,版本都一致,并开启归档模式 二、19c pdb refresh迁移 1、前置条件

  • 源端和目标端数据库必须为归档模式
  • 源端和目标端必须为local_undo多租户(database_properties where property_name=‘LOCAL_UNDO_ENABLED’)
  • 源端和目标端需要同平台,字节顺序相同
  • 确保目标库有足够的SGA/PGA内存分配给refresh过来的pdb
  • 确保目标库磁盘组有足够的可用空间存放refresh过来的pdb
  • 源库pdb的字符集要和目标CDB的字符集和国家字符集兼容,例如目标库是AL32UTF8的话,源库可以是ZHS16GBK,但是反过来就不行。

    2、测试过程 源库:cdb下创建用户  create user c##dblk identified by oracle; grant create any table,unlimited tablespace to c##dblk container=all; 目标库:编辑tnsnames.ora pdb02 =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.11)(PORT = 1521))     (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = pdb02)     )   ) 3、创建dblink create public database link pdb01_links connect to c##dblk identified by oracle using '(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST =10.10.10.11)(PORT = 1521))(CONNECT_DATA=( DEDICATED)(SERVICE_NAME =pdb01)))'; 检查dblink: select instance_name from v$instance@pdb01_links; 4、目标库:建立pdb refresh库 SQL> create pluggable database pdb01 from pdb01@pdb01_links refresh mode every 1 minutes; Pluggable database created. SQL> show pdbs;     CON_ID CON_NAME                       OPEN MODE  RESTRICTED ---------- ------------------------------ ---------- ----------          2 PDB$SEED                       READ ONLY  NO          3 PDB01                             MOUNTED 5、源库:应用关闭后,一致性关闭源库,并以read only方式打开(确保老库数据不会增加) alter pluggable database pdb01 close immediate; alter pluggable database pdb01 open read only; 6、目标库最后一次刷新 alter pluggable database pdb01 refresh; 7、检查目标库数据或关键表数据是否一致 8、激活目标库 alter pluggable database pdb01 refresh mode none;(刷新模式为none为不可逆操作) alter pluggable database pdb01 open; 9、执行datapatch修复目标pdb库最新补丁 [oracle@db100 admin]$ $ORACLE_HOME/OPatch/datapatch -pdbs pdb01 SQL Patching tool version 19.3.0.0.0 Production on Fri Jan  2 20:05:17 2026 Copyright (c) 2012, 2019, Oracle.  All rights reserved. Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_86924_2026_01_02_20_05_18/sqlpatch_invocation.log Connecting to database...OK Gathering database info...done 10、解决Database option RAC mismatch: PDB installed version 19.0.0.0.0. CDB installed version NULL.(略) 三、19c pdb relocate 在使用RelocatePDB进行数据迁移时需要注意如下事项: 1.如果PDB被Relocate到的CDB的字符集不是AL32UTF8,那么源与目标字符集必须兼容。 2.源端与目标短的字节顺序必须相同。 3.连接的用户在CDB中必须拥有'CREATEPLUGGABLE DATABASE'的权限。 5.源端PDB必须为归档模式。 6.源端PDB必须是localundo模式。 7.当指定AVAILABILITY MAX字句时,要求目标PDB与源PDB名字必须保持一致。 ===================================================================================== 1、源库:cdb下创建用户 create user c##dblk identified by oracle; grant create session,sysoper,create pluggable database to c##dblk container=all; 2、目标库:配置tnsnames.ora orcl =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.11)(PORT = 1521))     (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = orcl)     )   ) 3、目标库:创建dblink create public database link orcl_links connect to c##dblk identified by oracle using 'orcl';(使用cdb的link,不是pdblink)) 检查dblink: select instance_name from v$instance@orcl_links; 4、现有源目库存储文件采用omf方式 5、通过relocate方式创建目标pdb库: create pluggable database pdb01 from pdb01@orcl_links relocate; 6、检查源目库状态 源库: SQL> show pdbs;     CON_ID CON_NAME                       OPEN MODE  RESTRICTED ---------- ------------------------------ ---------- ----------          2 PDB$SEED                       READ ONLY  NO          3 PDB01                          READ WRITE NO          5 PDB02                          READ WRITE NO SQL> select pdb_id, pdb_name, status, refresh_mode,refresh_interval from cdb_pdbs;    PDB_ID   PDB_NAME      STATUS     REFRES REFRESH_INTERVAL ---------- ------ -------------------------------------------     2       PDB$SEED      NORMAL     NONE   NONE     5       PDB02         NORMAL     NONE   NONE   目标库: SQL> show pdbs;     CON_ID CON_NAME                       OPEN MODE  RESTRICTED ---------- ------------------------------ ---------- ----------          2 PDB$SEED                       READ ONLY  NO          3 PDB01                             MOUNTED SQL> select pdb_id, pdb_name, status, refresh_mode,refresh_interval from cdb_pdbs;     PDB_ID  PDB_NAME                                 STATUS                    REFRESH_MODE       REFRESH_INTERVAL ---------- ---------------------------------------- ---------------------------------------- ------------------ ----------------        2         PDB$SEED                                 NORMAL                      NONE        3         PDB01                                    RELOCATING                   NONE 7、源库创建测试数据 SQL> alter session set container=pdb01; Session altered. SQL> create table it (id number); Table created. SQL> insert into it values(1); 1 row created. SQL> insert into it values(2); SQL> select * from it;         ID ----------          1          2 SQL> create tablespace data11 datafile size 100m autoextend on; Tablespace created. SQL> select tablespace_name from dba_data_files; TABLESPACE_NAME ------------------------------ SYSTEM SYSAUX UNDOTBS1 UNDO_2 USERS DATA DATA01 DATA11 8、目标库pdb01打开open状态 SQL> alter pluggable database pdb01 open; Pluggable database altered. SQL> show pdbs;     CON_ID CON_NAME                       OPEN MODE  RESTRICTED ---------- ------------------------------ ---------- ----------          2 PDB$SEED                               READ ONLY      NO          3 PDB01                                      READ WRITE    NO alert.log日志信息: alter pluggable database pdb01 open 2026-01-03T09:27:37.206519+08:00 Applying media recovery for pdb-4099 from SCN 6835327 to SCN 6836889 Remote log information: count-2 thr-2, seq-16, logfile-+DATA/ORCL/partial_archivelog/2026_01_03/thread_2_seq_16.338.1221557257, los-6817708, nxs-18446744073709551615 thr-1, seq-19, logfile-+DATA/ORCL/partial_archivelog/2026_01_03/thread_1_seq_19.340.1221557257, los-6547727, nxs-18446744073709551615 PDB01(3):Media Recovery Start 2026-01-03T09:27:37.207578+08:00 PDB01(3):Serial Media Recovery started PDB01(3):max_pdb is 8 2026-01-03T09:27:37.706930+08:00 PDB01(3):Media Recovery Log +DATA/ORCL/partial_archivelog/2026_01_03/thread_1_seq_19.340.1221557257 2026-01-03T09:27:38.771488+08:00 PDB01(3):Media Recovery Log +DATA/ORCL/partial_archivelog/2026_01_03/thread_2_seq_16.338.1221557257 2026-01-03T09:27:40.854244+08:00 PDB01(3):Successfully added datafile 99 to media recovery PDB01(3):Datafile #99: '/oradata/ORCL/334820967F541799E0630C0A0A0AE1B8/datafile/o1_mf_data11_nojw4chd_.dbf' 2026-01-03T09:27:40.958966+08:00 PDB01(3):Incomplete Recovery applied until change 6836889 time 01/03/2026 09:26:35 2026-01-03T09:27:40.965535+08:00 PDB01(3):Media Recovery Complete (orcl) PDB01(3):Autotune of undo retention is turned on. PDB01(3):Undo initialization finished serial:0 start:88332584 end:88332584 diff:0 ms (0.0 seconds) PDB01(3):Database Characterset for PDB01 is AL32UTF8 2026-01-03T09:27:42.773895+08:00 PDB01(3):Opening pdb with no Resource Manager plan active 2026-01-03T09:28:14.357099+08:00 PDB01(3):JIT: pid 100844 requesting stop PDB01(3):Buffer Cache flush started: 3 PDB01(3):Buffer Cache flush finished: 3 2026-01-03T09:28:19.621553+08:00 Applying media recovery for pdb-4099 from SCN 6836889 to SCN 6837594 Remote log information: count-2 thr-2, seq-16, logfile-+DATA/ORCL/partial_archivelog/2026_01_03/thread_2_seq_16.338.1221557299, los-6817708, nxs-18446744073709551615 thr-1, seq-19, logfile-+DATA/ORCL/partial_archivelog/2026_01_03/thread_1_seq_19.340.1221557299, los-6547727, nxs-18446744073709551615 PDB01(3):Media Recovery Start 2026-01-03T09:28:19.622572+08:00 PDB01(3):Serial Media Recovery started PDB01(3):max_pdb is 8 2026-01-03T09:28:19.800936+08:00 PDB01(3):Media Recovery Log +DATA/ORCL/partial_archivelog/2026_01_03/thread_2_seq_16.338.1221557299 2026-01-03T09:28:19.933723+08:00 PDB01(3):Media Recovery Log +DATA/ORCL/partial_archivelog/2026_01_03/thread_1_seq_19.340.1221557299 2026-01-03T09:28:21.519872+08:00 PDB01(3):Incomplete Recovery applied until change 6837594 time 01/03/2026 09:26:35 2026-01-03T09:28:21.525384+08:00 PDB01(3):Media Recovery Complete (orcl) PDB01(3):Undo initialization recovery: err:0 start: 88372497 end: 88372500 diff: 3 ms (0.0 seconds) PDB01(3):[100844] Successfully onlined Undo Tablespace 2. PDB01(3):Undo initialization online undo segments: err:0 start: 88372500 end: 88372523 diff: 23 ms (0.0 seconds) PDB01(3):Undo initialization finished serial:0 start:88372497 end:88372527 diff:30 ms (0.0 seconds) PDB01(3):Database Characterset for PDB01 is AL32UTF8 PDB01(3):Buffer Cache flush started: 3 PDB01(3):Buffer Cache flush finished: 3 2026-01-03T09:28:23.281010+08:00 PDB01(3):Undo initialization recovery: err:0 start: 88374182 end: 88374184 diff: 2 ms (0.0 seconds) PDB01(3):[100844] Successfully onlined Undo Tablespace 2. PDB01(3):Undo initialization online undo segments: err:0 start: 88374184 end: 88374267 diff: 83 ms (0.1 seconds) PDB01(3):Undo initialization finished serial:0 start:88374182 end:88374270 diff:88 ms (0.1 seconds) PDB01(3):Deleting old file#10 from file$ PDB01(3):Deleting old file#11 from file$ PDB01(3):Deleting old file#12 from file$ PDB01(3):Deleting old file#13 from file$ PDB01(3):Deleting old file#14 from file$ PDB01(3):Deleting old file#15 from file$ PDB01(3):Deleting old file#81 from file$ PDB01(3):Deleting old file#82 from file$ PDB01(3):Adding new file#92 to file$(old file#10).             fopr-1, newblks-35840, oldblks-19200 PDB01(3):Adding new file#93 to file$(old file#11).             fopr-1, newblks-44800, oldblks-15360 PDB01(3):Adding new file#94 to file$(old file#12).             fopr-1, newblks-12800, oldblks-12800 PDB01(3):Adding new file#95 to file$(old file#13).             fopr-1, newblks-12800, oldblks-12800 PDB01(3):Adding new file#96 to file$(old file#14).             fopr-1, newblks-640, oldblks-640 PDB01(3):Adding new file#97 to file$(old file#15).             fopr-1, newblks-12800, oldblks-12800 PDB01(3):Adding new file#98 to file$(old file#81).             fopr-1, newblks-1280, oldblks-1280 PDB01(3):Adding new file#99 to file$(old file#82).             newblks-12800, oldblks-12800 PDB01(3):Successfully created internal service PDB01 at open **************************************************************** Post plug operations are now complete. Pluggable database PDB01 with pdb id - 3 is now marked as NEW. **************************************************************** 9、检查源库状况 SQL> show pdbs;     CON_ID CON_NAME                       OPEN MODE  RESTRICTED ---------- ------------------------------ ---------- ----------          2 PDB$SEED                                  READ ONLY  NO          5 PDB02                                         READ WRITE NO alert.log日志: Domain Action Reconfiguration complete (total time 0.0 secs) Decreasing priority of 1 RS 2026-01-03T09:28:15.771482+08:00 Pluggable database PDB01 closed 2026-01-03T09:28:22.592671+08:00 Deleted Oracle managed file +DATA/ORCL/334820967F541799E0630C0A0A0AE1B8/DATAFILE/data11.339.1221557195 Deleted Oracle managed file +DATA/ORCL/334820967F541799E0630C0A0A0AE1B8/DATAFILE/data01.335.1221507639 Deleted Oracle managed file +DATA/ORCL/334820967F541799E0630C0A0A0AE1B8/DATAFILE/data.302.1221087139 Deleted Oracle managed file +DATA/ORCL/334820967F541799E0630C0A0A0AE1B8/DATAFILE/users.285.1199038753 Deleted Oracle managed file +DATA/ORCL/334820967F541799E0630C0A0A0AE1B8/DATAFILE/undo_2.284.1199038751 Deleted Oracle managed file +DATA/ORCL/334820967F541799E0630C0A0A0AE1B8/TEMPFILE/temp.283.1199038451 Deleted Oracle managed file +DATA/ORCL/334820967F541799E0630C0A0A0AE1B8/DATAFILE/undotbs1.280.1199038445 Deleted Oracle managed file +DATA/ORCL/334820967F541799E0630C0A0A0AE1B8/DATAFILE/sysaux.282.1199038445 Deleted Oracle managed file +DATA/ORCL/334820967F541799E0630C0A0A0AE1B8/DATAFILE/system.281.1199038445 Deleted Oracle managed file +DATA/ORCL/partial_archivelog/2026_01_03/thread_1_seq_19.340.1221557299 Deleted Oracle managed file +DATA/ORCL/partial_archivelog/2026_01_03/thread_2_seq_16.338.1221557299 2026-01-03T09:34:05.311053+08:00 Control autobackup written to DISK device handle '+DATA/ORCL/AUTOBACKUP/2026_01_03/s_1221557644.338.1221557645' 源库pdb01从cdb中消失了。 小结:pdb refresh和pdb relocate两种迁移方式中最大的不同在于前者是完全复制源库到目的库,且源库不做任何操作,保持现状; 而relocate方式,将源库复制到目的库,但在源库中会将复制过来的pdb删除,在后面pdb迁移过程中,感觉pdb refresh可能会用 的多些。        2026.1.3         good luck

  • 相关推荐