本文带大家了解 如何利用 refresh 升级 pdb ,生产正确的切换流程是什么。
Oracle PDB Refresh迁移升级实战
准备阶段
1.源库创建一个用于refresh的容器用户并赋权
enmo1904db1> create user c##enmo_refresh_user identified by XXXXXXX container=all;
enmo1904db1> grant create session,sysoper,create pluggable database to c##enmo_refresh_user container=all;
2.编辑目标环境tnsnames.ora
将源库连接串写入文件中;或者直接在dblink中指明连接串信息也行。
3.创建dblink
enmo1910db1> create public database link enmo_refresh_dblink connect to c##enmo_refresh_user identified by XXXXXXX using ‘enmo_refresh_tns’;
4.创建clone refresh pdb
enmo1910db1> create pluggable database enmo_newdb from enmodb@enmo_refresh_dblink refresh mode manual;
5.根据实际情况数选择刷新策略
enmo1910db1> alter pluggable database enmo_newdb refresh;
enmo1910db1> alter pluggable database enmo_newdb refresh mode every 1 hours;
割接阶段
0.割接前,先手动触发一次刷新,以缩短割接时的追日志时间。
enmo1910db1> alter pluggable database enmo_newdb refresh;
1.通知业务停应用服务,然后一致性关闭一次源库,再以read only模式打开备用。(确保无新业务进来,job也不再运行)
enmo1904db1> alter pluggable database enmodb close immediate instances=all;
enmo1904db1> alter pluggable database enmodb open read only instances=all;
2.确保目标refresh库是mount状态,然后做最后一次同步刷新
enmo1910db1> alter pluggable database enmo_newdb close immediate instances=all;
enmo1910db1> alter pluggable database enmo_newdb refresh;
3.(可选项)对核心表进行数据比对,比对完毕后再次关闭pdb
enmo1910db1> alter pluggable database enmo_newdb open read only;
比对过程略…
enmo1910db1> alter pluggable database enmo_newdb close immediate instances=all;
4.,激活新库
enmo1910db1> alter pluggable database enmo_newdb refresh mode none;
5.open新库,运行datapatch升级pdb;
enmo1910db1> alter pluggable database enmo_newdb open instances=all; —此时pdb是open受限状态,不用担心业务能连进来
$ORACLE_HOME/OPatch/datapatch -pdbs enmo_newdb
6.重启pdb解除受限状态;检查失效对象编译;让开发启用新库的连接串(或者修改dns配置信息),结束。
所以整个升级割接流程中,停机时间耗费在了:
- 1.源库关库、启动环节(5-10分钟)
- 2.目标库手动最后一次同步刷新数据(控制在2-5分钟)
- 3.比对核心业务表数据(此环节可根据情况自行调节)
- 4.目标库升级运行datapatch(3-10分钟)
- 5.其他检查确认开库(5-10分钟)
那么我们整体的升级割接的时间大概控制在15-30分钟左右。
本文内容节选自云和恩墨 李海清 在墨天轮的直播课分享。
更多内容详见《经典知识库:Oracle PDB Refresh实战分享 - 李海清》视频、PPT课件。