ITPub博客

首页 > 数据库 > Oracle > 【kingsql分享】Oracle跨版本迁移之XTTS_V4版本的实施

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

原创 Oracle 作者:kingsql 时间:2019-02-13 10:24:20 4 删除 编辑

本文介绍了将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/,如需转载,请注明出处,否则将追究法律责任。

全部评论
OCM

注册时间:2013-02-28

  • 博文量
    237
  • 访问量
    848408