我们都被骗了,所有的跨平台迁移都可以通过XTTS实现

自从2015年初进行了xtts增量的U2L迁移测试之后,国内很多人都开始利用这种方案进行数据库跨平台迁移了,基本上都是利用Oracle 封装的perl脚本。其中Oracle MOS文档 11G – Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (文档 ID 1389592.1) 明确提到目标端环境必须是Linux,

这里该文档中的一段原话:

The source system may be any platform provided the prerequisites referenced and listed below for both platform and database are met. The destination system must be Linux, either 64-bit Oracle Linux or RedHat Linux, as long as it is a certified version. The typical use case is expected to be migrating data from a big endian platform, such as IBM AIX, HP-UX, or Solaris SPARC, to 64-bit Oracle Linux, such as Oracle Exadata Database Machine running Oracle Linux.

其实这里很容易让人产生误解,这里Oracle并非说不支持其他平台,而是说Oracle 提供的封装perl脚本不支持而已。但是手工进行xtts操作,完全是ok的;经过我的测试也是可行,这里是测试从Hp IA到Solaris Sparc的xtts增量迁移方式,供参考。

1、首先在原端创建测试表空间和测试表.

-创建测试表空间

create tablespace xtts datafile ‘+data’ size 100m; create table test0504 as select * from dba_objects where 1=2; alter table test504 move tablespace xtts;

2、备份xtts表空间文件,并传输到目标端(Solaris)

3、目标端进行文件格式转换

convert from platform ‘HP-UX IA (64-bit)’ datafile ’/tmp/xtts.dbf’ format ‘+DATA/test/datafile/xtts_new.dbf’;

4、原端进行基于SCN的增量备份(这里由于我是测试表空间,所以未启用Block track changing)

5、创建备份集传到目标端并进行备份集格式手工转换(Solaris)

将脚本保存为xtts_conv1.sql并执行,如下是脚本内容:

执行结果如下:

SQL> start xtts_conv1.sql; PL/SQL procedure successfully completed.

6、进行第一次增量应用(Solaris)

说明:为了验证增量数据是否能够同步到目标端,在进行增量备份之前,

我这里先进行了:

SQL > insert into test0504 select * fro dba_objects where rownm < 101; SQL> commit;

将如下脚本保存为apply_incr1.sql,并执行:

执行结果如下:

7、将原端表空间设置为只读模式

SQL> alter tablespace xtts read only ;

8、进行最后一次增量备份。

9、将备份集传输到目标端并进行转换。步骤略(同上)

10、最后一次应用增量备份。步骤略(同上)

11、源端导出元数据

将下列内容保存为exp_xtts.par:

执行如下命令导出xtts表空间上的元数据信息:

12、目标端导入元数据

将下列内容保存为imp_xtts.par:

执行如下命令导入元数据。

13、检查数据

我们可以看出,xtts表空间已经被迁移过来了,并且增量的数据也已经同步了。

所以我想表达的是,所有的跨平台迁移,其实都可以利用XTTS Incremental Backup 功能进行迁移,无论目标端是什么平台。当然,如果字节序相同的情况下,可以直接使用convert database 功能。

补充:

在进行增量应用时,可能会出现如下错误:

如果遇到这个错误,那么只需要将实例停掉,启动到nomount状态下执行脚本即可。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2017-06-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在Ubuntu 16.04上的三节点集群上部署CockroachDB

CockroachDB是一个开源的分布式SQL数据库,提供一致性、可伸缩性和生存性。

812
来自专栏SAP最佳业务实践

SAP最佳业务实践:FI–应收帐款(157)-10 F.13自动清算客户帐户中的未清项目

4.1 1 F.13自动清算客户帐户中的未清项目 您可以定期结算客户帐户的未清项目,例如,为发票创建了贷项凭证的情况下。 未清客户凭证已过帐。 角色:应收会计...

3445
来自专栏扎心了老铁

Linux Redis集群搭建与集群客户端实现

硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本:3.2.1 Redis已经成功安装,安装...

37312
来自专栏数据和云

【云端起舞】快速查找Oracle公有云服务上VM服务器的IP地址

编辑手记:在使用SSH连接数据库的时候,大多数的公有云服务通过IP地址与对应的VM服务器关联,这篇文章将会引导你查找Oracle公有云服务上连接到VM实例的IP...

3216
来自专栏Laoqi's Linux运维专列

Kubernetes 1.8.6 集群部署–监控redis(十三)

1173
来自专栏惨绿少年

NTP时间服务器 搭建

1.1 NTP简介 NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。它的用途是把计算机的时钟同步...

2940
来自专栏小灰灰

时序数据库InfluxDB之备份和恢复策略

首先创建一个数据库 yhhblog, 里面包含两个measurement,对应的数据如下

1782
来自专栏黑白安全

Linux新手渗透指南:从枚举到内核利用

许多人都认为Linux是最安全的操作系统,因此在对Linux的安全问题上也放松了警惕。那么事实真的如此吗?其实安全从来都只是相对的,Linux也不例外。虽然它加...

843
来自专栏搜云库

CentOs7.3 搭建 Redis-4.0.1 Cluster 集群服务

CentOs7.3 搭建 Redis-4.0.1 Cluster 集群服务 Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key...

49010
来自专栏云计算教程系列

如何在Ubuntu 16.04上添加交换空间

添加一些交换空间是提高服务器响应能力和防止应用程序内存不足错误的最简单方法之一。在本教程中,我们将介绍如何将交换文件添加到Ubuntu 16.04服务器中。

1714

扫码关注云+社区