需求
由于X86服务器的性价比超高,很多客户在很早就开始大规模的U2L改造,也导致IOE中的I最先被去掉了。不过当前还是有一些存量客户使用的UNIX系统,当需要将UNIX上的Oracle数据迁移到Linux平台上时,就会用到跨平台迁移方案了,常见的如 expdp/impdp 逻辑导出导入方式、XTTS 、OGG等。
正好近期和朋友讨论了一下 XTTS 和 OGG 对超大型数据库的迁移方案对比。所以就写下来记录一下。
方案
XTTS方案
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方案
ogg方案
「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系统迁移 |
「无论是哪种方案,各有利弊。都需要经过多次测试,方顺利完成项目。」