Overview of XTTS

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 各版本的功能比对如下:

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

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

全量迁移方式

对于 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)Recovery Manager(RMAN) – (using xttdriver.pl -p and -c options)

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

xttdriver.pl opation

xtt.properties parameters

file description

  • 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