数据库管理-第100期 Refreshable Clone PDBs(20230905)

数据库管理-第100期 Refreshable Clone PDBs(20230905)

上周五,9月1日,我于上海Oracle办公室OU考场完成了19c OCM Upgrade考试,感受就是,很多新特性考的比想象的更加深入,希望最终结果是好的吧。
来到9月第一篇,我的文章也来到了100期,感触颇多,这里也拿一个Oracle数据库的新特性来给100期做个总结,也为即将到来的23c PDB级别ADG打个前哨。

1 概念

Refreshable Clone PDBs,即可刷新的克隆PDB,除去官方文档的各种弯弯绕绕,其实应对的场景就是使用dblink在不同CDB中克隆源CDB中的一个PDB,并添加refresh mode参数,使得目标PDB可以自动或手动方式从源PDB中刷新至最新数据状态,并可以进行切换。这一特性可以看做一个非实时同步的PDB级别的ADG,目标PDB可以提供只读状态的读能力。
在这里插入图片描述

2 示例环境

源端CDB:PRODCDB,源端PDB:PDBPROD1
目标CDB:DEVCDB,目标PDB:HOTCLONE_PDB1
二者sys用户密码均为oracle
二者均配置OMF至/u01/app/oracle/oradata

注:由于switchover需要Exadata特性支持,普通环境需要预先要执行下面操作:

alter system set "_exadata_feature_on"=true scope=spfile;

3 示例操作

  1. 创建用于dblink及克隆PDB的用户并赋权(主要需要增加sysoper权限)。
  2. 源端CDB与目标CDB互相创建dblink。
conn sys/oracle@prodcdb as sysdba
create user c##user1 identified by oracle container=all;
grant connect,resource to c##user1 container=all;
grant create pluggable database to c##user1 container=all;
grant sysoper to c##user1 container=all;
alter user c##user1 set container_data=ALL container=current; 
grant select on cdb_pdbs to c##user1;

conn sys/oracle@devcdb as sysdba
create user c##user1 identified by oracle container=all;
grant connect,resource to c##user1 container=all;
grant create pluggable database to c##user1 container=all;
grant sysoper to c##user1 container=all;
alter user c##user1 set container_data=ALL container=current; 
grant select on cdb_pdbs to c##user1;
create database link prodcdb_link connect to c##user1 identified by oracle using 'prodcdb';

conn sys/oracle@prodcdb as sysdba
create database link devcdb_link connect to c##user1 identified by oracle using 'devcdb';
  1. 创建可刷新PDB
conn sys/oracle@devcdb as sysdba
create pluggable database hotclone_pdb1 from pdbprod1@prodcdb_link refresh mode every 5 minutes;
select pdb_name,status,refresh_mode,refresh_interval from cdb_pdbs;
alter pluggable database hotclone_pdb1 open read only;

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

  1. 测试刷新情况

在这里插入图片描述
在这里插入图片描述
源端PDB建立测试表之后,目标PDB未实时更新。
在这里插入图片描述
一段时间后,目标端PDB仍然无法查询到测试表。
在这里插入图片描述
这里官方文档也有说明,需要在closed状态才能自动refresh,因此关闭目标PDB等待一段时间后再开启并查询:
在这里插入图片描述
这时是可以在目标端查询到测试表,所以这里的目标PDB可读,也还是比较坑。

  1. 进行switchover
conn sys/oracle@pdbprod1 as sysdba
alter pluggable database refresh mode every 5 minutes from hotclone_pdb1@devcdb_link switchover;
conn sys/oracle@prodcdb as sysdba
select pdb_name,status,refresh_mode,refresh_interval from cdb_pdbs;

在这里插入图片描述
切换完成,这里就不再做反向同步测试。

总结

Refreshable PDB就在19c版本上实现的功能来说,目前看起来还是比较鸡肋的。但是随着21c上PDB级别DG的实现,以及23c上PDB级别ADG的到来,CDB彻底沦为底座,PDB可以随意在各个CDB上创建主备角色数据库。这样对于高可用和合理的硬件资源使用将会拥有更多的玩法。
老规矩,知道写了些啥。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖头鱼的鱼缸(尹海文)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值