首页 > oracle知识 > oracle备份 >

Oracle异构平台迁移利器之XTTS(使用dbms_file_transfer方式)

作者: 初见博客 分类: oracle备份 发布时间: 2021-07-15 13:50
本文共约8723个字,系统预计阅读时间或需25分钟。

[TOC]

20210508110517

一、XTTS简介

1.1、简介

XTTS(Cross Platform Transportable Tablespaces)属于跨平台迁移表空间,它是从Oracle 8i开始就引入的一种基于表空间传输的物理迁移方法,命名为TTS,经历各个版本的不断演进,从11gR2开始,在相对停机时间要求日益减少的情况,为了应对越来越大的数据量跨平台迁移,Oracle推出了新的解决方案—加强版TTS(以下简称XTTS),XTTS使用增量备份的方式实现跨平台的数据迁移,从真正意义上大大缩短停机时间。在U2L如火如荼的今天,通过XTTS快捷、高效、平稳、安全的将Oracle数据库“小型机+集中式存储”环境迁移至“X86架构平台+分布式存储”已然成为一大神技。

XTTS的发展历史:

  • 从8i,tts技术的诞生,引入了相同平台相同块大小之间的表空间传输。到了9i,tts开始支持同平台中,不同块大小的表空间传输。
  • 10g时代,不仅引入了跨平台的表空间传输方案,也就是我们说的xtts;10gR2开始支持传输整个数据库。
  • 11gR1开始,可以传输表空间中的某个特定分区。
  • 在11.2.0.4开始,为了应对越来越大的数据量,而停机时间甚至还在减少的情况,出现了新的解决方案—使用增量备份方式的xtts。

XTTS 各版本的功能比对如下:

20210416121546

在 Oracle11gR2(推荐使用 11.2.0.4 及之后版本)以后,Oracle 推出了通过前滚数据文件,拷贝数据后再进行多次增量备份的 XTTS 来完成迁移过程,在这个过程中通过开启块跟踪特性,根据 SCN 号来执行一系列的增量备份,并且通过对块跟踪文件的扫描,来完成增量数据的增量备份应用,最后在通过一定的停机时间,在源库 read only 的状态下进行最后一次增量备份转换应用,使得整个迁移过程的停机时间同源库数据块的变化率成正比。这样大大的缩短了停机时间。

为了减少正式的停机时间,oracle在xtts中引入了rman的增量备份前滚功能。通过一次又一次的增量备份,使停应用的时间主要包含四个方面:将表空间置为只读,最后进行一次增量前滚,元数据导入,数据文件校验。和传统的表空间传输相比,通过减少数据文件的传输时间,而大大减少了整体停机时间。

1.2、全量迁移方式

对于XTTS的全量操作,Oracle提供了2种方式来进行,分别如下:
1)dbms_file_transfer(DFT) — (using xttdriver.pl -S and -G options)

DBMS_FILE_TRANSFER 包是 Oracle 提供的一个用于复制二进制数据库文件或在数据库之间传输二进制文件的程序包,在 XTTS 迁移中,利用不同的参数进行数据文件传输转换完成迁移。

要求:目标端数据库版本必须是11.2.0.4以及更新的版本。如果数据库版本低于11.2.0.4(大于Oracle10R1),那么目标端环境,仍然需要安装11.2.0.4以及更新版本的临时环境,因为XTTS增量的核心脚本功能必须是基于11.2.0.4(+)版本。

如果准备使用DDBMS_FILE_TRANSFER 作为全量迁移方法,那么必须创建三个数据库对象:

  1. 源数据库中的数据库目录对象。
  2. 目标数据库中的数据库目录对象,放置数据文件的位置。
  3. 在目标数据库中创建指向源库的数据库链接。

2)RMAN(Recovery Manager )备份 — (using xttdriver.pl -p and -c options)

通过使用 rman-xttconvert 包提供的参数,对数据库进行基于表空间的备份,将备份产生的备份集写到本地或者 NFS 盘上,然后再通过 rman-xttconvert 包中包含的不同平台之间数据文件格式转换的包对进行数据文件格式转换,最后通过记录的表空间 FILE_ID 号生产元数据的导入脚本,通过 db_link 执行完成。

1.3、脚本rman_xttconvert_v3.zip

XTTS基于一组 rman-xttconvert_3.0 的脚本文件包(Mos 1389592.1)来实现跨平台的数据迁移,主要包含 Perl脚本xttdriver 脚本。xttdriver.pl 是备份、转换和增量应用的执行脚本,xtt.properties 是属性文件,其中包含 XTTS 配置的路径、参数等。

脚本下载地址:11G – Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (Doc ID 1389592.1),内容参考:http://blog.itpub.net/26736162/viewspace-2767429/

脚本rman_xttconvert_v3.zip在小麦苗的微云下载:https://share.weiyun.com/57HUxNi 路径:小麦苗分享的资料 > 数据库系列 > Oracle数据库 > Oracle工具。

1.3.1、xttdriver.pl的选项

20210416121555

1.3.2、xtt.properties参数

20210416121718

20210416121712

1.3.3、文件介绍

  • xttplan.txt – containing the tablespace names, their current SCNs and their datafile numbers
  • xttnewdatafiles.txt – containing the tablespace names, datafile numbers, the destination Directory object name and the source filenames
  • getfile.sql – The PL/SQL script(formatting ours) that will be used at the destination to get the datafilesfrom the source
  • xttpreparesrc.sql – the PL/SQL scriptused to create the files in this step
  • xttprepareNaNd – the command
  • tsbkupmap.txt – containing the tablespace names, datafile numbers and the incremental backup pieces
  • incrbackups.txt – containing the actual location of the incremental backup pieces
  • rmanincrNaNd – containing the RMAN scripts used to create the incremental backups.
  • xttdetnewfromscnsrc.sql – the PL/SQLscript used to create the files in this step
  • xttplan.txt.new– after the first run of’xttdriver.pl -i’ this is just a copy of the xttplan.txt

