数据库管理-第107期 Relocating PDB(20230927)

数据库管理-第107期 Relocating PDB(20230927)

在我长期的blog生涯,当需要迁移PDB的时候,出现了几种方式,基本上就是在线克隆或者datapump,然而这两种方式都需要一定的停机时间。在数据库版本一致的情况下,之前介绍的Refreshable Clone PDBs确实也可以实现,但是switchover功能本身是需要一体机环境的。本期介绍另一种迁移方式:Relocate PDB。

1 基本概念

首先这是一个Oracle 12.2开始的新特性,也就意味着数据库版本至少是12.2(这里用19c作为演示)。
Relocating PDB可以将PDB移动到另一个CDB或者Application Container。在Relocating过程中源PDB会一直保持全功能性读写状态直到目标PDB进入OPEN状态。Relocating过程是源PDB在OPEN状态并维持活动会话的情况下线执行块级别的数据文件、REDO和UNDO复制,当目标PDB通过ALTER PLUGGABLE DATABASE OPEN命令将状态改为在线时,源PDB将关闭活动的会话并关闭PDB(并删除)。
这里需要注意,源端和目标端CDB都需要处于ARCHIVELOG状态,源端和目标端之间需要创建DBLINK。
数据库管理-第107期 Relocating PDB(20230927)_第1张图片
Relocating PDB语句:

CREATE PLUGGABLE DATABASE ... FROM src_pdb_name@link2src ... RELOCATE AVAILABILITY [MAX | NORMAL]

当源和目标共享同一个LISTENER,使用AVAILABILITY NORMAL(默认)。
当源和目标使用不同的LISTENER,使用AVAILABILITY MAX。

2 演示环境

对象 名称 TNSNAME
源CDB PRODCDB prodcdb
源PDB RELOCATE_PDB1 /
目标CDB DEVCDB devcdb

在同一主机使用同一监听,sys/system密码均为oracle,未配置OMF。

3 演示

3.1 源端、目标端CDB开启归档

shut immediate
startup mount
alter database archivelog;
alter database force logging;
alter database open;

--针对目标端
alter pluggable database relocate_pdb1 open;
alter pluggable database relocate_pdb1 save state;

3.2 授权

源端、目标端均需要:

grant create pluggable database,sysoper to system container=all;

3.3 创建DBLINK

源CDB:

create database link devcdb_link connect to system identified by oracle using 'devcdb';

目标CDB:

create database link prodcdb_link connect to system identified by oracle using 'prodcdb';

3.4 Relocating PDB

目标CDB:

create pluggable database relocate_pdb1 from relocate_pdb1@prodcdb_link file_name_convert=('/u01/app/oracle/oradata/PRODCDB/RELOCATE_PDB1','/u01/app/oracle/oradata/DEVCDB/RELOCATE_PDB1') relocate availability normal;

在这里插入图片描述
在这里插入图片描述

3.5 开启目标PDB

alter pluggable database relocate_pdb1 open;

数据库管理-第107期 Relocating PDB(20230927)_第2张图片
目标PDB已为正常开启状态。
源CDB检查:
数据库管理-第107期 Relocating PDB(20230927)_第3张图片
源PDB已被删除。

总结

本期讲解并演示了Relocating PDB,这种PDB迁移方式通过实时在线数据同步,更加快捷简便。
老规矩,知道写了些啥。

你可能感兴趣的:(Oracle,数据库)