【kingsql分享】Oracle跨版本迁移之XTTS_V4版本的实施

本文介绍了将v4跨平台可传输表空间(xtts)与rman增量备份结合使用所需的步骤,

以最少的应用程序停机时间迁移数据。

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

希望本文能对您有所帮助,如需脚本,请留言,谢谢您的关住和支持

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


首先是将完整备份从源复制到目标。

然后,通过使用一系列增量备份(每个备份都小于最后一个备份),

在需要任何停机时间之前,可以将目标系统中的数据几乎与源系统同步。

此过程仅在最终增量备份和元数据导出/导入期间需要停机时间。


本文档描述了可与11.2.0.4及更高版本一起使用的跨平台增量备份v4过程。

这个新过程是先前XTTS版本的简化版本。

此版本有以下区别:

I.此过程使用简化的命令。一个命令(--backup)用于源,一个命令(--restore)用于目标。

//原来要-p,-c,-i,-r,-s等一系列华丽的操作,现在只要2个参数

II.此过程只需要在源和目标的$tmpdir(res.txt)之间复制一个文件。

III.此过程将自动解析添加的数据文件,无需额外干预。

IV.此过程允许在不运行恢复的情况下从源中取出多个增量备份。在此之后,将立即恢复目标中的所有增量备份。


1-初始设置

执行以下步骤配置环境以使用跨平台增量备份:

1.1-安装目标数据库软件并创建目标数据库

在将运行目标数据库的目标系统上安装所需的Oracle数据库软件。

在目标系统上标识(或创建)一个数据库,以便将表空间传输到其中,

并创建表空间传输所需的模式用户。 即,在所传输的表空间中拥有对象的用户。


1.2-标识要传输的表空间

标识要传输的源数据库中的表空间。

表空间ts1和ts2将在本文档的示例中使用。

如上所述,必须遵循可传输表空间的限制和注意事项。

1.3-在源系统上安装XttConvert脚本

在源系统上,作为Oracle软件的所有者,

下载并提取作为rman-xttconvert-ver4.zip附加到本文档的支持脚本。

[oracle@kingsql]$ pwd

/home/oracle/xttv4


[oracle@kingsql]$ unzip rman_xttconvert_VER4.zip

inflating: xtt.properties

inflating: xttcnvrtbkupdest.sql

inflating: xttdbopen.sql

inflating: xttdriver.pl

inflating: xttprep.tmpl

extracting: xttstartupnomount.sql


1.4-创建必要的目录

源端:

由xtt.properties文件中的src_scratch_location参数定义的备份位置。


目标端:

由xtt.properties文件中的dest_scratch_location参数定义的备份位置。

目标上数据文件的位置,由xtt.properties文件中的dest_datafile_location参数定义。


1.5-在源系统上配置xtt.properties

使用特定于站点的配置编辑源系统上的xtt.properties文件。

有关xtt.properties文件中参数的详细信息,

请参阅下面附录中配置文件xtt.properties部分中的参数说明。

对于此过程,只有以下参数是必需的。其他可供选择和/或使用。

tablespaces

platformid

src_scratch_location

dest_scratch_location

dest_datafile_location

(12c特殊添加) -- usermantransport=1

1.6-将xttconvert脚本和xtt.properties复制到目标系统

[oracle@kingsql]$ scp -r /home/oracle/xttv4 oracle@destsql:/home/oracle/xttv4


1.7-设置TMPDIR环境变量

[oracle@kingsql]$ export TMPDIR=/home/oracle/xttv4

[oracle@destsql]$ export TMPDIR=/home/oracle/xttv4


2.-准备阶段

在准备阶段,将要传输的表空间的数据文件备份到源上,

备份传输到目标系统,并由xttdriver.pl脚本还原。


2.1-在源系统上运行备份

在源系统上,以Oracle用户身份登录,环境(ORACLE_HOME和ORACLE_SID环境变量)指向源数据库,

按如下方式运行备份:

