千家信息网

XTTS跨平台传输表空间实现数据迁移的方法是什么

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"XTTS跨平台传输表空间实现数据迁移的方法是什么",在日常操作中,相信很多人在XTTS跨平台传输表空间实现数据迁移的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作
千家信息网最后更新 2026年11月03日XTTS跨平台传输表空间实现数据迁移的方法是什么

这篇文章主要介绍"XTTS跨平台传输表空间实现数据迁移的方法是什么",在日常操作中,相信很多人在XTTS跨平台传输表空间实现数据迁移的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"XTTS跨平台传输表空间实现数据迁移的方法是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、 XTTS概述

XTTS(Cross-Platform transport tablespace)意为跨平台传输表空间。XTTS实际上是TTS的增强功能。TTS意为传输表空间,原理是将业务表空间从一个库传到另一个库,以达到数据迁移的目的。XTTS则可以支持跨平台字节格式、增量进行传输(跨平台传输表空间仅支持oracle 11g或以上)。

本文采用xtts v4版本,并且使用RMAN增量备份的方式进行两库之间迁移表空间,以实现最少的停机时间。

二、 规划

源库使用RMAN增量xtts迁移表空间tbs1 & tbs2到目标库。整个操作步骤分为准备阶段、前滚阶段、传输阶段。

在准备阶段中,需要准备一个软件包:rman_xttconvert_VER4.zip。将这个zip包解压后,里面会有一个xttdriver.pl脚本。脚本功能及参数如下:

三、 传输限制

ü 主库操作系统不支持windows;

ü xtts v4版本仅支持oracle 11.2.0.4或以上

ü 源库的compatible参数必须不能比目标库大(向下兼容),因此,XTTS可以用于升级操作;

ü 源库必须处于归档模式;

ü 源库RMAN默认设备类型需要配置为DISK,且RMAN的配置不能设置COMPRESSED,如果设置了,可能会报以下错误:

ORA-19994:cross-platform backup of compressed backups different endianess;

ü 源库RMAN配置不能设置为BACKUP TYPE TO COPY,必须配置为BACKUP TYPE TO BAKCUPSET

ü 源库RMAN配置不能配置默认通道配置为SBT

ü 被传输的表空间必须是online,并且不存在offline数据文件。该表空间必须是read write;

ü 如果表空间是read only模式,那就没必要使用RMAN增量和DFT方式迁移了,可以直接用传统XTTS方式进行迁移。

ü ASM只能被用于目标端最终存放路径,这个版本xtts不能将备份放在ASM上;

ü 目标存放备份的位置,oracle用户必须有读写权限。

四、 思路清晰

1. 准备阶段

1) 创建表空间0级备份;

2) 源端传输备份文件到目标端;

3) 以目标端字节格式,还原数据文件到目标端;

2. 前滚阶段

1) 源库创建增量备份;

2) 传输增量备份和必要文件到目标端;

3) 目标端转换增量备份,并应用备份为目标库数据文件;

4) 重复上述操作,直到准备进行最后的表空间传输。

3. 传输阶段

1) 源库中表空间设置为read only;

2) 最后一次执行前滚阶段;

3) 目标端使用DataPump导入元数据对象;

4) 目标库设置表空间为read write。

五、 操作步骤

1. 初始化设置阶段

1) 目标端安装数据库软件并创建数据库,要求字符集和国家集与源库保持一致,并且数据库软件版本不小于源库。

2) 确认目标库创建相应的用户,并赋予权限

源库检查用户信息

SQL> select 'create user '||username||' identified by '||''''||password||''''||';' from dba_users where default_tablespace in('TBS1','TBS2');

源库检查角色权限

SQL> select 'grant '||GRANTED_ROLE||' to '||grantee||';' from dba_role_privs where grantee in(select username from dba_users where default_tablespace in('TBS1','TBS2'));

目标库根据上述查询结果进行创建。

3) 解压rman_xttconvert_VER4.zip到/home/oracle/xtts目录

$ cd /home/oracle/xtts

$ unzip rman_xttconvert_VER4.zip

4) 配置xtt.properties文件

tablespaces=tbs1,tbs2

platformid=13

src_scratch_location=/home/oracle/xtts/bak

dest_datafile_location=+DATA/ORCL/datafile

dest_scratch_location=/home/oracle/xtts/bak

asm_home=/u01/app/11.2.0/grid

asm_sid=+ASM1

parallel=2

参数说明:

源库、目标库创建目录:

$ mkdir -p /home/oracle/xtts/bak

5) 源端将/home/oracle/xtts下所有文件传给目标端

