超大数据量迁移方案,XTTS vs OGG

时间:2023-02-24 14:08:30


需求

由于X86服务器的性价比超高,很多客户在很早就开始大规模的U2L改造,也导致IOE中的I最先被去掉了。不过当前还是有一些存量客户使用的UNIX系统,当需要将UNIX上的Oracle数据迁移到Linux平台上时,就会用到跨平台迁移方案了,常见的如 expdp/impdp 逻辑导出导入方式、XTTS 、OGG等。
正好近期和朋友讨论了一下 XTTS 和 OGG 对超大型数据库的迁移方案对比。所以就写下来记录一下。

方案

XTTS方案

超大数据量迁移方案,XTTS vs OGG

xtts迁移主要由Oracle官方提供的xttdriver.pl工具实现,该工具可以从MOS下载下来,具体操作方式网上已经有很多人写过了,就不再复述了。
大致步骤为:
「Step1:源数据备份」

  • 检查自包含,确认需要迁移的表空间。
  • 源端开启BCT(Block Change Tracking),为后期抽取增量做准备。
  • xttdriver.pl -p 执行一个数据库全备,准备一块临时空间存放。

「Step2:格式转换」

  • xttdriver.pl -c 调用rman convert将备份文件转换为Linux格式文件。

「Step3:增量同步」

  • xttdriver.pl -i 同步增量数据

「Step4/5: 割接」

  • 停止业务,防止写入数据,源库表空间值为Readonly。
  • expdp源库导出元数据
  • impdp目标库导入元数据

ogg方案

超大数据量迁移方案,XTTS vs OGGogg方案

「Step1:ogg软件安装」

  • 源库和目标库安装ogg软件
  • 源库开启捕获,获取scn号

「Step2:全备份」

  • 发起一个RMAN全备份,根据scn恢复到中间服务器

「Step3:导出导入」

  • expdp导出中间服务器数据
  • impdp导入目标数据库

「Step4:增量同步」

  • ogg开启实时同步

「Step5:割接」

  • 割接时应用链接直接切换至目标库即可。

比一比优略

「方案对比」 「XTTS」 「OGG」
割接停机时间 导出导入元数据耗时较长,而且受限于数据对象数量。
而且导入统计信息耗时特别长,建议排除统计信息导入。
停机窗口基本等于0,可以实现零停机切换。
操作复杂度 主要依赖xttdriver.pl工具集实现,操作复杂度较高 主要依赖ogg软件实现,操作复杂度较高
风险点 1)元数据导入时,一是时间较长。二是如果导入过程中失败了再次导入可能失败,从而割接失败。
2)在迁移准备过程中新增了数据文件,还需要进行新增操作。
1)逻辑同步方式,需要校验同步数据的准确性。虽然ogg足够强,但是如果操作手法不够丝滑,还是会有数据不同步的情况发生。
2)如果源库数据类型特别复杂,可能遇到不支持的数据类型。
适用情况 数据量特别大(数十TB、数百TB)
对象数量不多
数据对象复杂
<5TB的系统初始化可以使用expdp
>5TB的系统初始化可以结合使用tts
数据对象种类单,特别适合SAP系统迁移

「无论是哪种方案,各有利弊。都需要经过多次测试,方顺利完成项目。」