1.4、参考文档

  • 11G – Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (文档 ID 1389592.1)
  • 12c – 使用跨平台增量备份来减少传输表空间的停机时间 (文档 ID 2102859.1)
  • 12C – Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (文档 ID 2005729.1)

http://blog.itpub.net/26736162/viewspace-2767646/

http://blog.itpub.net/26736162/viewspace-2767429/

1.5、迁移过程导图

20210416121701

二、XTTS迁移示例

环境情况如下:

源库 目标库
版本 11.2.0.3 11.2.0.4
Oracle_SID LHR11g LHR11G
用户表空间 TS_LHR、TS_XXT、USERS TS_LHR、TS_XXT、USERS
业务用户 lhr、xxt lhr、xxt
平台 Linux x86 64-bit Linux x86 64-bit
字节序 Little Little
IP地址 172.17.0.3 172.17.0.4
字符集 AMERICAN_CHINA.AL32UTF8 AMERICAN_CHINA.AL32UTF8
归档模式 归档模式 归档模式

注:虽然我这里使用的同构平台,但是异构平台下的步骤是一样的,例如从Aix到Linux,该过程完全适用。

2.1、数据库检查

  • 源库必须为归档模式
  • 源端和目标的字符集需要一致
  • 源库的操作系统不是Windows
  • 源库的compatible参数最低为11.1.0.0.0
  • 源库的RMAN 配置里DEVICE TYPE DISK不能设置为COMPRESSED
  • 源端和目标端必须支持可传输平台
  • 源端需要迁移的表空间需要自包含
  • 源库开启块改变跟踪功能,加快增量备份的速度
  • 源端和目标端时区需要保持一致
  • 目标端建议打最新的PSU补丁
  • 目标端的db_files参数不能小于源端
  • 要迁移的表空间的数据文件必须都是online或者不包含offline的数据文件
  • 检查源数据库和目标库具有重名的表空间
  • 检查是否存在应用用户建在system,sysaux,users上的情况
  • 基于XMLSchema的XMLType对象检查
  • 失效对象检查
  • 迁移对象统计
  • 无论是源还是目标,GLOGIN.sql的存在都可能导致语法错误
  • 源库的版本不能大于目标库的版本

2.1.1、查询平台字节序和字符集

 

 

2.1.2、获取需要迁移的业务表空间和业务用户

排除系统表空间,避免冲突:

 

 

目标端需要删除已存在的和源库同名的表空间:

 

 

2.1.3、表空间自包含

需要传输的表空间为TS_LHR、TS_XXT、USERS,要确保这3个表空间为自包含的表空间。

 

 

在表空间传输的中,要求表空间集为自包含的,自包含表示用于传输的内部表空间集没有引用指向外部表空间集。

2.1.4、获取用户及其权限的SQL

 

 

2.1.5、检查环境变量

确保环境变量配置正确:

 

 

结果:

 

 

2.1.6、开启块改变跟踪功能

Block change tracking 进程记录自从上一次0级备份以来数据块的变化,并把这些信息记录在跟踪文件中。RMAN 使用这个文件判断增量备份中需要备份的变更数据。这极大的提高了备份性能和速度,RMAN 可以不再扫描整个文件以查找变更数据。

 

 

2.1.7、时区需要一致

 

 

2.1.8、目标端补丁情况

建议目标端打最新的PSU补丁。

 

 

2.1.9、组件检查

目标端需要包含源端的所有组件。

 

 

2.1.10、目标端的db_files参数不能小于源端

 

 

2.1.11、迁移对象个数统计

需要确认,非业务用户下是否有业务数据,例如SYS用户是否有业务数据:

 

 

执行过程:

 

 

2.2、全量迁移

在此步骤中,表空间的数据文件将从源端数据库传输到目标端数据库,本步骤只需要执行一次,数据文件传输过程中不影响源端数据库正常访问。

此处有2种方法:dbms_file_transfer和rman方法。对于数据文件很多的情况下来说,dbms_file_transfer是推荐的方法。

此处使用dbms_file_transfer方式。

2.2.1、源端和目标端都需要配置XTTS脚本

 

 

2.2.2、创建相关Directories和dblink

1、源端创建SOURCEDIR:

 

 

2、目标端创建DESTDIR:

 

 

3、目标端创建DBLINK

在目标端创建指向源端的dblink:

 

 

2.2.3、xttdriver.pl -S做迁移准备

首先,确保源库处于OPEN阶段,所有表空间都处于online状态:

 

 

在源端执行 xttdriver.pl -p做迁移准备:

 

 

此过程会产生2个脚本,xttnewdatafiles.txt和getfile.sql

 

 

2.2.4、将源端xttnewdatafiles.txt和getfile.sql传到目标端

 

 

2.2.5、在目标端执行数据文件的拷贝

 

 

本步骤将花费数据库迁移的大部分时间,因为本步骤会传输源端的数据文件到目标端。

本步骤执行完成,可以在目标端数据库数据文件存储目录发现从源端传输过来的数据文件。

若字节序格式不同,也会在该步骤自动隐式进行转换。

执行过程:

 

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注