[oracle@kingsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup


2.2-将以下文件传输到目标系统:

从源“src-scratch-location”到目标目标“scratch-location”创建的备份

从源$tmpdir到目标$tmpdir的res.txt文件:

[oracle@kingsql]$ scp /src_scratch/* oracle@destsql:/dest_scratch

[oracle@kingsql]$ scp res.txt oracle@destsql:/home/oracle/xttv4


2.3-还原目标系统上的数据文件

在目标系统上,以Oracle用户身份登录,环境(ORACLE_HOME和ORACLE_SID环境变量)指向目标数据库,

按如下方式运行还原:

[oracle@destsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore


3-前滚阶段

在此阶段,将从源数据库创建增量备份,传输到目标系统,转换为目标系统endian格式,

然后将其应用到转换后的目标数据文件副本以进行前滚。 此阶段可以运行多次。

每一次连续的增量备份所需的时间应少于先前的增量备份所需的时间,

并将使目标数据文件副本在源数据库中更为新。

在这个阶段,正在传输的数据(源)是完全可访问的。

3.1-为源系统上正在传输的表空间创建增量备份

在源系统上,以Oracle用户身份登录,环境(ORACLE_HOME和ORACLE_SID环境变量)指向源数据库,

运行如下创建增量步骤:

[oracle@kingsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup


此步骤将为xtt.properties中列出的所有表空间创建增量备份。


3.2-将增量备份和res.txt传输到目标系统

将增量备份(在src-scratch-location和dest-scratch-location之间)和res.txt(在$tmpdirs之间)

从源传输到目标。当前备份的增量备份文件列表可以是在源系统的incrbacks.txt文件中找到。

[oracle@kingsql]$ scp `cat incrbackups.txt` oracle@destsql:/dest_scratch_location

[oracle@kingsql]$ scp res.txt oracle@destsql:/home/oracle/xttv4


3.3-对目标系统上的数据文件副本应用增量备份

在目标系统上,以Oracle用户身份登录,环境(ORACLE_HOME和ORACLE_SID环境变量)指向目标数据库,

按如下所示运行前滚数据文件步骤:

[oracle@destsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore


前滚步骤连接到目标数据库,并为所传输的每个表空间在表空间的数据文件上应用增量备份。

尽管可以对源执行多个备份而不在目标上应用,但是必须在上次备份之后和在目标上执行“--restore”之前复制res.txt。


3.4-重复前滚第3阶段(3.1-3.3)或继续第4阶段,最终增量备份

此时有两种选择:

如果需要使目标数据库中的文件与生产系统更接近同步,则从步骤3.1开始,重复前滚阶段。

如果目标数据库中的文件与源数据库的距离尽可能接近,则继续到传输阶段。


4-最终增量备份

在此阶段,通过创建和应用最终增量备份,将源数据设为只读,并使目标数据文件与源数据库保持一致。

在目标数据文件保持一致之后,将执行常规的可传输表空间步骤,

从源数据库导出对象元数据并将其导入目标数据库。

在本阶段结束之前,只能以只读模式访问正在传输的数据。


4.1-将源数据库中的源表空间更改为只读

在源系统上,以Oracle用户身份登录,环境(ORACLE_HOME和ORACLE_SID环境变量)指向源数据库,

将要传输的表空间更改为只读。

SQL> alter tablespace TS1 read only;

SQL> alter tablespace TS2 read only;


4.2-创建正在源系统上传输的表空间的最终增量备份:

在源系统上,以Oracle用户身份登录,环境 (ORACLE_HOME和ORACLE_SID环境变量) 指向源数据库,

按如下方式运行备份:

[oracle@kingsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup


注意:由于表空间处于只读模式,因此可以忽略收到的以下警告:

####################################################################
Warning:
------
Warnings found in executing /home/oracle/radranly/convert_source/backup_Nov9_Fri_09_08_26_213//xttpreparenextiter.sql
####################################################################
Prepare newscn for Tablespaces: 'T1'
DECLARE*
ERROR at line 1:
ORA-20001: TABLESPACE(S) IS READONLY OR,
OFFLINE JUST CONVERT, COPY
ORA-06512: at line 284  


4.3-将增量备份和res.txt传输到目标系统

[oracle@kingsql]$ scp 'cat incrbackups.txt' oracle@destsql:/dest_scratch_location

[oracle@kingsql]$ scp res.txt oracle@destsql:/home/oracle/xttv4


4.4-将上次增量备份应用于目标数据文件

最终增量备份必须应用于目标数据文件,此步骤将对目标上的数据文件应用最后一次增量备份。

[oracle@destsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore


5-传输阶段:将对象元数据导入目标数据库

在这个阶段,您需要从源中导出表空间的元数据,并将表空间插入到目标中。

5.1-目标库创建目录对象

SQL> create directory hzh as '/home/oracle/destination/convert';

SQL> GRANT READ, WRITE ON DIRECTORY hzh TO system;


5.2-导入生成新的xttplugin.txt

在目标系统上,以Oracle用户身份登录,环境(ORACLE_HOME和ORACLE_SID环境变量)指向目标数据库,

运行generate data pump tts命令步骤,如下所示:

[oracle@destsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -e


这将在xttplugin.txt文件中生成一个示例命令,

并正确设置transportable tablespaces参数“transport_tablespaces”和“transport_datafiles”。

此外,还将创建一个数据泵导出文件。


5.3-在目标数据库上创建数据库链接

连接到目标数据库,创建连接到源数据库的数据库链接

SQL> create public database link ttslink connect to system identified by hongzhuohui using 'kingsql';

验证数据库链接是否可以正确访问源系统

SQL>  select name from v$database@ttslink;


5.4-修改并执行IMPDP命令:

[oracle@dest]$ impdp directory=hzh logfile=tts_imp.log network_link=ttslink \ 

transport_full_check=no \ 

transport_tablespaces=TS1,TS2 \ 

transport_datafiles='+DATA/prod/datafile/ts1.285.771686721', \ 

'+DATA/prod/datafile/ts2.286.771686723', \ 

'+DATA/prod/datafile/ts2.287.771686743' 


6 -验证数据

6.1-检查表空间

在此步骤中,传输的数据在目标数据库中是只读的。执行特定于应用程序的验证以验证传输的数据。

RMAN> validate tablespace TS1, TS2 check logical;


6.2-更改目标数据库中的表空间读写

最后一步是使目标表空间在目标数据库中读写。

SQL> alter tablespace TS1 read write; 

SQL> alter tablespace TS2 read write; 


7 - 清理环境

源端:src_scratch

目标端:dest_scratch

源端和目标端

$TMPDIR


转载请注明出处

hongzhuohui@qq.com

本来好几年没有更新博客了,最近我的学生们都在勤劳的写博客,所以带动了我。。

--------------------------------------------------------------------------------------------------------------

我曾发现有写网站直接拷贝粘贴,连图片都能复制,请把作者也加上谢谢O(∩_∩)O

--------------------------------------------------------------------------------------------------------------


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28389881/viewspace-2629881/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28389881/viewspace-2629881/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
适用于: Oracle Database Cloud Schema Service - 版本 N/A 和更高版本 Oracle Database Exadata Cloud Machine - 版本 N/A 和更高版本 Oracle Cloud Infrastructure - Database Service - 版本 N/A 和更高版本 Oracle Database Exadata Express Cloud Service - 版本 N/A 和更高版本 Oracle Database Backup Service - 版本 N/A 和更高版本 Linux x86-64 用途 注意: 考虑使用新release的版本V4的过程。 这个版本极大地简化了相关步骤。 请参考文档:V4 Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup Note 2471245.1 本文档覆盖了在 12c 及更高版本上,使用平台传输表空间(XTTS)以及 RMAN 增量备份,以最小的应用停机时间,在不 同 endian 格式的系统间迁移数据的步骤。 第一步是从源系统拷贝一份 full backup 到目标系统。之后,使用一系列的增量备份(每一份都比前一份要小),这样在停 机前可以做到目标系统的数据和源系统“几乎”一致。需要停机的步骤只有最终的增量备份及元数据导出/导入。 这个文档描述了在 12c 下使用平台增量备份的步骤,关于 11g 下的步骤,请您参考 Note:1389592.1。 平台增量备份特性并不能减少 XTTS 的其它步骤花费的时间,比如元数据导出/导入。因此,如果数据库内有很多元数据 (DDL),比如 Oracle E-Business Suite 和其它打包程序,那么平台增量备份特性并不能带来很多好处;对于这样的 环境,迁移花的大部分时间是花在处理元数据上,而不是数据文件的转换及传输。 只有被迁移表空间里物理存储的数据库对象才会被拷贝至目标系统;如果要迁移存储在其它表空间的其它类型的对象 (比如存储在 SYSTEM 表空间内的 pl/sql 对象,sequences 等),你可以使用数据泵来拷贝这些对象至目标系统。 注意: 考虑使用新release的版本V4的过程。 这个版本极大地简化了相关步骤。 请参考文档:V4 Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup Note 2471245.1 平台增量备份的主要步骤有: 1. 初始化设置 2. 准备阶段(源库数据仍然在线) 1. 备份要传输的表空间(0级备份) 2020/1/5 Document 2102859.1 https://myaccess.oraclevpn.com/+CSCO+1075676763663A2F2F7A6266727A632E68662E62656E7079722E70627A++/epmos/faces/Document… 3/14 2. 把备份及其它必须的文件发送到目标系统 3. 在目标系统恢复数据文件至目标端的 endian 格式 3. 前滚阶段(源库数据仍然在线 – 要重复这个阶段足够多次,使得目标数据文件拷贝和源库越相近越好) 1. 在源库创建增量备份 2. 把增量备份及其它必须的文件发送到目标系统 3. 把增量备份转换成目标系统的 endian 格式并且把增量备份应用至目标数据文件 4. 为下次增量备份确定 next_scn 5. 重复这些步骤直到已经准备好了操作传输表空间 NOTE: 在版本3,如果一个数据文件被加入到一个表空间或者一个新的表空间名字被加入到xtt.properties文件,会出现 一个Warning并且需要额外的处置 1. 传输阶段(此时源库数据需要置于 READ ONLY 模式) 1. 在源库端把表空间置为 READ ONLY 2. 最后一次执行前滚阶段的步骤 这个步骤会让目标系统的数据文件拷贝和源库数据文件完全一致并且产生必要导出文件。 在数据量非常大的情况下,这个步骤所花费的时间要显著的少于传统的 XTTS 方式,因为增量备份会很 小。 3. 使用数据泵把这个表空间的元数据导入至目标数据库 4. 把目标数据库的相关表空间置为 READ WRITE

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值