oracle表的incremental,XTTS(Cross Platform Incremental Backup) 的测试例子

本帖最后由 王硕 于 2016-1-3 18:17 编辑

对于数据库的跨平台迁移,大 家所熟悉的方法有很多,例如传统的传输表空间技术(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(以及修改相关的环境变量)

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF7AD.tmp.png

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

3. 源端解压 rman convert 脚本

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF7AE.tmp.jpg

4. 源端修改 xtt.properties 内容

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF7AF.tmp.jpg

说明:

tablespaces:表示你需要传输的表空间名称

platformid: 表示源端平台编号,该值可以从 v$transportable_platform 获取

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

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF7BF.tmp.png

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

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF7C0.tmp.jpg

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

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF7C1.tmp.jpg

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

6. 将数据文件传输到目标端

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

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

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF7C2.tmp.jpg

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

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

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

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF7C3.tmp.jpg

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

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF7D4.tmp.png

转换之后,如下:

[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. 创建增量数据(源端数据库)

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF7D5.tmp.png

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

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF7F5.tmp.png

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

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF7F6.tmp.jpg

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

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

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF7F7.tmp.png

注 意:这里传递增量数据信息的时候,还需要将源端 xtts 目录下的 xttplan.txt,以及 tsbkupmap.txt 文件都传输到目标端。每当你进行一次增量的备份操作,这2个文件的内容都会发现变化。每一次增量操作之后,都需要将这2个文件传到目标端数据库的 xtts 目录中。

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

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

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF808.tmp.png

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

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

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF828.tmp.png

说明:我们可以看到关键性的操作已经关闭,之所以后面会报 ORA-00205 错误,是因为我们的用于转换的临时辅助实例 XTT 是 nomount 状态,是没有控制文件的,因此这个错误直接忽略之.

14.  最后将表空间相关的元数据插入到目标端数据库

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

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF829.tmp.png

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

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

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF83A.tmp.png

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

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

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF83B.tmp.png

2) 导入元数据

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF84B.tmp.png

17. 验证数据是否 OK

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsF84C.tmp.jpg

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

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

------ The End

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值