oracle 12c pdb refresh 简单介绍

发布于 2023-07-15 20:58:19 字数 2974 浏览 23 评论 0

环境

oracle1 2.2 单实例 clone 到 12.2 rac,我需要把测试环境 pdb 复制到正式,但是他们测试系统还没有开发结束就急着上线,后面开发的数据库代码需要技术手动插入正式,听说过 pdb 刷新,就想能不能就解决这个问题,于是学习了一波,结果搞明白了,但是用处不是太大。

克隆

先决条件:

1.目标位置具有建库权限
2.源pdb启用归档或者read only
3.源pdb使用本地undo
4.尽量目标库为al32utf8
6.有dblink连接
7.刷新模式必须为2个不同的cdb容器中的pdb

其他不重要...

--源库开启归档或者read only
SQL> alter pluggable database open read only;

--目标库创建源库的dblink,这里使用的tns:srm_test需要提前创建好
SQL> conn /as sysdba;
SQL> create public database link srmtest_dblink connect to srm identified by xxxx using 'srm_test';  

--进行hot远程克隆,并且制定刷新模式为 手动
SQL> create pluggable database srm_pro from srm_test@srmtest_dblink refresh mode manual;

--克隆完成,打开目标pdb
SQL> alter pluggable database srm_pro open; --默认为open read write模式

这里会显示修改完成,即目标 pdb 打开,但是 show pdbs 一看,还是 srm_pro 还是 mounted 状态,再来一次,不报错,但还是死活打不开。--官方说明,必须 read only 模式打开

--于是执行,果然打开了
SQL> alter pluggable database srm_pro open read only instances = all;

刷新

--于是执行,果然打开了
SQL> alter pluggable database srm_pro open read only instances = all;

--测试刷新,现在源库新建一张表,然后到目标库刷新,再查询目标库是否同步数据
SQL> conn xx/xxx@srm_test;
SQL> create table t1(c1 number);insert into t1 values(123);
SQL> desc t1; select * from t1; --查看新建的表

--目标库进行刷新
SQL> alter pluggable database srm_pro close immediate instances = all;
SQL> alter session set container = srm_pro;
SQL> alter pluggable database refresh;
SQL> alter pluggable database open read only;
SQL> conn xxx/xxxx@srm_pro;
SQL> desc t1;select * from t1; --已经查询到在源库新建的测试数据表t1

总结

刷新模式:3种  --注意,刷新模式可以修改,但是从刷新模式变成不刷新后就不能再改回刷新模式了
-- 手动刷新
SQL> CREATE PLUGGABLE DATABASE pdb5_ro FROM pdb5@clone_link
  REFRESH MODE MANUAL;

-- 60分钟定时刷新
SQL> CREATE PLUGGABLE DATABASE pdb5_ro FROM pdb5@clone_link
  REFRESH MODE EVERY 60 MINUTES;

-- 不刷新,默认创建pdb时不加刷新参数就是不刷新
SQL> CREATE PLUGGABLE DATABASE pdb5_ro FROM pdb5@clone_link
  REFRESH MODE NONE;
SQL> CREATE PLUGGABLE DATABASE pdb5_ro FROM pdb5@clone_link;

思考

为什么只能 read only 呢?我想可能是为了保证目标数据于原数据库一致,不会数据冲突吧。

修改pdb的刷新模式:
-- 修改自动刷新时间
SQL> ALTER PLUGGABLE DATABASE pdb5_ro REFRESH MODE EVERY 60 MINUTES;
SQL> ALTER PLUGGABLE DATABASE pdb5_ro REFRESH MODE EVERY 120 MINUTES;

-- 修改自动刷新为手动刷新
SQL> ALTER PLUGGABLE DATABASE pdb5_ro REFRESH MODE MANUAL;

-- 修改为不刷新模式,注意:就无法再更改为手动或者自动刷新模式了
SQL> ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;
SQL> ALTER PLUGGABLE DATABASE pdb5_ro REFRESH MODE NONE;
SQL> ALTER PLUGGABLE DATABASE OPEN;

结语

本来想着,等测试开发结束,帮他们直接刷新到正式即可,但是不行,因为要保留刷新模式的话必须正式pdb一直处于read only状态,无法测试和预使用,有点小难受。

oracle 官方说明是,刷新模式可以用来做报表系统查询数据,可以用来源pdb克隆。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

作死小能手

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

lorenzathorton8

文章 0 评论 0

Zero

文章 0 评论 0

萧瑟寒风

文章 0 评论 0

mylayout

文章 0 评论 0

tkewei

文章 0 评论 0

17818769742

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文