$ scp -r /home/oracle/xtts/* 172.16.70.170:/home/oracle/xtts/

6) 源端和目标端设置TMPDIR

(oracle用户环境变量)

源库:$export TMPDIR=/home/oracle/xtts

目标库:$export TMPDIR=/home/oracle/xtts

2. 准备阶段

在这个阶段,源端表空间数据文件会备份,备份会传输到目标端

1) 源端创建备份

执行以下命令

$ perl xttdriver.pl --backup

这个命令会执行以下动作:

- 创建备份,并放置在src_scratch_location目录中

- 创建res.txt文件,放置在TMPDIR中

2) 将第一步产生的文件传到目标端

$ scp res.txt 172.16.70.170:/home/oracle/xtts/

$ scp /home/oracle/xtts/bak/* 172.16.70.170:/home/oracle/xtts/bak/

注:数据文件要传在目标端dest_scratch_location目录中,res.txt要传在目标端TMPDIR中。

3) 目标端还原数据文件

执行以下命令

$ perl xttdriver.pl --restore

当这一步完成,数据文件将会被传输到目标端dest_datafile_location最终位置。

3. 前滚阶段

在这个阶段中,源库会创建一个增量备份,传输到目标库。并且会转换为目标库字节格式,并应用于目标库。这个阶段可以运行多次,每一个成功的增量备份所花的时间应该比之前的要少,并且使目标库的数据与源库更接近。

1) 源库创建表空间的增量备份集

源库执行以下命令

$ perl xttdriver.pl --backup

这个命令会对传输的表空间产生一个增量备份集。备份集位于src_scratch_location目录中。

并且会产生两个文件:tsbkupmap.txt,incrbackups.txt

2) 传输增量备份集到目标端

将上一步骤产生的增量备份集传输到目标端dest_scratch_location目录,res.txt要传在目标端TMPDIR中。

$ scp `cat incrbackups.txt` 172.16.70.170:/home/oracle/xtts/bak/

$ scp res.txt 172.16.70.170:/home/oracle/xtts/

3) 目标端执行以下命令

$ perl xttdriver.pl --restore

目标端给表空间数据文件应用增量备份。

4) 重复前滚阶段(可选)

如果你需要使目标库更接近源库,则需要重复进行前滚阶段;如果目标库已经足够接近源库,那就直接进行传输阶段。

4. 传输阶段

在传输阶段,源库需要被设置为read only模式,目标库会被应用最后一次增量备份。在目标数据文件一致后,将执行一次普通的传输表空间的步骤,从源库导出元数据对象并导入目标库。在此阶段结束之前,源库只能通过read only方式访问数据。

1) 源库将表空间设置read only

SQL> alter tablespace tbs1 read only;

SQL> alter tablespace tbs2 read only;

2) 源库创建最后一次增量备份集

$ perl xttdriver.pl --backup

注;由于表空间设置为read only,执行备份会警告:

####################################################################

Warning:

------

Warnings found in executing /home/oracle/xtts/backup_Jul28_Tue_14_33_57_440//xttpreparenextiter.sql

####################################################################

Prepare newscn for Tablespaces: 'TBS2'

DECLARE*

ERROR at line 1:

ORA-20001: TABLESPACE(S) IS READONLY OR,

OFFLINE JUST CONVERT, COPY

ORA-06512: at line 284

3) 传输至目标端

$ scp `cat incrbackups.txt` 172.16.70.170:/home/oracle/xtts/bak/

$ scp res.txt 172.16.70.170:/home/oracle/xtts/

4) 目标端最后一次应用

$ perl xttdriver.pl --restore

5) 源库导出元数据

SQL> create directory xtts_dir as '/home/oracle/xtts/bak';

$ expdp system/oracle dumpfile=xtts.dmp directory=xtts_dir logfile=expdp_xtts.log transport_tablespaces=tbs1,tbs2 exclude=statistics;

导出其他对象

$ expdp system/oracle directory=xtts_dir dumpfile=expdp_other_mets.dmp logfile=expdp_other_meta.log content=metadata_only schemas=tbs1,tbs2

6) 将导出的dmp文件传输到目标端同目录

$ scp *.dmp 172.16.70.170:/home/oracle/xtts/bak/

7) 目标库导入元数据

SQL> create directory xtts_dir as '/home/oracle/xtts/bak';

$ impdp system/oracle dumpfile=xtts.dmp directory=xtts_dir transport_tablespace=y datafiles='+DATA/orcl/datafile/tbs1_5.dbf','+DATA/orcl/datafile/tbs2_6.dbf';

导入其他对象元数据

$ impdp system/oracle dumpfile=expdp_other_mets.dmp directory=xtts_dir;

8) 目标库设置表空间read write;

SQL> select tablespace_name,file_name from dba_data_files;

SQL> alter tablespace tbs1 read write;

SQL> alter tablespace tbs2 read write;

9) 目标库统计信息手工收集

SQL> exec dbms_stats.gather_schema_stats(ownname => 'tbs1',options => 'GATHER AUTO');

SQL> exec dbms_stats.gather_schema_stats(ownname => 'tbs2',options => 'GATHER AUTO');

10) 检查物理和逻辑块损坏,并验证数据

RMAN> validate tablespace tbs1,tbs2 check logical;

验证数据略

到此,关于"XTTS跨平台传输表空间实现数据迁移的方法是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

目标 传输 数据 空间 备份 阶段 文件 增量 配置 目录 命令 准备 方法 应用 对象 方式 步骤 版本 用户 学习 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网与科技 广州互联网科技公司 北京互联网科技有限公司 互联网科技金融公司 互联网科技汛 广西拼得多互联网科技有限公司 中国最先进互联网科技公司 互联网科技公司的市场部门 温州喔噻互联网科技有限公司 阿里巴巴算科技企业还是互联网 随着互联网科技发展 贵州叶脉互联网科技有限公司所属行业 昊天互联网科技有限公司 中科明德北京互联网科技 国大互联网教育科技有限公司薪资 广州富喜互联网络科技 互联网风格科技公司名称 南京一网一红互联网科技有限公司 互联网科技收购价值 第三届互联网大会安防黑科技 互联网科技工作委员会 奇酷互联网科技 互联网金融科技平台 互联网科技公司有哪些 互联网科技宣传片 互联网科技大奖都有哪些公司 杭州披云加互联网科技有限公司 从那以后互联网科技有限公司 互联网科技企业商标注意事项 兰石爱特工业互联网科技分公司
0