iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >XTTS跨平台传输表空间实现数据迁移的方法是什么
  • 467
分享到

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

2024-04-02 19:04:59 467人浏览 八月长安
摘要

这篇文章主要介绍“XTTS跨平台传输表空间实现数据迁移的方法是什么”,在日常操作中,相信很多人在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脚本。脚本功能及参数如下:XTTS跨平台传输表空间实现数据迁移的方法是什么

三、 传输限制

ü 主库操作系统不支持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

参数说明:

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

源库、目标库创建目录:

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

您可能感兴趣的文档:

--结束END--

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

本文链接: https://www.lsjlt.com/news/62759.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • XTTS跨平台传输表空间实现数据迁移的方法是什么
    这篇文章主要介绍“XTTS跨平台传输表空间实现数据迁移的方法是什么”,在日常操作中,相信很多人在XTTS跨平台传输表空间实现数据迁移的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,...
    99+
    2022-10-18
  • oracle数据库表空间迁移的方法是什么
    Oracle数据库表空间迁移有多种方法,以下是几种常见的方法:1. 使用Oracle Data Pump工具:Oracle Data...
    99+
    2023-09-15
    oracle数据库
  • MOS怎么利用RMAN可传输表空间迁移数据库到不同字节序的平台
    小编给大家分享一下MOS怎么利用RMAN可传输表空间迁移数据库到不同字节序的平台,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2022-10-18
  • vue组件间数据传递实现的方法是什么
    本篇内容主要讲解“vue组件间数据传递实现的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue组件间数据传递实现的方法是什么”吧!(1)props属性:在父组件中,可以通过子组件标签...
    99+
    2023-07-04
  • 大数据中大屏报表组件间的联动交互效果实现方法是什么
    这篇文章给大家介绍大数据中大屏报表组件间的联动交互效果实现方法是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在迅猛发展的信息时代,大屏展示已经广泛应用于通讯、电力、军队指挥机构, 在提供共享信息、决策支持、态势显...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作