目录
一、XTTS对平台和数据库的要求
1.1 操作系统层面
- 源端:任何平台都可,但不包括windows
- 目标端:仅支持64 bit的RedHat Linux或Oracle Linux
1.2 数据库层面
- 源端:Oracle Database - Enterprise Edition - Version 10.2.0.1 to 12.2
- 目标端:如果使用dbms_file_transfer(DFT),必须是11.2.0.4以上;
如果是RMAN,版本低于11.2.0.4时需要安装11.2.0.4的RDBMS运行11.2.0.4的实例
1.3 其他限制条件
- 源库的compatible参数不能大于目标端
- 源库和目标库字符集需要保持一致
- 目标端db_files参数必须大于源端
- 源库和生产必须处于归档模式
- 源库的RMAN配置中DEVICE TYPE DISK不能设置为COMPRESSED
- 要迁移的表空间数据文件必须都是online的或者不包括offline数据文件
- 排除系统表空间,避免冲突并检查业务表空间是否自包含
- 源库和目标库db block size必须一致
二、使用场景
- 大字节序平台到小字节序平台(AIX小机 - RedHat Linux)
- 可以实现不同版本数据库迁移+升级
- 迁移的数据量大且停机时间短
三、XTTS的前世今生
传统的传输表空间方式要求数据第一次由源端到目标端传输时,表空间必须置于read only模式,从而生产不可用。而XTTS方式则只需要在最后一次增量备份时将表空间置于read only模式,显著的减少了停机的时间
Oracle 8i 开始就引入的一种基于表空间传输TTS(Transporting Tablespaces)的物理迁移方法。支持相同平台、相同块(表空间的块,不是db_block)大小之间的表空间传输;
到了Oracle 9i后,TTS 开始支持同平台中,不同块大小的表空间传输,只能在相同平台之间进行数据移动
基于 TTS 的缺点,到了Oracle 10g正式 引入了跨平台的表空间传输方案—— XTTS(Cross Platform Transportable Tablespaces)。
XTTS相比TTS,有2个优点:一是可以实现跨平台和增量恢复,比如从小机到一体机。二是可以增量恢复,目的是为了减少停机时间。
比如同样迁移一套10T的数据库,TTS需要申请停机时间5小时,因为TTS一开始就要把表空间置为read only,但对比XTTS的区别在于最一开始的0级备份和前几次增量备份都不用把表空间改为read only,只是最后一次增量备份把表空间置为read only。这也就很大程度减少了停机时间。第一次备份的时候,可以选择开启块跟踪,第一次备份的时候会扫描整个数据文件,会把扫描的信息记录到跟踪文件里,后面的第二次、第三次的增量备份的时候,会利用跟踪文件判断更改的数据块来进行备份,这样也会提高后面备份的速度。
四、实现XTTS两个脚本的区别
使用XTTS进行数据库迁移时,可以使用Oracle提供的脚本(V3【Doc ID 1389592.1】,V4【Doc ID 2005729.1】)来完成。V3脚本可以实现非容器数据库迁移,V4脚本可以实现容器/非容器数据库迁移,并且迁移用到的命令相比V3更简单。
五、实现XTTS的两种方式
5.1 dbms_file_transfer(DFT)方式
通过DB_Link将数据文件从源系统传输到目标系统。不需要规划源系统和目标系统上的临时空间存放文件。在传输过程中自动进行数据文件转换 —— 没有单独的转换步骤。但该方式BUG较多,尤其是数据库版本较低(小于11.2.0.4)的情况下。
5.2 RMAN方式(推荐使用)
操作系统的字节序不同需要由RMAN转换。RMAN转换的输出将数据文件放置在其最终位置,目标数据库将在那里使用它们。
RMAN创建的数据文件副本在源系统和目标系统中都需要规划文件系统暂存这些文件。不过实际迁移过程中最好配置nfs使源端和目标端进行共享,这样整个迁移就会节省很多时间。
六、XTTS ——V3实验过程
6.1 实验环境
IP | 主机名 | 操作系统版本 | DB版本 | DB类型 | |
源端 | 192.168.6.100 | 11g | RedHat 7 x86 64bit |
11g | 单实例 |
目标端 | 192.168.6.101/102 | rac1/rac2 | RedHat 7 x86 64bit | 19c | rac |
6.2 解压并修改配置文件
6.2.1 源端解压脚本
[oracle@11g xtts]$ unzip rman_xttconvert_v3.zip
Archive: rman_xttconvert_v3.zip
inflating: xtt.properties
inflating: xttcnvrtbkupdest.sql
inflating: xttdbopen.sql
inflating: xttdriver.pl
inflating: xttprep.tmpl
extracting: xttstartupnomount.sql其中,常用的是下面2个文件
1)xttdriver.pl:调用xtts命令
2)xtt.properties:xtts的配置文件
6.2.2 源端编辑配置文件
[oracle@11g xtts]$ vi xtt.properties
以下为参数释义