使用数据泵基于flashback_scn+OGG微服务零停机迁移12c到19c

0    612    5

Tags:

👉 本文共约3848个字,系统预计阅读时间或需15分钟。

类似文章

OGG有传统的经典架构,也有最新的微服务,2个都可以远程捕获和应用数据,对数据库服务器是0侵入,而传统的经典架构是纯命令行模式,最新的微服务架构是图形化界面操作,几乎所有操作都可以在界面进行。相关文章可以参考:

使用数据泵+OGG微服务

使用数据泵基于flashback_scn+OGG微服务零停机迁移12c到19c

使用数据泵基于flashback_scn+OGG微服务零停机迁移12c到19c

-s是静默,-create表示创建数据,-c是指定配置文件,就是oewizard.xml,-version指定swingbench版本,-cs表示数据库连接串,-dba表示连接到oracle数据库的用户,-dbap表示连接到oracle数据库的密码,-dt表示连接类型,-ts是指定表空间为users, -u表示压测的用户,-p表示压测用户的密码,-scale是数据量,1就是1G,0.001就是1Mb数据,-tc 是并发度,-allindexes是支持所有的索引类型,-v显示详细信息,-cl表示运行在字符模式。

源端数据初始化日志:

访问:http://192.168.66.35:29000 ,用户名:oggadmin,密码:lhr

创建身份证明

访问:http://192.168.66.35:29001/

使用数据泵基于flashback_scn+OGG微服务零停机迁移12c到19c

目标端创建检查点表和心跳表(脉动表)

在目标端ora19c中,创建检查点表ogg.ckpt

使用数据泵基于flashback_scn+OGG微服务零停机迁移12c到19c

创建脉动表(Heartbeattable):

使用数据泵基于flashback_scn+OGG微服务零停机迁移12c到19c

目标库查询:

源端添加trandata和脉动表

image-20220623150718680

查询验证:

image-20220623150802600

配置ora12c到ora19c的实时同步

创建extract进程

使用数据泵基于flashback_scn+OGG微服务零停机迁移12c到19c

数据目录:/ogg213c/ogg_deploy/var/lib/data/dirdat

使用数据泵基于flashback_scn+OGG微服务零停机迁移12c到19c

创建replicate进程

使用数据泵基于flashback_scn+OGG微服务零停机迁移12c到19c

使用数据泵基于flashback_scn+OGG微服务零停机迁移12c到19c

这里,注意不要运行!!!因为目标端的数据还没有初始化完成,等用expdp导入完成后,再根据csn号进行启用!

使用数据泵基于flashback_scn+OGG微服务零停机迁移12c到19c

impdp+network导入目标端数据

参考:https://www.xmmup.com/dbbao63xiangmufenxiangshiyongora2pgqianyioracle19cdaopg13bingshiyongoggpeizhishi.html

参数介绍:

-c 使用配置文件:SOE_Server_Side_V2.xml

-cs 指定数据库连接字符串://172.72.7.20/lhrsdb

-a 自动运行

-v 显示运行统计值(使用逗号分隔,不能有空格),就是对应的指标

  • Users:用户数;
  • Tpm:每分钟事务数;
  • Tps:每秒事务数;
  • Trans:事务信息,对应swingbench的Transactions页签中的Short Name
  • Dml:包括:查询、插入、更新、删除、提交

-r 指定测试结果文件名称,默认为results.xml

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

-rr 控制台刷新显示频率(单位:秒),默认每秒显示一次;

-rt 设置负载运行时间,格式:hh:mm.sec,默认一直运行;

-min 设置内部事务最小思考时间;Min. Intra Delay Within Transactions(ms),线程思考时间(暂停时间),用于模拟实际用户操作。

-max 设置内部事务最大思考时间;Min. Intra Delay Within Transactions(ms),线程思考时间(暂停时间),用于模拟实际用户操作。

-vo 输出测试结果到文件,默认输出到控制台;

-env 打印出环境变量的信息

-bg是后台运行

执行过程:

基于csn号启用replicate进程

在启用之前,可以查询表数据,发现和源端数据量相差很大,因为源端一直在做压测产生新数据。

注意:这里的scn使用最小的scn号

使用数据泵基于flashback_scn+OGG微服务零停机迁移12c到19c

使用数据泵基于flashback_scn+OGG微服务零停机迁移12c到19c

数据已经实时同步了。

使用数据泵基于flashback_scn+OGG微服务零停机迁移12c到19c

使用数据泵基于flashback_scn+OGG微服务零停机迁移12c到19c

测试DDL和DML同步

在Oracle 12c端建表和插入数据:

从源端查看:

image-20220623165641839

查看目标端:

image-20220623165708001

可见,DDL和DML同步都已经完成!

配置ora19c到ora12c的实时同步

创建extract进程

创建replicate进程

测试DDL和DML同步

在Oracle 21c操作:

使用数据泵基于flashback_scn+OGG微服务零停机迁移12c到19c

可见,DDL和DML同步都已经完成!

反向同步也正常,可以作为回退方案!!!

OGG健康巡检

参考:https://www.xmmup.com/ogg-for-oraclejiankangxunjianguanfangjiaoben.html

使用数据泵基于flashback_scn+OGG微服务零停机迁移12c到19c

报错

若源端事务量很大,例如本文的压测,则replicate应用的时候有一定几率会报错:

WARNING OGG-01154 SQL error 1403 mapping source table LHR.ORDERS to target tableLHR.ORDERS. Database error: No data found.

WARNING OGG-02544 Unhandled error (ORA-26787: The row with key ("ORDER_ID") = (3245) does not exist in table LHR.ORDERS ORA-01403: no data found) while processing the record at SEQNO 0, RBA 11148203 in Integrated mode. REPLICAT will retry in Direct mode.

ERROR OGG-01296 Error mapping from LHR.ORDERS to LHR.ORDERS.

ERROR OGG-00664 OCI Error ORA-26804: Apply "OGG$REP19C" is disabled. (status = 26804-Sending commit command to database inbound server, 'OGG$REP19C').

解决:

1、尽量选择数据库无事务的时候的scn号或业务低的时候进行导出,一般是半夜进行

2、可以尝试将scn号往后倒退一些

3、可以尝试参数HANDLECOLLISIONS,但可能会导致数据不一致

4、查询源端和目标端所有的表是否存在外键关系,我的环境就是因为存在外键导致以上的报错(心累,这个排查花了好几天。。。)。

5、使用ogg 12.2 replicate参数DBOPTIONS ENABLE_INSTANTIATION_FILTERING(推荐)。从ogg 12.2开始通过设置replicate参数DBOPTIONS ENABLE_INSTANTIATION_FILTERING,可以使得OGG能够自动识别每张表导入后的csn,自动应用csn之后的数据,从而可以使导出数据不再需要flashback_scn号了。

其它SQL

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部