love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

Phone:18180207355 提供专业Oracle/MySQL/PostgreSQL数据恢复、性能优化、迁移升级、紧急救援等服务

XTTS(Cross Platform Incremental Backup)的测试例子

本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

本文链接地址: XTTS(Cross Platform Incremental Backup)的测试例子

对于数据库的跨平台迁移,大家所熟悉的方法有很多,例如传统的传输表空间技术(TTS),如果是10gR2+版本,字节序相同的话,那么还能进行rman convert database。甚至使用其他的第三方数据同步软件,例如GoldenGate,DSG,DDS,shareplex等等。

对于上述的技术,各有相互的优势,对于数据的逻辑迁移,后面的数据校对工作是比较麻烦的。

因此,对于数据迁移,我个人还是更倾向去使用物理迁移。convert database功能限制太多,必须要去源端和目标端字节序一致,如果是字节序不同,例如从AIX迁移至Linux(x86),那么只能通过TTS来操作。

对于传统的TTS,如果数据量较大的情况下,很难满足要求,为此Oracle提供了增强版的XTTS功能,可以进行增量操作,这可以最大程度的降低停机时间。这一功能之前Oracle仅仅针对exadata开发,后面对于非exadata环境也可以进行使用了。

 

对于XTTS的增量操作,Oracle提供了2种方式来进行,分别如下:
1)dbms_file_transfer
2)RMAN 备份

对于第一种方法,要求目标端数据库版本必须是11.2.0.4以及更新的版本。如果数据库版本低于11.2.0.4,
那么只能使用第2种方式。即使使用第2种方法,如果数据库版本低于11.2.0.4,那么目标端环境,仍然需要
安装11.2.0.4以及更新版本的临时环境。因为XTTS增量的核心脚本功能必须是基于11.2.0.4(+)版本。

如下是我的一个简单测试,是基于RMAN备份的方式,供参考!

1. 目标端安装11.2.0.4软件环境(如果不用ASM,那么不需要安装grid)

该步骤略.

2. 目标端准备convert Instance(以及修改相关的环境变量)

注意,只需要将辅助实例启动到nomount状态即可.

 

3. 源端解压rman convert脚本

4. 源端修改xtt.properties内容

说明:
tablespaces:表示你需要传输的表空间名称
platformid: 表示源端平台编号,该值可以从v$transportable_platform获取

5. 源端运行perl脚本,准备Prepare操作

该操作执行完毕之后,会在xtts目录下产生几个文件,其中xttplan.txt文件中的内容如下:

该文件中的数值,数据库的SCN。如果后面再次运行脚本进行增量操作时,该值会发现改变。

上述脚本是perl脚本产生的rman convert脚本,需要将该脚本传递到目标端主机。注意,上述脚本文件格式需要注意,同时并行度是默认的,可以进行调整。
6. 将数据文件传输到目标端

这里你可以直接使用如下的方式进行scp:
scp oracle11@133.37.253.3:/telephone_cdr/oracle11203/dfcopydir/TEST_TAB_5.tf /ogg/11204/xtts

我这里直接进行ftp 传递,因为scp有问题,操作如下:

7. 将源端的rman convert脚本传到目标端

这里在传递文件的时候,将源端的xtts目录下的所有文件都传递到目标端。如果直接在目标端解压
rmancovert程序,那么还需要修改相关的配置文件,以及将源端的xttplan.txt等传过来。

我这里省略了传递其他文件的步骤:

8. 目标端进行数据文件的转换

转换之后,如下:
[ora1124@cszwbdb1 xtts]$ cd test/
[ora1124@cszwbdb1 test]$ ls -ltr
total 1048588
-rw-r—– 1 ora1124 dba 1073750016 Feb 10 10:19 TEST_TAB_5.xtf
[ora1124@cszwbdb1 test]$
9. 创建增量数据(源端数据库)

10. 源端数据库创建增量备份

上述步骤的增量备份信息,会写入到如下txt文件中。

11. 将增量备份信息传到目标端

将$/telephone_cdr/oracle11203/backup/0hputq9s_1_1 传到目标端:

注意:这里传递增量数据信息的时候,还需要将源端xtts目录下的xttplan.txt,以及tsbkupmap.txt

文件都传输到目标端。每当你进行一次增量的备份操作,这2个文件的内容都会发现变化。每一次增量操作之后,都需要将这2个文件传到目标端数据库的xtts目录中。

对于一个比较大量的系统来讲,上述的增量操作,我们可以进行多次。假设我们进行了多次操作之后,在停机时间的时候,再将源端数据库中需要传输的表空间设置为只读模式,如下:

12. 源端数据库最后一次增量操作

13. 目标端进行增量转换和数据写入同步

在测试的过程中,发现了不少的问题,需要进行排除,最后发现该脚本本身提供了debug功能,如下:

说明:我们可以看到关键性的操作已经关闭,之所以后面会报ORA-00205错误,是因为我们的用于
转换的临时辅助实例XTT是nomount状态,是没有控制文件的,因此这个错误直接忽略之.
14.  最后将表空间相关的元数据插入到目标端数据库

该perl脚本本身提供了产生脚本的功能,如下:

产生的脚本内容在/ogg/11204/xtts/xttplugin.txt文件中,我们创建相关的directory和network_link即可。
不过我这里创建link后,impdp有问题,因此我直接通过exp/imp 元数据的方式来进行了,如下:

15.  源端数据库,导致元数据

16.  目标端数据库导入元数据

1)首先创建相关的用户信息(其中roger用户是我的增量操作中创建的测试用户)

2) 导入元数据

17. 验证数据是否OK

我们可以看到,最后我们的增量操作的数据,已经可以查询到了.

备注:在最近的一个运营商项目中,客户的2套10TB的RAC,我计划使用该方法来进行迁移(AIX–>Linux)。

 

4 Responses to “XTTS(Cross Platform Incremental Backup)的测试例子”

  1. Says:

    rman_xttconvert_1.4.2.1.zip 从哪里来?

  2. Says:

    详见MOS [1389592.1] Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup

  3. Tina Ding Says:

    I have followed your steps. but I got error at step 16 during imp, the error is ” ORA-19722: datafile /u0/exports/test/oradata/TTB5_18.xtf is an incorrect version’. I have already put the source tablespace in the read only. Can you help?

  4. roger Says:

    I need more detail,you can send message to my email,oracledba@live.cn.

Leave a Reply

You must be logged in to post a comment.