ORACLE 11GR2 xtts dbms_file_transfe传输方式讲解

作者简介:孙显鹏,Oracle 十年从业经验,拥有11G ocp认证,精通内部原理,擅长调优,解决疑难问题,致力于帮助客户解决生产过程过出现的性能问题,提高生产效率!爱好书法!

前言:

XTTS(增强的表空间传输)是TTS(表空间传输)的增强版,可实现数据库之间的表空间迁移,特别是在异构环境下数据量特别大时是最佳的选择方案。XTTS+incarnation backup可以极大降低迁移时的停机时间窗口。通过多次增量备份恢复可达到减少和原库之间的日志间隔,从而达到降低最终迁移时的时间窗口。XTTS+incarnation backup 方式非常高效。下面演示如何使用XTTS+incarnation backup 和dbms_file_transfe数据文件传输方式迁移或者升级数据库。

说明:

既然环境为12C,那么为什么不使用12c的xtts呢?因为12c的xtts要求原库版本最低为12c所以目前12C的xtts使用范围还是比较小。11GR2提供了XTTS+incarnation backup 功能,原库最低版本为10G,目标库版本必须为11.2.0.4,所以11GR2 的 xtts 目前使用非常广泛。

环境:

Xtt版本:11.2.0.4

从linux 6 +oracle 11.2.0.3 到 linux 7 +oracle 12.2.0.1.0

需要迁移表空间如下:

对应数据文件:

主要步骤说明:

准备阶段

建立directory 对象和dblink

配置环境变量

配置xtts 配置文件

通过dbms_file_transfer 方式传输并转化字节编码(该方式不支持raw设备),建议使用dbms_file_transfer方式。

表空间自包含检查

前滚阶段

表空间自包含检查

原库执行增量备份

传输增量备份到目标库

转换目标库的增量备份字节编码

–如果在此时原库添加了表空间或者增加了数据文件,那么需要执行额外操作。

表空间传输阶段

表空间自包含检查

原库表空间设置为只读

重复第二步操作

导入metadata数据到目标库

修改原库表空间为读写模式

后续验证数据

数据测试

详细操作步骤:

Note:

source_db: 表示在原库操作

dest_db:表示在目标库操作

因为这里是自己的测试环境,不会发生其他业务操作,所以省略了表空间自包含检查,但是生产环境每个步骤前请检查表空间自包含,因为中间有可能违反该约束,非常重要!

准备阶段

使用dbms_file_transfer方式传输和转换数据文件。

srcdir,dstdir–指定原库和目标库目录名–详细阅读xtt.properties注释

backupformat–指定增量备份在原库存放位置

stageondest–指定增量备份在目标库存放位置

backupondest–指定增量备份转换后在目标库存放位置,如果指定为ASM磁盘组,需要设置asm_home和asm_sid

因为使用dbms_file_transfer方式,不需要数据文件在原库和目标库存放和转换位置,该方式使用dblink在传输时自动转换字节编码,推荐使用该方式。

dest_db:

source_db:

dest_db:

监控:

source_db:

dest_db:

虚拟机环境,4g大小数据文件,速度大概4分钟,效率较高,磁盘使用率没有发现100%。

原库修改数据,做测试用:

前滚阶段:

source_db:

磁盘93%–红色,该步骤会消耗IO资源

dest_db:

以为上面为报错信息,再次运行-r , 报错如下

进入asm磁盘组查看转换的增量备份已经存在,说明已经应用!

所以先不管Connected to an idle instance. 信息

表空间传输

destdb:

使用-L 选项执行:

建立impdp 脚本:

修改脚本:

执行报错:

因为没有该用户!

建立用户:

再导入用户其他对象元数据:

修改用户的默认表空间和默认临时表空间:

建立和原库对应的临时表空间:

修改表空间属性:

后续验证数据:

用户角色:

对象权限

用户表空间权限

无效对象检查:

统计信息检查:

关于dblink

如果存在问题,导入底层表link$,然后alter system flush shared_pool

使用imp/exp导入。

copy 原库的tnsname.ora 内容到目标库

进行spa测试

业务数据比对

业务数据测试

修改RAC 公网和VIP和scan地址为原库地址—整库迁移!!

我的环境中原库是存在standby,xtts 完成后启动备库:

备库数据也已经同步,xtts对备库本来也就没什么影响。

优化:

  • 先测试一个表空间传输,处理BUG和相关问题,测试网络,预估时间。
  • 表空间自包含检查:(必须进行检查,且每次增量备份前必须做检查)

  • 开启块跟踪–加快增量备份速度

  • 开启rman并发

  • 开启多个scp 拷贝数据文件和增量备份
  • xtts表空间元数据导入时先不要导入STATISTICS:

然后导入除了table和index 外的对象:

 

未经允许不得转载:Oracle一体机用户组 » ORACLE 11GR2 xtts dbms_file_transfe传输方式讲解

相关推荐