千家信息网

11g使用增量备份来执行跨平台传输表空间减少停机时间(xtts_rman)

发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,使用跨平台传输表空间来迁移数据所需要的停机时间与被迁移的数据量成正比。然而,当使用增量备份跨平台迁移可以显著减小迁移数据所需要的停机时间。传统跨平台传输表空间的主要步骤:1.将源数据库中所被转输的表空
千家信息网最后更新 2024年11月22日11g使用增量备份来执行跨平台传输表空间减少停机时间(xtts_rman)

使用跨平台传输表空间来迁移数据所需要的停机时间与被迁移的数据量成正比。然而,当使用增量备份跨平台迁移可以显著减小迁移数据所需要的停机时间。

传统跨平台传输表空间的主要步骤:
1.将源数据库中所被转输的表空间设置为read only
2.将所被传输表空间所相关的数据文件传输到目标主机上
3.将数据文件转换为目标主机所使用的字节序
4.使用data pump从源数据库导出所被传输表空间所存储对象的元数据
5.在目标数据库中使用data pump导入所被传输表空间所存储对象的元数据
6.使用目标数据库中的被传输表空间设置为read write

因为数据传输时表空间必须为read only,应用程序所拥有的数据在传输时不能被用户使用。因为操作是串行操作,所以停机时间依赖于数据量的大小。如果数据量大,数据文件传输与转换的时间将会很长,所以停机时间也就会很长。

使用跨平台增量备份来减少停机时间
为了减少停机时间需要使用XTTS,Oracle为跨平台传输增强了RMAN的能力来使用增量备份前滚数据文件副本。通过使用一些列的增量备份,每一份增量备份都比上一次的小,在需要停机之前,目标系统中的数据几乎可以从源系统中获得。数据文件传输与转换所需要的停机时间就由源系统中在最后一次增量备份之后被改变的数据量所决定。

跨平台增量备份不会影响XTTS所执行其它操作所花费的时间,比如元数据的导出与导入。因此,当数据库有大量的元数据时将会看到使用跨平台增量备份执行迁移的好处会受到影响,因为迁移所需时间通常是由元数据操作所决定的,而不是由数据文件传输与转换操作所决定的。

只有物理存储被迁移数据库对象的表空间需要被传输到目标系统。如果需要被迁移的其它对象,存储在不同表空间(比如,pl/sql对象,序列,等等,存储在system表空间中),可以使用data pump来复制这些对象到目标系统。

使用跨平台增量备份传输表空间的主要步骤如下:
1.准备阶段(源数据保持为online状态)
.传输被迁移表空间所相关的数据文件到目标系统
.如果需要,将数据文件转换成目标系统所使用的字节序

2.前滚阶段(源数据保持为online状态-可以根据需要重复达个阶段多次来使用目标数据文件匹配上源数据库文件)
.在源系统中创建增量备份
.传输增量备份到目标系统
.将增量备份转换为目标系统所使用的字节序并将备份应用到目标数据文件副本

注意,对于版本号为3的脚本,如果一个数据文件被增加到表空间或者一个新的表空间名被增加到xtt.properties文件中,一个告警信息与额外的指令需要被执行。

3.传输阶段(源数据为read only)
.将源数据库中需要被传输的表空间设置为read only
.最后一次执行前滚阶段的操作,这步操作可以确保目标数据文件副本与源数据库中的数据文件处于一致状态。这步操作所花费的时间要比传统XTTS方法所需要的时间短,因为使用增量备份。
.使用data pump从源数据库中志出相关表空间中所存储对象的元数据
.在目标系统中使用data pump导出表空间所存储对象的元数据
.将目标数据库中的相关表空间设置为read write

这篇文章提供了一个例子来介绍如何使用跨平台增量备份来减少传输表空间的停机时间。

源系统可以是先决条件所引用的和平台与数据库所满足的列表中所列出任何平台。如果从一种小字节序平台迁移到Oracle Linux,那么最应该考虑的方法是使用Data Guard,可以参考Note 413484.1关于在当前小字节序平台与Oracle Linux之间Data Guard所支持的异构平台。对于Oracle 12c来说,请使用Note 2005729.1 12C - Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup.或者NOTE: Neither method supports 12c multitenant databases. Enhancement bug 22570430 addresses this limitation.

这里将介绍如何从Redhat Linux 平台上将表空间cdzj,ldjc使用跨平台增量备份的传输表空间方法来迁移到Aix平台。在执行完初始化阶段后执行以下三个阶段来执行数据的迁移操作:
准备阶段
在准备阶段,要传输的表空间的数据文件会被传输到目标系统并被转换为目标系统所使用的字节序。在准备阶段应用程序是完全可以访问源数据的。准备阶段使用RMAN备份或dbms_file_transfer,后面将会详细介绍如何选择准备阶段所要使用的方法。

前滚阶段
在前滚阶段,在准备阶段被转换后的数据文件将会使用来自源数据库的增量备份来进行前滚操作。通过多次执行该阶段的操作,每次成功的增量备份将会更小与更快的应用到数据文件副本,允许目标系统中的数据都是来自源系统中。在执行前滚阶段时应用程序可以完全访问源数据。

传输阶段
在传输阶段,在源数据库中将要被传输的表空间设置为read only状态,并且在源平台上执行最后一次增量备份并且将它传输到目标平台上并应用到数据文件副本,使用目标系统中的数据文件副本与源数据库中的数据文件保护一致。一旦数据文件状态一致,从源数据库中导出所传输表空间所存储对象的元数据,并且在目标平台导入这些元数据。最后在目标数据库中将传输过来的表空间设置为read write状态。在传输阶段应用程序是不能更新源数据的。

跨平台增量备份所支持的脚本
跨平台增量备份的核心功能是基于Oracle 11.2.0.4与之后的版本。请查看条件与建议部分了解详细信息。另外有一组支持脚本存储在rman-xttconvert_2.0.zip。其中有两个主要支持的脚本:
.Perl脚本xttdriver.pl 这个脚本用来执行跨平台增量备份传输表空间的主要步骤。
.参数文件xtt.properties 这个文件包含自已平台特定配置

执行跨平台增量备份传输表空间的条件与建议
执行跨平台增量备份传输表空间的条件
在执行跨平台增量备份传输表空间之前需要检查是否满足以下条件:
.传输表空间的限制
.其它必须满足的条件
当前版本不支持windows
源数据库的compatible参数必须设置为10.2.0或更高版本
源数据库的compatible参数必须不能比目标数据库的compatible参数的值大
源数据库必须启用了archivelog模式
尽管首选目标系统是Linux操作系统(可以是64位的Oracle Linux或者是已经认证的Redhat Linux),但这个过程也可以在其它Unix操作系统中执行。然而,对于任何non-Linux操作系统来说数据库的版本必须是11.2.0.4
源数据库的版本必须小于或等于目标数据库的版本
RMAN的缺省设备类型应该被配置为DISK
源数据库的RMAN不能对DEVICE TYPE DISK使用COMPRESSED配置。如果使用COMPRESSED配置,执行操作时可能会返回:ORA-19994: cross-platform backup of compressed backups different endianess.
源数据库中将要被迁移的表空间必须是online,并且不能包含脱机数据文件。表空间必须为read write状态。表空间为read only那么可以使用正常的XTTS方法进行迁移。

.所有步骤中执行操作的用户必须是Oracle用户并且它是OSDBA组的成员。操作系统审计被用来连接源数据库与目标数据库。
.如果准备阶段方法选择dbms_file_transfer,那么目标数据库版本必须至少为11.2.0.4。
.如果准备阶段方法选择RMAN,那么在源系统与目标系统中都要创建预备区域
.对于备库或快照备库是不支持这种操作的
.如果目标数据库版本是11.2.0.3或更低的版本,那么在目标系统中需要有一个11.2.0.4的数据库home目录来运行11.2.0.4的实例来执行增量备份的转换操作。如果目标数据库版本是11.2.0.3或更低版本,那么需要一个版本为11.2.0.4的单独的增量转换Home目录与实例。如果ASM使用11.2.0.4的转换Home,那么ASM的版本也必须是11.2.0.4,否则会触发ORA-15295(ORA-15295: ASM instance software version 11.2.0.3.0 less than client version 11.2.0.4.0)。

整个数据库迁移
如果跨平台增量备份传输表空间被用来减少整个数据库的迁移时间,那么请参考MAA提供的XTTS指南Platform Migration UsingTransportable Tablespaces(maa-wp-11g-platformmigrationtts-129269.pdf),这种迁移方法也可以用于Oracle 12c,然而对于12c有一种替代的方法可参考Note 2005729.1 12C - Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup.

选择准备阶段方法
在准备阶段,要被传输的表空间的数据文件会被传输到目标系统并且通过执行xttdriver.pl脚本进行转换。这里有两种可用的方法:
1.使用dbms_file_transfer(DFT)传输(使用xttdriver.pl -S与-G选项)
2.使用RMAN备份(使用xttdriver.pl -p与-c选项)

dbms_file_transfer方法使用dbms_file_transfer.get_file()过程来通过dblink从源系统中将数据文件传输到目标系统。dbms_file_transfer方法相比RMAN方法有以下优点:
1.不需要在源系统或目标系统中创建预备目录
2.在传输数据文件时会自动执行数据文件的转换--这里不需要再执行转换操作。

dbms_file_transfer方法要满足以下条件才能使用:
.目标数据库必须是11.2.0.4的版本。注意增量转换Home目录或实例不参与dbms_file_transfer的文件传输操作。
.在源数据库中有一个数据库目录对象它指向要被复制的数据文件
.原目标数据库中有一个数据库目录对象它指向要被存放的数据文件
.在目标数据库中有一个dblink连接到源数据库

RMAN备份方法在源系统中执行RMAN来对要被传输的数据文件生成备份。生成的备份文件必须手动跨网络传输到目标系统。在目标系统中通过执行RMAN对数据文件进行转换,如果需要,RMAN转换操作会将输出的数据文件存放在目标数据库最终存储数据文件的目录中。在原版本的xttdriver.pl中,只支持这种方法。RMAN备份方法要满足以下条件:
.在源系统与目标系统中需要为RMAN所创建的数据文件副本创建预备目录。预备目录在xtt.properties文件中分别指向参数dfcopydir与stageondest。被转换后的数据文件最终存放目录在xtt.properties文件中指向参数storageondest。

关于这些方法被提供的指令的详细信息后面会介绍,建议使用dbms_file_transfer方法。

目标数据库版本为11.2.0.3或更低版本需要安装一个单独的增量转换home与实例跨平台增量备份的核心功能(例如,增量备份转换)是基于Oracle 11.2.0.4及以后版本的。如果目标数据库版本为11.2.0.4及以后版本,那么目标数据库可以执行这种功能。然而,如果目标数据库版本为11.2.0.3或更低版本,那么为了执行增量备份转换,需要安装一个单独的11.2.0.4的软件home目录,叫作增量转换home目录,并创建一个增量转换实例,并且该实例必须启动到时nomount状态。增量转换home目录与增量转换实例是临时使用,并且只在迁移操作期间使用。

因为dbms_file_transfer准备阶段方法要求目标数据库的版本为11.2.0.4,它可以被用来执行增量备份转换功能(如上所述),增量转换home目录与增量转换实例通常只有当使用RMAN备份方法来才会使用。对于如何设置一个临时增量转换实例参考阶段1。

诊断
为了启用诊断模式,可以使用-d参数来执行xttdriver.pl脚本,或者在执行xttdriver.pl脚本之前设置环境变量XTTDEBUG=1。Debug模式会启用额外的屏幕输出并且造成所有RMAN操作使用debug命令行选项。

已知问题
1.如果源数据库包含使用键压缩的嵌套的IOTs表,那么在目标数据库home中必须安装修复Bug 14835322的补丁
2.如果想在创建增量备份时对源数据库使用块改变跟踪功能,那么需要在源数据库home中安装修复Bug 16850197的补丁
3.如果前滚阶段(xttdriver.pl -r)失败并显示以下错误信息,那么验证RMAN的DEVICE TYPE DISK不能使用COMPRESSED配置

Entering RollForwardAfter applySetDataFileDone: applyDataFileToDone: RestoreSetPieceDECLARE*ERROR at line 1:ORA-19624: operation failed, retry possibleORA-19870: error while restoring backup piece/dbfs_direct/FS1/xtts/incrementals/xtts_incr_backupORA-19608: /dbfs_direct/FS1/xtts/incrementals/xtts_incr_backup is not a backuppieceORA-19837: invalid blocksize 0 in backup piece headerORA-06512: at "SYS.X$DBMS_BACKUP_RESTORE", line 2338ORA-06512: at line 40

使用跨平台增量备份传输表空间来减少停机时间
跨平台增量备份传输表空间主要有以下四个阶段:
1.初始化设置阶段
2.准备阶段
3.前滚阶段
4.传输阶段

源系统为Redhat Linux,Oracle为11.2.0.4,目标系统为AIX,Oracle为11.2.0.4

1.初始化设置阶段
为了使用跨平台增量备份传输表空间执行以下操作来完成操作环境的配置:
1.1 安装目标数据库软件并创建目标数据库
在目标系统上安装所需要的数据库软件版本来运行目标数据库。强烈建议使用Oracle 11.2.0.4或之后的版本。注意dbms_file_transfer方法要求目标数据库为11.2.0.4。在目标系统中识别或创建一个数据库并创建需要传输的表空间及用户方案。我这里目标数据库为11.2.0.4,要被传输的用户方案为cdzj,ldjc,表空间为cdzj,ldjc。

1.2 如果需要,配置增量转换home与实例
如果目标数据库是11.2.0.3或之前版本,需要安装一个单独的增量转换home与实例。如果目标数据库是11.2.0.4或之后的版本,可以跳过这一步。注意dbms_file_transfer方法要求目标数据库的版本为11.2.0.4。如果目标数据库是11.2.0.3或之前版本,那么必须通过执行以下操作来配置一个单独的增量转换实例:
.在目标系统中安装一个新的11.2.0.4的数据库home。这就是增量转换home
.使用增量转换home启动一个实例到nomount状态,这个实例就是增量转换实例。对于增量转换实例不需要创建相应的数据库,只需要运行一个增量转换实例。

下面操作可以用来创建一个名叫xtt的增量转换实例,增量转换home为/oracle11/app/oracle/product/11.2.0/db:

IBMP740-2:/oracle11/app/oracle/product/11.2.0/db/dbs$export ORACLE_HOME=/oracle11/app/oracle/product/11.2.0/dbIBMP740-2:/oracle11/app/oracle/product/11.2.0/db/dbs$export ORACLE_SID=xttIBMP740-2:/oracle11/app/oracle/product/11.2.0/db/dbs$cat < < EOF > $ORACLE_HOME/dbs/init$ORACLE_SID.ora> db_name=xtt> compatible=11.2.0.4.0> EOFIBMP740-2:/oracle11/app/oracle/product/11.2.0/db/dbs$sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Wed Aug 16 10:47:59 2017Copyright (c) 1982, 2013, Oracle.  All rights reserved.Connected to an idle instance.SQL> startup nomountORACLE instance started.Total System Global Area  797712384 bytesFixed Size                  2250200 bytesVariable Size             490736168 bytesDatabase Buffers          268435456 bytesRedo Buffers               36290560 bytes

如果ASM被用于存储xtt.properties文件中的参数backupondest,那么实例的compatible参数的值必须等于或大于ASM磁盘组所使用的rdbms.compatible的值。

1.3 识别要被传输的表空间
识别源数据库中将要被传输的表空间。我这里要被传输的表空间为cdzj,ldjc。

1.4 如果使用dbms_file_transfer方法,那么配置目录对象与dblink
注意dbms_file_transfer方法要求目标数据库的版本为11.2.0.4,如果使用dbms_file_transfer访求,那么必须创建以下三个数据库对象:
.在源数据库中创建一个数据库目录对象,它指向要被复制的数据文件所存放的目录
.在目标数据库中创建一个数据库目录对象,它指向将要存放数据文件的目录
.在目标数据库中创建一个dblink连接到源数据库

源数据库目录对象引用源数据库中当前存放数据文件的目录。例如,下面创建目录对象指向,数据文件存放目录/home/app/oracle/product/11.2.0/dbs/,连接到源数据库房执行以下命令:

[oracle@sjjh ~]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Tue Aug 15 17:10:58 2017Copyright (c) 1982, 2013, Oracle.  All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> select a.NAME,b.NAME from v$tablespace a,v$datafile b where a.TS#=b.TS# and a.NAME in('CDZJ','LDJC');NAME                           NAME------------------------------ --------------------------------------------------------------------------------LDJC                           /home/app/oracle/product/11.2.0/dbs/ldjc01CDZJ                           /home/app/oracle/product/11.2.0/dbs/cdzj01SQL> create directory sourcedir as '/home/app/oracle/product/11.2.0/dbs';Directory created.

目标数据库目录对象引用目标数据库中将要存储数据文件的目录。这个目录是最终目标数据库将要存放数据文件的目录/oracle11/oradata/jycs/jycs/,连接到目标数据库执行以下命令

IBMP740-2:/oracle11$sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Wed Aug 16 11:23:03 2017Copyright (c) 1982, 2013, Oracle.  All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> select name from v$datafile;NAME--------------------------------------------------------------------------------/oracle11/oradata/jycs/jycs/system01.dbf/oracle11/oradata/jycs/jycs/sysaux01.dbf/oracle11/oradata/jycs/jycs/undotbs01.dbf/oracle11/oradata/jycs/jycs/users01.dbf/oracle11/oradata/jycs/jycs/example01.dbfSQL> create directory destdir as '/oracle11/oradata/jycs/jycs';Directory created.

在目标数据库中创建一个dblink连接到源数据库。例如创建一个名叫ttslink的dblink,执行以下命令:

SQL> create public database link ttslink  2    connect to system identified by "xxzx7817600"  3    using '(DESCRIPTION =  4      (ADDRESS_LIST =  5        (ADDRESS = (PROTOCOL = TCP)(HOST =10.138.130.101)(PORT = 1521))  6      )  7      (CONNECT_DATA =  8        (SERVER = DEDICATED)  9        (SERVICE_NAME =sjjh) 10      ) 11    )';Database link created.

创建dblink后验证是否可以能过dblink访问源数据库

SQL> select * from dual@ttslink;D-X

1.5 创建预备目录
在源系统与目标系统中创建预备目录,它们将被设置为xtt.properties文件中的backupformat(源系统中存放增量备份文件的目录),backupondest(目标系统中存放转换后的增量备份文件的目录)参数的值。如果使用RMAN备份方法,在源系统与目标系统中还需要为xtt.properties文件中的dfcopydir(源系统中存放数据文件副本的目录,只有使用rman备份才使用),stageondest(目标系统中存放从源系统传输过来的数据文件副本与增量备份的目录,只有使用rman备份才使用)。

在源系统中执行下面的命令分别创建backupformat目录(/home/backup),dfcopydir目录(/home/dfcopydir)

[oracle@sjjh home]$ mkdir backup[oracle@sjjh home]$ mkdir dfcopydir

在目标系统中执行下面的命令分别创建backupondest目录(/oracle11/backup),stagenodest目录(/oracle11/xtts)

IBMP740-2:/oracle11$mkdir backupIBMP740-2:/oracle11$mkdir xtts

1.6在源系统中安装xttconver脚本
在源系统中,使用Oracle软件用户,下裁与解压脚本

[oracle@sjjh xtts_script]$ unzip rman_xttconvert_v3.zipArchive:  rman_xttconvert_v3.zip  inflating: xtt.properties  inflating: xttcnvrtbkupdest.sql  inflating: xttdbopen.sql  inflating: xttdriver.pl  inflating: xttprep.tmpl extracting: xttstartupnomount.sql[oracle@sjjh xtts_script]$ ls -lrttotal 208-rw-r--r-- 1 oracle oinstall   1390 May 24 16:57 xttcnvrtbkupdest.sql-rw-r--r-- 1 oracle oinstall     52 May 24 16:57 xttstartupnomount.sql-rw-r--r-- 1 oracle oinstall  11710 May 24 16:57 xttprep.tmpl-rw-r--r-- 1 oracle oinstall 139331 May 24 16:57 xttdriver.pl-rw-r--r-- 1 oracle oinstall     71 May 24 16:57 xttdbopen.sql-rw-r--r-- 1 oracle oinstall   7969 Jun  5 08:47 xtt.properties-rw-r--r-- 1 oracle oinstall  33949 Aug 14 17:25 rman_xttconvert_v3.zip

1.7 在源系统中配置xtt.properties文件

[oracle@sjjh xtts_script]$ vi .xtt.propertiestablespaces=CDZJ,LDJC                                  --源数据库中要被传输的表空间名platformid=13                                          --源数据库的platform_iddfcopydir=/home/dfcopydir                              --源系统中存放数据文件副本的目录backupformat=/home/backup                              --源系统中存储增量备份的目录stageondest=/oracle11/xtts                             --目标系统中存储数据文件副本与增量备份的目录backupondest=/oracle11/backup                          --目标系统中存储转换后的增量备份目录,只在使用RMAN备份方法才使用storageondest=/oracle11/oradata/jycs/jycs              --目标系统中最终存储转换后数据文件的目录cnvinst_home=/oracle11/app/oracle/product/11.2.0/db    --转换Home目录cnvinst_sid=xtt                                        --转换实例SID

1.8 将源系统中的转换脚本与xtt.properties文件复制到目标系统中

IBMP740-2:/oracle11/xtts_script$ftp 10.138.130.101Connected to 10.138.130.101.220 (vsFTPd 2.2.2)Name (10.138.130.101:root): oracle331 Please specify the password.Password:230 Login successful.ftp> cd /home/xtts_script250 Directory successfully changed.ftp> ls -lrt200 PORT command successful. Consider using PASV.150 Here comes the directory listing.-rw-r--r--    1 501      501          1390 May 24 08:57 xttcnvrtbkupdest.sql-rw-r--r--    1 501      501         11710 May 24 08:57 xttprep.tmpl-rw-r--r--    1 501      501            52 May 24 08:57 xttstartupnomount.sql-rw-r--r--    1 501      501            71 May 24 08:57 xttdbopen.sql-rw-r--r--    1 501      501        139331 May 24 08:57 xttdriver.pl-rw-r--r--    1 501      501          7969 Jun 05 00:47 xtt.properties.bak-rw-r--r--    1 501      501         33949 Aug 14 09:25 rman_xttconvert_v3.zip-rw-r--r--    1 501      501           255 Aug 16 06:58 xtt.properties226 Directory send OK.ftp> lcd /oracle11/xtts_scriptLocal directory now /oracle11/xtts_scriptftp> bin200 Switching to Binary mode.ftp> get xttcnvrtbkupdest.sql200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for xttcnvrtbkupdest.sql (1390 bytes).226 Transfer complete.1390 bytes received in 7.6e-05 seconds (1.786e+04 Kbytes/s)local: xttcnvrtbkupdest.sql remote: xttcnvrtbkupdest.sqlftp> get xttprep.tmpl200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for xttprep.tmpl (11710 bytes).226 Transfer complete.11710 bytes received in 0.000196 seconds (5.834e+04 Kbytes/s)local: xttprep.tmpl remote: xttprep.tmplftp> get xttstartupnomount.sql200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for xttstartupnomount.sql (52 bytes).226 Transfer complete.52 bytes received in 0.000103 seconds (493 Kbytes/s)local: xttstartupnomount.sql remote: xttstartupnomount.sqlftp> get xttdbopen.sql200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for xttdbopen.sql (71 bytes).226 Transfer complete.71 bytes received in 0.000106 seconds (654.1 Kbytes/s)local: xttdbopen.sql remote: xttdbopen.sqlftp> get xttdriver.pl200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for xttdriver.pl (139331 bytes).226 Transfer complete.139331 bytes received in 0.001805 seconds (7.538e+04 Kbytes/s)local: xttdriver.pl remote: xttdriver.plftp> get xtt.properties200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for xtt.properties (255 bytes).226 Transfer complete.255 bytes received in 0.00012 seconds (2075 Kbytes/s)local: xtt.properties remote: xtt.propertiesIBMP740-2:/oracle11/xtts_script$ls -lrttotal 336-rw-r--r--    1 oracle11 oinstall       1390 Aug 16 15:44 xttcnvrtbkupdest.sql-rw-r--r--    1 oracle11 oinstall      11710 Aug 16 15:45 xttprep.tmpl-rw-r--r--    1 oracle11 oinstall         52 Aug 16 15:45 xttstartupnomount.sql-rw-r--r--    1 oracle11 oinstall         71 Aug 16 15:45 xttdbopen.sql-rw-r--r--    1 oracle11 oinstall     139331 Aug 16 15:45 xttdriver.pl-rw-r--r--    1 oracle11 oinstall        255 Aug 16 15:46 xtt.properties

1.9 在源系统与目标系统中设置环境变TMPDIR,它指向转换脚本所在的目录。为了执行Perl脚本xttdriver.pl设置如下。如果TMPDIR没有设置,那么脚本生成的输出文件将会存放在/tmp目录中

[oracle@sjjh ~]$ export TMPDIR=/home/xtts_scriptIBMP740-2:/oracle11$export TMPDIR=/oracle11/xtts_script

2.准备阶段
在准备阶段,被传输表空间的数据文件会被传输到目标系统并且通过执行xttdriver.pl脚本进行转换。有以下两种方法可以使用:
1. dbms_file_transfer方法
2. RMAN备份方法

对于大量数据文件使用dbms_file_transfer方法要比传输数据文件到目标系统更快。

2a.使用dbms_file_transfer方法
2a.1在源系统中执行准备操作
在源系统中,使用Oracle软件用户登录并设置相关环境变量(ORACLE_HOME与ORACLE_SID)来指向源数据库,执行以下命令:

[oracle@source]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -S

准备操作将在源系统中执行以下操作
.验证表空间是否online,read write且不包含脱机数据文件
.将创建后面所要使用的以下文件:
xttnewdatafiles.txt
getfile.sql

要被传输的一组表空间必须是online,read write状态且不包含脱机数据文件。如果在源数据库中被传输表空间的一个或多个数据文件是脱机状态或read only就会触发错误。如果表空间在整个表空间传输过程中都保持read only状态,那么就使用传统的跨平台传输表空间,不要使用跨平台增量备份传输表空间。

2a.2 传输数据文件到目标系统中
在目标系统中,使用Oracle软件用户登录并设置相关环境变量(ORACLE_HOME与ORACLE_SID)来指向目标数据库,并复制上一步生成的xttnewdatafiles.txt与getfile.sql文件到目标系统并执行操作来获取数据文件

[oracle@dest]$ scp oracle@source:/home/oracle/xtt/xttnewdatafiles.txt /home/oracle/xtt[oracle@dest]$ scp oracle@source:/home/oracle/xtt/getfile.sql /home/oracle/xtt# MUST set environment to destination database[oracle@dest]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -G

当这步操作完成后,要被传输的数据文件会存放在目标系统最终存放数据文件的目录中。转换操作会自动执行。

2b.使用RMAN备份方法
在这个阶段表空间的数据文件副本将被传输到目标系统中,并执行转换操作,且将转换后的数据文件存放在目标数据库最终存放数据文件的目录中。这个阶段的操作只会执行一次。在执行这个阶段的操作时被传输的数据在源数据库中完全可以被访问。

2b.1在源系统中执行准备操作
在源系统中,以Oracle软件用户登录并设置环境变量(ORACLE_HOME与ORACLE_SID)来指向源数据库,执行以下命令

[oracle@sjjh ~]$ cd /home/xtts_script[oracle@sjjh xtts_script]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -p============================================================trace file is /home/xtts_script/prepare_Aug16_Wed_15_50_19_497//Aug16_Wed_15_50_19_497_.log=============================================================--------------------------------------------------------------------Parsing properties----------------------------------------------------------------------------------------------------------------------------------------Done parsing properties----------------------------------------------------------------------------------------------------------------------------------------Checking properties----------------------------------------------------------------------------------------------------------------------------------------Done checking properties----------------------------------------------------------------------------------------------------------------------------------------Starting prepare phase--------------------------------------------------------------------Prepare source for Tablespaces:                  'CDZJ'  /oracle11/xttsxttpreparesrc.sql for 'CDZJ' started at Wed Aug 16 15:50:19 2017xttpreparesrc.sql for  ended at Wed Aug 16 15:50:19 2017Prepare source for Tablespaces:                  'LDJC'  /oracle11/xttsxttpreparesrc.sql for 'LDJC' started at Wed Aug 16 15:51:08 2017xttpreparesrc.sql for  ended at Wed Aug 16 15:51:08 2017Prepare source for Tablespaces:                  ''''  /oracle11/xttsxttpreparesrc.sql for '''' started at Wed Aug 16 15:52:05 2017xttpreparesrc.sql for  ended at Wed Aug 16 15:52:05 2017Prepare source for Tablespaces:                  ''''  /oracle11/xttsxttpreparesrc.sql for '''' started at Wed Aug 16 15:52:06 2017xttpreparesrc.sql for  ended at Wed Aug 16 15:52:06 2017Prepare source for Tablespaces:                  ''''  /oracle11/xttsxttpreparesrc.sql for '''' started at Wed Aug 16 15:52:07 2017xttpreparesrc.sql for  ended at Wed Aug 16 15:52:07 2017--------------------------------------------------------------------Done with prepare phase----------------------------------------------------------------------------------------------------------------------------------------Find list of datafiles in system----------------------------------------------------------------------------------------------------------------------------------------Done finding list of datafiles in system--------------------------------------------------------------------

这个准备操作在源系统中执行以下操作:
.创建要被传输表空间的数据文件副本并且将它们存储在xtt.properties文件中dfcopydir所指定的目录中

[root@sjjh dfcopydir]# ls -lrttotal 7340056-rw-r----- 1 oracle oinstall 2147491840 Aug 16 15:50 CDZJ_7.tf-rw-r----- 1 oracle oinstall 5368717312 Aug 16 15:52 LDJC_6.tf

.验证表空间是否为online,read write状态,并且不包含脱机数据文件
.创建后面所需要用到的以下文件

 xttplan.txt rmanconvert.cmd

xttplan.txt文件的内容如下:

[root@sjjh xtts_script]# cat xttplan.txtCDZJ::::146901565868057LDJC::::146901565868056

该文件中的数值,数据库的SCN。如果后面再次运行脚本进行增量操作时,该值会发现改变。

rmanconvert.cmd的内容如下:

[root@sjjh xtts_script]# cat rmanconvert.cmdhost 'echo ts::CDZJ';  convert from platform 'Linux x86 64-bit'  datafile   '/oracle11/xtts/CDZJ_7.tf'  format '/oracle11/oradata/jycs/jycs/%N_%f.dbf' parallelism 8;host 'echo ts::LDJC';  convert from platform 'Linux x86 64-bit'  datafile   '/oracle11/xtts/LDJC_6.tf'  format '/oracle11/oradata/jycs/jycs/%N_%f.dbf' parallelism 8;

上述脚本是perl脚本产生的rman convert脚本,需要将该脚本传递到目标端主机。注意,上述脚本文件格式需要注意,同时并行度是默认的,可以进行调整。

要被传输的一组表空间必须是online,read write状态且不包含脱机数据文件。如果在源数据库中被传输表空间的一个或多个数据文件是脱机状态或read only就会触发错误。如果表空间在整个表空间传输过程中都保持read only状态,那么就使用传统的跨平台传输表空间,不要使用跨平台增量备份传输表空间。

2b.2 将数据文件副本传输到目标系统中
在目标系统中以Oracle软件用户登录,从源系统中将上一步生成的数据文件副本传输到目标系统中。源系统中数据文件副本存储在xtt.properties文件中dfcopydir参数所指定的目录(home/dfcopydir)中。在目标系统中数据文件副本必须存放xtt.properties文件中stageondest目录(/oracle11/xtts)中。

IBMP740-2:/oracle11/xtts$ftp 10.138.130.101Connected to 10.138.130.101.220 (vsFTPd 2.2.2)Name (10.138.130.101:root): oracle331 Please specify the password.Password:230 Login successful.ftp> cd /home/dfcopydir250 Directory successfully changed.ftp> ls -lrt200 PORT command successful. Consider using PASV.150 Here comes the directory listing.-rw-r-----    1 501      501      2147491840 Aug 16 07:50 CDZJ_7.tf-rw-r-----    1 501      501      5368717312 Aug 16 07:52 LDJC_6.tf226 Directory send OK.ftp> lcd /oracle11/xttsLocal directory now /oracle11/xttsftp> bin200 Switching to Binary mode.ftp> get LDJC_6.tf200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for LDJC_6.tf (5368717312 bytes).226 Transfer complete.5368717312 bytes received in 45.68 seconds (1.148e+05 Kbytes/s)local: LDJC_6.tf remote: LDJC_6.tfftp> get CDZJ_7.tf200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for CDZJ_7.tf (2147491840 bytes).226 Transfer complete.2147491840 bytes received in 18.52 seconds (1.132e+05 Kbytes/s)local: CDZJ_7.tf remote: CDZJ_7.tfIBMP740-2:/oracle11/xtts$ls -lrttotal 14680112-rw-r--r--    1 oracle11 oinstall 5368717312 Aug 16 16:53 LDJC_6.tf-rw-r--r--    1 oracle11 oinstall 2147491840 Aug 16 16:54 CDZJ_7.tf

2b.3 在目标系统中转换数据文件副本
在目标系统中以Oracle软件用户登录并设置环境变量(ORACLE_HOME与ORACLE_SID)来指向目标数据库,将步骤2b.1中生成的脚本文件复制到目标系统中,然后执行以下命令来转换数据文件:

IBMP740-2:/oracle11/xtts$ftp 10.138.130.101Connected to 10.138.130.101.220 (vsFTPd 2.2.2)Name (10.138.130.101:root): oracle331 Please specify the password.Password:230 Login successful.ftp> cd /home/xtts_script250 Directory successfully changed.ftp> lcd /oracle11/xtts_scriptLocal directory now /oracle11/xtts_scriptftp> bin200 Switching to Binary mode.ftp> ls -lrt200 PORT command successful. Consider using PASV.150 Here comes the directory listing.-rw-r--r--    1 501      501          1390 May 24 08:57 xttcnvrtbkupdest.sql-rw-r--r--    1 501      501         11710 May 24 08:57 xttprep.tmpl-rw-r--r--    1 501      501            52 May 24 08:57 xttstartupnomount.sql-rw-r--r--    1 501      501            71 May 24 08:57 xttdbopen.sql-rw-r--r--    1 501      501        139331 May 24 08:57 xttdriver.pl-rw-r--r--    1 501      501          7969 Jun 05 00:47 xtt.properties.bak-rw-r--r--    1 501      501         33949 Aug 14 09:25 rman_xttconvert_v3.zip-rw-r--r--    1 501      501           255 Aug 16 06:58 xtt.properties-rw-r--r--    1 501      501            50 Aug 16 07:51 xttplan.txt-rw-r--r--    1 501      501           354 Aug 16 07:51 rmanconvert.cmd-rw-r--r--    1 501      501            96 Aug 16 07:52 xttnewdatafiles.txtdrwxr-xr-x    2 501      501          4096 Aug 16 07:52 prepare_Aug16_Wed_15_50_19_497226 Directory send OK.ftp> get xttplan.txt200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for xttplan.txt (50 bytes).226 Transfer complete.50 bytes received in 5e-05 seconds (976.6 Kbytes/s)local: xttplan.txt remote: xttplan.txtftp> get rmanconvert.cmd200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for rmanconvert.cmd (354 bytes).226 Transfer complete.354 bytes received in 5.9e-05 seconds (5859 Kbytes/s)local: rmanconvert.cmd remote: rmanconvert.cmdftp> get xttnewdatafiles.txt200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for xttnewdatafiles.txt (96 bytes).226 Transfer complete.96 bytes received in 5.5e-05 seconds (1705 Kbytes/s)local: xttnewdatafiles.txt remote: xttnewdatafiles.txtIBMP740-2:/oracle11$export TMPDIR=/oracle11/xtts_scriptIBMP740-2:/oracle11$cd /oracle11/xtts_scriptIBMP740-2:/oracle11/xtts_script$$ORACLE_HOME/perl/bin/perl xttdriver.pl -c============================================================trace file is /oracle11/xtts_script/convert_Aug16_Wed_17_02_24_689//Aug16_Wed_17_02_24_689_.log=============================================================--------------------------------------------------------------------Parsing properties----------------------------------------------------------------------------------------------------------------------------------------Done parsing properties----------------------------------------------------------------------------------------------------------------------------------------Checking properties----------------------------------------------------------------------------------------------------------------------------------------Done checking properties----------------------------------------------------------------------------------------------------------------------------------------Performing convert--------------------------------------------------------------------IBMP740-2:/oracle11/oradata/jycs/jycs$ls -lrt-rw-r-----    1 oracle11 oinstall 2147491840 Aug 16 17:02 CDZJ_7.dbf-rw-r-----    1 oracle11 oinstall 5368717312 Aug 16 17:03 LDJC_6.dbf

转换操作会将存储在目标系统xtt.properties文件中stageondest参数所指定目录(/oracle11/xtts)中的数据文件副本的字节序转换为目标系统所使用的字节序。转后的数据文件副本会被存储在xtt.properties文件中storageondest参数所指定目录
(/oracle11/oradata/jycs/jycs)目录中。这个目录是目标数据库最终存储数据文件的目录。当这个步骤完成后,在目标系统中xtt.properties文件中stageondest参数所指定目录(/oracle11/xtts)中的数据文件副本不再需要可以删除。

3.前滚阶段
下面在源数据库中创建增量数据

SQL> create table ldjc.jy_test(user_id number(20));Table createdSQL> insert into ldjc.jy_test values(1);1 row insertedSQL> commit;Commit completeSQL> select * from ldjc.jy_test;              USER_ID---------------------                    1SQL> create table cdzj.jy_test(user_id number(20));Table createdSQL> insert into cdzj.jy_test values(1);1 row insertedSQL> commit;Commit completeSQL> select * from cdzj.jy_test;              USER_ID---------------------                    1

在这个阶段,会在源系统中对源数据库创建增量备份,然后将生成的增量备份传输到目标系统中,并将增量备份转换为目标系统所使用的字节序,然后将转换后的增量备份应用到转换后的数据文件进行前滚操作。这个阶段的操作可以执行多次,每一次成功的增量备份应该比之前的增量备份花费更少的时间,并且让目标系统中的数据文件的内容更加接近源数据库的内容。在这个阶段源数据库中被传输的数据完全可以被访问。

3.1 在源系统中对被传输的表空间LDJC,CDZJ创建增量备份
在源系统中,以Oracle软件用户登录并设置环境变量(ORACLE_HOME与ORACLE_SID)来指向源数据库,并执行以下命令来创建增量备份:

[oracle@sjjh xtts_script]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -i============================================================trace file is /home/xtts_script/incremental_Aug16_Wed_16_39_56_791//Aug16_Wed_16_39_56_791_.log=============================================================--------------------------------------------------------------------Parsing properties----------------------------------------------------------------------------------------------------------------------------------------Done parsing properties----------------------------------------------------------------------------------------------------------------------------------------Checking properties----------------------------------------------------------------------------------------------------------------------------------------Done checking properties----------------------------------------------------------------------------------------------------------------------------------------Backup incremental--------------------------------------------------------------------============================================================No new datafiles added=============================================================Prepare newscn for Tablespaces: 'CDZJ'Prepare newscn for Tablespaces: 'LDJC'Prepare newscn for Tablespaces: ''''Prepare newscn for Tablespaces: ''''Prepare newscn for Tablespaces: ''''--------------------------------------------------------------------Starting incremental backup----------------------------------------------------------------------------------------------------------------------------------------Done backing up incrementals--------------------------------------------------------------------

上面的操作会执行RMAN命令对xtt.properties文件中所指定的所有表空间生成增量备份文件。并且还将创建以下文件供后面的操作使用:
.tsbkupmap.txt
.incrbackups.txt

tsbkupmap.txt的内容如下:

[root@sjjh xtts_script]# cat tsbkupmap.txtCDZJ::7:::1=30sc2f2u_1_1LDJC::6:::1=31sc2f31_1_1

文件中的内容记录了表空间与增量备份的关联关系

incrbackups.txt的内容如下:

[root@sjjh xtts_script]# cat incrbackups.txt/home/backup/30sc2f2u_1_1/home/backup/31sc2f31_1_1

文件中的内容显示了生成的增量备份文件信息

[oracle@sjjh backup]$ ls -lrttotal 888-rw-r----- 1 oracle oinstall 122880 Aug 16 16:39 30sc2f2u_1_1-rw-r----- 1 oracle oinstall 786432 Aug 16 16:40 31sc2f31_1_1

3.2 将增量备份传输到目标系统中
将上一步生成的增量备份传输到目标系统中由xtt.properties文件中的stageondest目录(/oracle11/xtts)中。

IBMP740-2:/oracle11/xtts$ftp 10.138.130.101Connected to 10.138.130.101.220 (vsFTPd 2.2.2)Name (10.138.130.101:root): oracle331 Please specify the password.Password:230 Login successful.ftp> cd /home/backup250 Directory successfully changed.ftp> ls -lrt200 PORT command successful. Consider using PASV.150 Here comes the directory listing.-rw-r-----    1 501      501        122880 Aug 16 08:39 30sc2f2u_1_1-rw-r-----    1 501      501        786432 Aug 16 08:40 31sc2f31_1_1226 Directory send OK.ftp> lcd /oracle11/xttsLocal directory now /oracle11/xttsftp> bin200 Switching to Binary mode.ftp> get 30sc2f2u_1_1200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for 30sc2f2u_1_1 (122880 bytes).226 Transfer complete.122880 bytes received in 0.001414 seconds (8.487e+04 Kbytes/s)local: 30sc2f2u_1_1 remote: 30sc2f2u_1_1ftp> get 31sc2f31_1_1200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for 31sc2f31_1_1 (786432 bytes).226 Transfer complete.786432 bytes received in 0.007007 seconds (1.096e+05 Kbytes/s)local: 31sc2f31_1_1 remote: 31sc2f31_1_1IBMP740-2:/oracle11/xtts$ls -lrttotal 1776-rw-r--r--    1 oracle11 oinstall     122880 Aug 16 17:37 30sc2f2u_1_1-rw-r--r--    1 oracle11 oinstall     786432 Aug 16 17:37 31sc2f31_1_1

3.3 在目标系统中转换增量备份并应用到数据文件副本
在目标系统中以Oracle软件用户登录并设置环境变量(ORACLE_HOME与ORACLE_SID)来指向目标数据库,并从源系统中将上一步生成的xttplan.txt与tsbkupmap.txt文件。

IBMP740-2:/oracle11/xtts$ftp 10.138.130.101Connected to 10.138.130.101.220 (vsFTPd 2.2.2)Name (10.138.130.101:root): oracle331 Please specify the password.Password:230 Login successful.ftp> cd  /home/xtts_script250 Directory successfully changed.ftp> ls -lrt200 PORT command successful. Consider using PASV.150 Here comes the directory listing.-rw-r--r--    1 501      501          1390 May 24 08:57 xttcnvrtbkupdest.sql-rw-r--r--    1 501      501         11710 May 24 08:57 xttprep.tmpl-rw-r--r--    1 501      501            52 May 24 08:57 xttstartupnomount.sql-rw-r--r--    1 501      501            71 May 24 08:57 xttdbopen.sql-rw-r--r--    1 501      501        139331 May 24 08:57 xttdriver.pl-rw-r--r--    1 501      501          7969 Jun 05 00:47 xtt.properties.bak-rw-r--r--    1 501      501         33949 Aug 14 09:25 rman_xttconvert_v3.zip-rw-r--r--    1 501      501           255 Aug 16 06:58 xtt.properties-rw-r--r--    1 501      501            50 Aug 16 07:51 xttplan.txt-rw-r--r--    1 501      501           354 Aug 16 07:51 rmanconvert.cmd-rw-r--r--    1 501      501            96 Aug 16 07:52 xttnewdatafiles.txtdrwxr-xr-x    2 501      501          4096 Aug 16 07:52 prepare_Aug16_Wed_15_50_19_497-rw-r--r--    1 501      501            54 Aug 16 08:39 xttplan.txt.new-rw-r--r--    1 501      501            50 Aug 16 08:40 tsbkupmap.txt-rw-r--r--    1 501      501            52 Aug 16 08:40 incrbackups.txtdrwxr-xr-x    2 501      501          4096 Aug 16 08:40 incremental_Aug16_Wed_16_39_56_791226 Directory send OK.ftp> lcd /oracle11/xtts_scriptLocal directory now /oracle11/xtts_scriptftp> bin200 Switching to Binary mode.ftp> get xttplan.txt200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for xttplan.txt (50 bytes).226 Transfer complete.50 bytes received in 7.9e-05 seconds (618.1 Kbytes/s)local: xttplan.txt remote: xttplan.txtftp> get tsbkupmap.txt200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for tsbkupmap.txt (50 bytes).226 Transfer complete.50 bytes received in 0.00011 seconds (443.9 Kbytes/s)local: tsbkupmap.txt remote: tsbkupmap.txtIBMP740-2:/oracle11/xtts_script$cat xttplan.txtCDZJ::::146901565868057LDJC::::146901565868056IBMP740-2:/oracle11/xtts_script$cat tsbkupmap.txtCDZJ::7:::1=30sc2f2u_1_1LDJC::6:::1=31sc2f31_1_1IBMP740-2:/home/oracle11$export TMPDIR=/oracle11/xtts_scriptIBMP740-2:/home/oracle11$cd /oracle11/xtts_scriptIBMP740-2:/oracle11/xtts_script$export ORACLE_SID=jycsIBMP740-2:/oracle11/xtts_script$export XTTDEBUG=1IBMP740-2:/oracle11/xtts_script$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -r============================================================trace file is /oracle11/xtts_script/rollforward_Aug16_Wed_18_19_46_764//Aug16_Wed_18_19_46_764_.log=============================================================--------------------------------------------------------------------Parsing properties--------------------------------------------------------------------Key: backupondestValues: /oracle11/backupKey: platformidValues: 13Key: backupformatValues: /home/backupKey: storageondestValues: /oracle11/oradata/jycs/jycsKey: dfcopydirValues: /home/dfcopydirKey: cnvinst_homeValues: /oracle11/app/oracle/product/11.2.0/dbKey: cnvinst_sidValues: xttKey: stageondestValues: /oracle11/xttsKey: tablespacesValues: CDZJ,LDJC--------------------------------------------------------------------Done parsing properties--------------------------------------------------------------------ORACLE_SID  : jycsORACLE_HOME : /oracle11/app/oracle/product/11.2.0/db--------------------------------------------------------------------Checking properties--------------------------------------------------------------------ARGUMENT tablespacesARGUMENT platformidARGUMENT backupformatARGUMENT stageondestARGUMENT backupondest--------------------------------------------------------------------Done checking properties--------------------------------------------------------------------ORACLE_SID  : xttORACLE_HOME : /oracle11/app/oracle/product/11.2.0/db--------------------------------------------------------------------Start rollforward--------------------------------------------------------------------convert instance: /oracle11/app/oracle/product/11.2.0/dbconvert instance: xttORACLE instance started.Total System Global Area  797712384 bytesFixed Size                  2250200 bytesVariable Size             490736168 bytesDatabase Buffers          268435456 bytesRedo Buffers               36290560 bytesrdfno 7BEFORE ROLLPLANdatafile number : 7datafile name   : /oracle11/oradata/jycs/jycs/CDZJ_7.dbfAFTER ROLLPLANCONVERTED BACKUP PIECE/oracle11/backup/xib_30sc2f2u_1_1_7PL/SQL procedure successfully completed.Entering RollForwardAfter applySetDataFileDone: applyDataFileToDone: applyDataFileToDone: RestoreSetPieceDone: RestoreBackupPiecePL/SQL procedure successfully completed.rdfno 6BEFORE ROLLPLANdatafile number : 6datafile name   : /oracle11/oradata/jycs/jycs/LDJC_6.dbfAFTER ROLLPLANCONVERTED BACKUP PIECE/oracle11/backup/xib_31sc2f31_1_1_6PL/SQL procedure successfully completed.Entering RollForwardAfter applySetDataFileDone: applyDataFileToDone: applyDataFileToDone: RestoreSetPieceDone: RestoreBackupPiecePL/SQL procedure successfully completed.--------------------------------------------------------------------End of rollforward phase--------------------------------------------------------------------

这步前滚数据文件的操作,会以sys用户连接到增量转换实例,转换完增量备份后,然后连接到目标数据库并将增量备份应用到每个表空间注意:对于每一次增量备份都需要将xttplan.txt与tsbkupmap.txt文件复制一次,不要对脚本所生成的xttplan.txt.new文件进行修改,复制或者其它任何改变。执行这步操作时目标实例会进行重启操作。

3.4 为下一次增量备份判断from_scn
再次生成增量数据

SQL> insert into ldjc.jy_test values(2);1 row insertedSQL> insert into cdzj.jy_test values(2);1 row insertedSQL> commit;Commit completeSQL> select * from ldjc.jy_test;              USER_ID---------------------                    1                    2SQL> select * from cdzj.jy_test;              USER_ID---------------------                    1                    2

在源系统中,以Oracle软件用户登录并设置环境变量(ORACLE_HOME与ORACLE_SID)来指向源数据库,执行以下命令来判断from_scn:

[oracle@sjjh xtts_script]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -s============================================================trace file is /home/xtts_script/determinescn_Aug16_Wed_17_52_34_308//Aug16_Wed_17_52_34_308_.log=============================================================--------------------------------------------------------------------Parsing properties----------------------------------------------------------------------------------------------------------------------------------------Done parsing properties----------------------------------------------------------------------------------------------------------------------------------------Checking properties----------------------------------------------------------------------------------------------------------------------------------------Done checking properties--------------------------------------------------------------------Prepare newscn for Tablespaces: 'CDZJ'Prepare newscn for Tablespaces: 'LDJC'Prepare newscn for Tablespaces: ''''Prepare newscn for Tablespaces: ''''Prepare newscn for Tablespaces: ''''New /home/xtts_script/xttplan.txt with FROM SCN's generated

这步操作会计算下一个from_scn,并记录在xttplan.txt文件中,当下次创建增量备份时会使用这个scn

[root@sjjh xtts_script]# cat xttplan.txt CDZJ::::14690180717851 7 LDJC::::14690180727235 6

3.5 再次重复前滚阶段或执行传输阶段
这里有两种选择:
1.如果如果将目标数据库中的数据文件与源数据库中的数据文件进行最接近的同步,那么就重复执行前滚操作。
2.如果目标数据库中的数据文件与源数据库中的数据文件已经达到所期望的接近,那么执行传输阶段的操作。

注意:如果从上一次增量备份后增加了一个新的表空间或者一个新的表空间名增加到xtt.properties文件中,那么将会出现以下错误:

Error:------The incremental backup was not taken as a datafile has been added to the tablespace:Please Do the following:--------------------------1. Copy fixnewdf.txt from source to destination temp dir2. Copy backups:from  to the  in destination3. On Destination, run $ORACLE_HOME/perl/bin/perl xttdriver.pl --fixnewdf4. Re-execute the incremental backup in source:$ORACLE_HOME/perl/bin/perl xttdriver.pl --bkpincrNOTE: Before running incremental backup, delete FAILED in source temp dir orrun xttdriver.pl with -L option:$ORACLE_HOME/perl/bin/perl xttdriver.pl -L --bkpincrThese instructions must be followed exactly as listed. The next incremental backup will include the new datafile.

我这里再次执行前滚操作
在源系统中,以Oracle软件用户登录并设置环境变量(ORACLE_HOME与ORACLE_SID)来指向源数据库,并执行以下命令来创建增量备份:

[oracle@sjjh xtts_script]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -i============================================================trace file is /home/xtts_script/incremental_Aug16_Wed_18_04_22_221//Aug16_Wed_18_04_22_221_.log=============================================================--------------------------------------------------------------------Parsing properties----------------------------------------------------------------------------------------------------------------------------------------Done parsing properties----------------------------------------------------------------------------------------------------------------------------------------Checking properties----------------------------------------------------------------------------------------------------------------------------------------Done checking properties----------------------------------------------------------------------------------------------------------------------------------------Backup incremental--------------------------------------------------------------------============================================================No new datafiles added=============================================================Prepare newscn for Tablespaces: 'CDZJ'Prepare newscn for Tablespaces: 'LDJC'Prepare newscn for Tablespaces: ''''Prepare newscn for Tablespaces: ''''Prepare newscn for Tablespaces: ''''--------------------------------------------------------------------Starting incremental backup----------------------------------------------------------------------------------------------------------------------------------------Done backing up incrementals--------------------------------------------------------------------

上面的操作会执行RMAN命令对xtt.properties文件中所指定的所有表空间生成增量备份文件。并且还将创建以下文件供后面的操作使用:
.tsbkupmap.txt
.incrbackups.txt
tsbkupmap.txt的内容如下:

[root@sjjh xtts_script]# cat tsbkupmap.txtLDJC::6:::1=33sc2k1b_1_1CDZJ::7:::1=32sc2k18_1_1

文件中的内容记录了表空间与增量备份的关联关系
incrbackups.txt的内容如下:

[root@sjjh xtts_script]# cat incrbackups.txt/home/backup/33sc2k1b_1_1/home/backup/32sc2k18_1_1

文件中的内容显示了生成的增量备份文件信息

[oracle@sjjh backup]$ ls -lrt-rw-r----- 1 oracle oinstall 122880 Aug 16 18:04 32sc2k18_1_1-rw-r----- 1 oracle oinstall 729088 Aug 16 18:04 33sc2k1b_1_1

将增量备份传输到目标系统中
将上一步生成的增量备份传输到目标系统中由xtt.properties文件中的stageondest目录(/oracle11/xtts)中。

IBMP740-2:/oracle11/xtts$ftp 10.138.130.101Connected to 10.138.130.101.220 (vsFTPd 2.2.2)Name (10.138.130.101:root): oracle331 Please specify the password.Password:230 Login successful.ftp> cd /home/backup250 Directory successfully changed.ftp> lcd /oracle11/xttsLocal directory now /oracle11/xttsftp> bin200 Switching to Binary mode.ftp> get 32sc2k18_1_1200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for 32sc2k18_1_1 (122880 bytes).226 Transfer complete.122880 bytes received in 0.001608 seconds (7.463e+04 Kbytes/s)local: 32sc2k18_1_1 remote: 32sc2k18_1_1ftp> get 33sc2k1b_1_1200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for 33sc2k1b_1_1 (729088 bytes).226 Transfer complete.729088 bytes received in 0.006469 seconds (1.101e+05 Kbytes/s)local: 33sc2k1b_1_1 remote: 33sc2k1b_1_1IBMP740-2:/oracle11/xtts$ls -lrt-rw-r--r--    1 oracle11 oinstall     122880 Aug 16 18:52 32sc2k18_1_1-rw-r--r--    1 oracle11 oinstall     729088 Aug 16 18:52 33sc2k1b_1_1

在目标系统中转换增量备份并应用到数据文件副本
在目标系统中以Oracle软件用户登录并设置环境变量(ORACLE_HOME与ORACLE_SID)来指向目标数据库,并从源系统中将上一步生成的xttplan.txt与tsbkupmap.txt文件。

IBMP740-2:/oracle11/xtts$ftp 10.138.130.101Connected to 10.138.130.101.220 (vsFTPd 2.2.2)Name (10.138.130.101:root): oracle331 Please specify the password.Password:230 Login successful.ftp> lcd /oracle11/xtts_scriptLocal directory now /oracle11/xtts_scriptftp> bin200 Switching to Binary mode.ftp> cd  /home/xtts_script250 Directory successfully changed.ftp> get xttplan.txt200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for xttplan.txt (54 bytes).226 Transfer complete.54 bytes received in 9.4e-05 seconds (561 Kbytes/s)local: xttplan.txt remote: xttplan.txtftp> get tsbkupmap.txt200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for tsbkupmap.txt (50 bytes).226 Transfer complete.50 bytes received in 0.000107 seconds (456.3 Kbytes/s)local: tsbkupmap.txt remote: tsbkupmap.txtIBMP740-2:/oracle11/xtts_script$cat xttplan.txt CDZJ::::14690180717851 7 LDJC::::14690180727235 6IBMP740-2:/oracle11/xtts_script$cat tsbkupmap.txtLDJC::6:::1=33sc2k1b_1_1CDZJ::7:::1=32sc2k18_1_1IBMP740-2:/oracle11/xtts_script$export TMPDIR=/oracle11/xtts_scriptIBMP740-2:/oracle11/xtts_script$cd /oracle11/xtts_scriptIBMP740-2:/oracle11/xtts_script$export ORACLE_SID=jycsIBMP740-2:/oracle11/xtts_script$export XTTDEBUG=1IBMP740-2:/oracle11/xtts_script$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -r============================================================trace file is /oracle11/xtts_script/rollforward_Aug16_Wed_19_02_23_450//Aug16_Wed_19_02_23_450_.log=============================================================--------------------------------------------------------------------Parsing properties--------------------------------------------------------------------Key: backupondestValues: /oracle11/backupKey: platformidValues: 13Key: backupformatValues: /home/backupKey: storageondestValues: /oracle11/oradata/jycs/jycsKey: dfcopydirValues: /home/dfcopydirKey: cnvinst_homeValues: /oracle11/app/oracle/product/11.2.0/dbKey: cnvinst_sidValues: xttKey: stageondestValues: /oracle11/xttsKey: tablespacesValues: CDZJ,LDJC--------------------------------------------------------------------Done parsing properties----------------------------------------------------------------------------------------------------------------------------------------Checking properties--------------------------------------------------------------------ARGUMENT tablespacesARGUMENT platformidARGUMENT backupformatARGUMENT stageondestARGUMENT backupondest--------------------------------------------------------------------Done checking properties--------------------------------------------------------------------ORACLE_SID  : jycsORACLE_HOME : /oracle11/app/oracle/product/11.2.0/db--------------------------------------------------------------------Start rollforward--------------------------------------------------------------------convert instance: /oracle11/app/oracle/product/11.2.0/dbconvert instance: xttORACLE instance started.Total System Global Area 4275781632 bytesFixed Size                  2253216 bytesVariable Size             922750560 bytesDatabase Buffers         3305111552 bytesRedo Buffers               45666304 bytesrdfno 7BEFORE ROLLPLANdatafile number : 7datafile name   : /oracle11/oradata/jycs/jycs/CDZJ_7.dbfAFTER ROLLPLANCONVERTED BACKUP PIECE/oracle11/backup/xib_32sc2k18_1_1_7PL/SQL procedure successfully completed.Entering RollForwardAfter applySetDataFileDone: applyDataFileToDone: applyDataFileToDone: RestoreSetPieceDone: RestoreBackupPiecePL/SQL procedure successfully completed.rdfno 6BEFORE ROLLPLANdatafile number : 6datafile name   : /oracle11/oradata/jycs/jycs/LDJC_6.dbfAFTER ROLLPLANCONVERTED BACKUP PIECE/oracle11/backup/xib_33sc2k1b_1_1_6PL/SQL procedure successfully completed.Entering RollForwardAfter applySetDataFileDone: applyDataFileToDone: applyDataFileToDone: RestoreSetPieceDone: RestoreBackupPiecePL/SQL procedure successfully completed.--------------------------------------------------------------------End of rollforward phase--------------------------------------------------------------------

这步前滚数据文件的操作,会以sys用户连接到增量转换实例,转换完增量备份后,然后连接到目标数据库并将增量备份应用到每个表空间注意:对于每一次增量备份都需要将xttplan.txt与tsbkupmap.txt文件复制一次,不要对脚本所生成的xttplan.txt.new文件进行修改,复制或者其它任何改变。执行这步操作时目标实例会进行重启操作。

为下一次增量备份判断from_scn
再次生成增量数据

SQL> insert into ldjc.jy_test values(3);1 row insertedSQL> insert into cdzj.jy_test values(3);1 row insertedSQL> commit;Commit completeSQL> select * from ldjc.jy_test;              USER_ID---------------------                    1                    2                    3SQL> select * from cdzj.jy_test;              USER_ID---------------------                    1                    2                    3

在源系统中,以Oracle软件用户登录并设置环境变量(ORACLE_HOME与ORACLE_SID)来指向源数据库,执行以下命令来判断from_scn:

[oracle@sjjh xtts_script]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -s============================================================trace file is /home/xtts_script/determinescn_Aug16_Wed_18_25_13_253//Aug16_Wed_18_25_13_253_.log=============================================================--------------------------------------------------------------------Parsing properties----------------------------------------------------------------------------------------------------------------------------------------Done parsing properties----------------------------------------------------------------------------------------------------------------------------------------Checking properties----------------------------------------------------------------------------------------------------------------------------------------Done checking properties--------------------------------------------------------------------Prepare newscn for Tablespaces: 'CDZJ'Prepare newscn for Tablespaces: 'LDJC'Prepare newscn for Tablespaces: ''''Prepare newscn for Tablespaces: ''''Prepare newscn for Tablespaces: ''''New /home/xtts_script/xttplan.txt with FROM SCN's generated[root@sjjh xtts_script]# cat xttplan.txt CDZJ::::14690185295398 7 LDJC::::14690185295430 6

4.传输阶段
在执行传输阶段操作时,源数据库中被传输表空间要设置为read only状态,并且通过创建与应用最后一次的增量备份使用目标数据库中的数据文件与源数据库中的数据文件内容保持一致。在目标数据库数据文件与源数据库数据文件内容达成一致后,在源系统中执行正常的传输表空间操作来导出元数据,然后将元数据导入到目标数据库中。直到传输阶段操作完成之前,被传输的数据只能以read only模式被访问。

4.1 将源数据库中被传输表空间设置为read only状态
在源系统中,以Oracle软件用户登录并设置环境变量(ORACLE_HOME与ORACLE_SID)来指向源数据库,并执行以下命令将表空间设置为read only:

SQL> alter tablespace ldjc read only;Tablespace altered.SQL> alter tablespace cdzj read only;Tablespace altered.

4.2 最后一次创建增量备份,并传输到目标系统且执行转换并应用到目标数据文件
在源系统中,以Oracle软件用户登录并设置环境变量(ORACLE_HOME与ORACLE_SID)来指向源数据库,并执行以下命令来创建增量备份:

[oracle@sjjh xtts_script]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -i============================================================trace file is /home/xtts_script/incremental_Aug16_Wed_18_33_49_991//Aug16_Wed_18_33_49_991_.log=============================================================--------------------------------------------------------------------Parsing properties----------------------------------------------------------------------------------------------------------------------------------------Done parsing properties----------------------------------------------------------------------------------------------------------------------------------------Checking properties----------------------------------------------------------------------------------------------------------------------------------------Done checking properties----------------------------------------------------------------------------------------------------------------------------------------Backup incremental--------------------------------------------------------------------============================================================No new datafiles added=============================================================Prepare newscn for Tablespaces: 'CDZJ'Prepare newscn for Tablespaces: 'LDJC'Prepare newscn for Tablespaces: ''''Prepare newscn for Tablespaces: ''''Prepare newscn for Tablespaces: ''''--------------------------------------------------------------------Starting incremental backup----------------------------------------------------------------------------------------------------------------------------------------Done backing up incrementals--------------------------------------------------------------------

上面的操作会执行RMAN命令对xtt.properties文件中所指定的所有表空间生成增量备份文件。并且还将创建以下文件供后面的操作使用:
.tsbkupmap.txt
.incrbackups.txt

tsbkupmap.txt的内容如下:

[root@sjjh xtts_script]# cat tsbkupmap.txtCDZJ::7:::1=34sc2lof_1_1LDJC::6:::1=35sc2loi_1_1

文件中的内容记录了表空间与增量备份的关联关系

incrbackups.txt的内容如下:

[root@sjjh xtts_script]# cat incrbackups.txt/home/backup/34sc2lof_1_1/home/backup/35sc2loi_1_1

文件中的内容显示了生成的增量备份文件信息

[oracle@sjjh backup]$ ls -lrt-rw-r----- 1 oracle oinstall  49152 Aug 16 18:33 34sc2lof_1_1-rw-r----- 1 oracle oinstall 450560 Aug 16 18:33 35sc2loi_1_1

将增量备份传输到目标系统中
将上一步生成的增量备份传输到目标系统中由xtt.properties文件中的stageondest目录(/oracle11/xtts)中。

IBMP740-2:/oracle11/xtts$ftp 10.138.130.101Connected to 10.138.130.101.220 (vsFTPd 2.2.2)Name (10.138.130.101:root): oracle331 Please specify the password.Password:230 Login successful.ftp> cd /home/backup250 Directory successfully changed.ftp> lcd /oracle11/xttsLocal directory now /oracle11/xttsftp> bin200 Switching to Binary mode.ftp> get 34sc2lof_1_1200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for 34sc2lof_1_1 (49152 bytes).226 Transfer complete.49152 bytes received in 0.000707 seconds (6.789e+04 Kbytes/s)local: 34sc2lof_1_1 remote: 34sc2lof_1_1ftp> get 35sc2loi_1_1200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for 35sc2loi_1_1 (450560 bytes).226 Transfer complete.450560 bytes received in 0.004065 seconds (1.082e+05 Kbytes/s)local: 35sc2loi_1_1 remote: 35sc2loi_1_1IBMP740-2:/oracle11/xtts$ls -lrt-rw-r--r--    1 oracle11 oinstall      49152 Aug 16 19:19 34sc2lof_1_1-rw-r--r--    1 oracle11 oinstall     450560 Aug 16 19:20 35sc2loi_1_1

在目标系统中转换增量备份并应用到数据文件副本
在目标系统中以Oracle软件用户登录并设置环境变量(ORACLE_HOME与ORACLE_SID)来指向目标数据库,并从源系统中将上一步生成的xttplan.txt与tsbkupmap.txt文件。

ftp> cd /home/xtts_script250 Directory successfully changed.ftp> lcd /oracle11/xtts_scriptLocal directory now /oracle11/xtts_scriptftp> bin200 Switching to Binary mode.ftp> get xttplan.txt200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for xttplan.txt (54 bytes).226 Transfer complete.54 bytes received in 5.4e-05 seconds (976.6 Kbytes/s)local: xttplan.txt remote: xttplan.txtftp> get tsbkupmap.txt200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for tsbkupmap.txt (50 bytes).226 Transfer complete.50 bytes received in 5.1e-05 seconds (957.4 Kbytes/s)local: tsbkupmap.txt remote: tsbkupmap.txtIBMP740-2:/oracle11/xtts_script$cat xttplan.txt CDZJ::::14690185295398 7 LDJC::::14690185295430 6IBMP740-2:/oracle11/xtts_script$cat tsbkupmap.txtCDZJ::7:::1=34sc2lof_1_1LDJC::6:::1=35sc2loi_1_1IBMP740-2:/oracle11/xtts_script$$ORACLE_HOME/perl/bin/perl xttdriver.pl -r============================================================trace file is /oracle11/xtts_script/rollforward_Aug16_Wed_19_24_53_790//Aug16_Wed_19_24_53_790_.log=============================================================--------------------------------------------------------------------Parsing properties--------------------------------------------------------------------Key: backupondestValues: /oracle11/backupKey: platformidValues: 13Key: backupformatValues: /home/backupKey: storageondestValues: /oracle11/oradata/jycs/jycsKey: dfcopydirValues: /home/dfcopydirKey: cnvinst_homeValues: /oracle11/app/oracle/product/11.2.0/dbKey: cnvinst_sidValues: xttKey: stageondestValues: /oracle11/xttsKey: tablespacesValues: CDZJ,LDJC--------------------------------------------------------------------Done parsing properties----------------------------------------------------------------------------------------------------------------------------------------Checking properties--------------------------------------------------------------------ARGUMENT tablespacesARGUMENT platformidARGUMENT backupformatARGUMENT stageondestARGUMENT backupondest--------------------------------------------------------------------Done checking properties--------------------------------------------------------------------ORACLE_SID  : jycsORACLE_HOME : /oracle11/app/oracle/product/11.2.0/db--------------------------------------------------------------------Start rollforward--------------------------------------------------------------------convert instance: /oracle11/app/oracle/product/11.2.0/dbconvert instance: xttORACLE instance started.Total System Global Area 4275781632 bytesFixed Size                  2253216 bytesVariable Size             922750560 bytesDatabase Buffers         3305111552 bytesRedo Buffers               45666304 bytesrdfno 7BEFORE ROLLPLANdatafile number : 7datafile name   : /oracle11/oradata/jycs/jycs/CDZJ_7.dbfAFTER ROLLPLANCONVERTED BACKUP PIECE/oracle11/backup/xib_34sc2lof_1_1_7PL/SQL procedure successfully completed.Entering RollForwardAfter applySetDataFileDone: applyDataFileToDone: applyDataFileToDone: RestoreSetPieceDone: RestoreBackupPiecePL/SQL procedure successfully completed.rdfno 6BEFORE ROLLPLANdatafile number : 6datafile name   : /oracle11/oradata/jycs/jycs/LDJC_6.dbfAFTER ROLLPLANCONVERTED BACKUP PIECE/oracle11/backup/xib_35sc2loi_1_1_6PL/SQL procedure successfully completed.Entering RollForwardAfter applySetDataFileDone: applyDataFileToDone: applyDataFileToDone: RestoreSetPieceDone: RestoreBackupPiecePL/SQL procedure successfully completed.--------------------------------------------------------------------End of rollforward phase--------------------------------------------------------------------

4.3 在目标数据库中导入元数据
在目标系统中以Oracle软件用户登录并设置环境变量(ORACLE_HOME与ORACLE_SID)来指向目标数据库,执行以下命令来生成Data Pump TTS命令:

IBMP740-2:/oracle11/xtts_script$$ORACLE_HOME/perl/bin/perl xttdriver.pl -e============================================================trace file is /oracle11/xtts_script/generate_Aug16_Wed_19_27_43_910//Aug16_Wed_19_27_43_910_.log=============================================================--------------------------------------------------------------------Parsing properties--------------------------------------------------------------------Key: backupondestValues: /oracle11/backupKey: platformidValues: 13Key: backupformatValues: /home/backupKey: storageondestValues: /oracle11/oradata/jycs/jycsKey: dfcopydirValues: /home/dfcopydirKey: cnvinst_homeValues: /oracle11/app/oracle/product/11.2.0/dbKey: cnvinst_sidValues: xttKey: stageondestValues: /oracle11/xttsKey: tablespacesValues: CDZJ,LDJC--------------------------------------------------------------------Done parsing properties----------------------------------------------------------------------------------------------------------------------------------------Checking properties--------------------------------------------------------------------ARGUMENT tablespacesARGUMENT platformidARGUMENT backupformatARGUMENT stageondest--------------------------------------------------------------------Done checking properties--------------------------------------------------------------------ORACLE_SID  : jycsORACLE_HOME : /oracle11/app/oracle/product/11.2.0/db--------------------------------------------------------------------Generating plugin----------------------------------------------------------------------------------------------------------------------------------------Done generating plugin file /oracle11/xtts_script/xttplugin.txt--------------------------------------------------------------------IBMP740-2:/oracle11/xtts_script$cat /oracle11/xtts_script/xttplugin.txtimpdp directory= logfile= \network_link= transport_full_check=no \transport_tablespaces=CDZJ,LDJC \transport_datafiles='/oracle11/oradata/jycs/jycs/CDZJ_7.dbf','/oracle11/oradata/jycs/jycs/LDJC_6.dbf'

上面的命令会生成一个名叫xttplugin.txt的文件,文件创建了一个使用network_link参数执行传输表空间导入元数据的命令。命令中的transport_tablespaces与transport_datafiles参数已经设置正确。注意network_link模式指示导入通过使用dblink来完成,就不需要执行导出或使用dump文件。如果选择执行这个命令来完成表空间的传输就需要修改directory,logfile与network_link参数

SQL> create directory dump_dir as '/oracle11/xtts_script';Directory created.SQL> grant read,write on directory dump_dir to public;Grant succeeded.

在目标数据库中创建一个dblink连接到源数据库。例如创建一个名叫ttslink的dblink,执行以下命令:

SQL> create public database link ttslink  2    connect to system identified by "xxzx7817600"  3    using '(DESCRIPTION =  4      (ADDRESS_LIST =  5        (ADDRESS = (PROTOCOL = TCP)(HOST =10.138.130.101)(PORT = 1521))  6      )  7      (CONNECT_DATA =  8        (SERVER = DEDICATED)  9        (SERVICE_NAME =sjjh) 10      ) 11    )';Database link created.

创建dblink后验证是否可以能过dblink访问源数据库

SQL> select * from dual@ttslink;D-X

在目标数据库中创建用户方案LDJC,CDZJ

SQL> create user ldjc identified by "ldjc";User created.SQL> grant dba,connect,resource to ldjc;Grant succeeded.SQL> create user cdzj identified by "cdzj";User created.SQL> grant dba,connect,resource to cdzj;Grant succeeded.IBMP740-2:/oracle11/xtts_script$impdp system/abcd directory=dump_dir logfile=tts_imp.log network_link=ttslink transport_full_check=no transport_tablespaces=CDZJ,LDJC transport_datafiles='/oracle11/oradata/jycs/jycs/CDZJ_7.dbf','/oracle11/oradata/jycs/jycs/LDJC_6.dbf'Import: Release 11.2.0.4.0 - Production on Wed Aug 16 19:49:01 2017Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsStarting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01":  system/******** directory=dump_dir logfile=tts_imp.log network_link=ttslink transport_full_check=no transport_tablespaces=CDZJ,LDJC transport_datafiles=/oracle11/oradata/jycs/jycs/CDZJ_7.dbf,/oracle11/oradata/jycs/jycs/LDJC_6.dbfProcessing object type TRANSPORTABLE_EXPORT/PLUGTS_BLKProcessing object type TRANSPORTABLE_EXPORT/TABLEProcessing object type TRANSPORTABLE_EXPORT/INDEX/INDEXProcessing object type TRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINTProcessing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICSProcessing object type TRANSPORTABLE_EXPORT/COMMENTProcessing object type TRANSPORTABLE_EXPORT/CONSTRAINT/REF_CONSTRAINTProcessing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICSProcessing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLKJob "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at Wed Aug 16 19:50:19 2017 elapsed 0 00:01:17IBMP740-2:/home/oracle11$impdp system/abcd directory=dump_dir logfile=ysj.log schemas=ldjc,cdzj content=metadata_only exclude=table,index network_link=ttslinkImport: Release 11.2.0.4.0 - Production on Fri Aug 18 08:40:01 2017Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsStarting "SYSTEM"."SYS_IMPORT_SCHEMA_01":  system/******** directory=dump_dir logfile=ysj.log schemas=ldjc,cdzj content=metadata_only exclude=table,index network_link=ttslinkProcessing object type SCHEMA_EXPORT/USERORA-31684: Object type USER:"LDJC" already existsORA-31684: Object type USER:"CDZJ" already existsProcessing object type SCHEMA_EXPORT/SYSTEM_GRANTProcessing object type SCHEMA_EXPORT/ROLE_GRANTProcessing object type SCHEMA_EXPORT/DEFAULT_ROLEProcessing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMAProcessing object type SCHEMA_EXPORT/SYNONYM/SYNONYMProcessing object type SCHEMA_EXPORT/TYPE/TYPE_SPECProcessing object type SCHEMA_EXPORT/DB_LINKProcessing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCEProcessing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_SPECProcessing object type SCHEMA_EXPORT/FUNCTION/FUNCTIONProcessing object type SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPECProcessing object type SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTIONProcessing object type SCHEMA_EXPORT/VIEW/VIEWORA-39082: Object type VIEW:"LDJC"."DB03" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."AA10" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."AA12" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."AB01" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."AB01H" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."AB01_LOG" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."AB01_USER" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."AB01_WEB" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."AB01_WEB_NSLOG" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."AB02" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."AB02H" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."AB02_WEB" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BB01" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BB01H" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BB01_WEB" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BB02" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BB02H" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BB02_WEB" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BB03" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BB03H" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BB03_WEB" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BB04" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BB04H" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BB04_WEB" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BB05" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BB05H" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BB05_WEB" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BC02" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BC02H" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BC02_LOG" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BD01_WEB" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BD02_WEB" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BD03_WEB" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BF01" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BF01H" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ01" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ01H" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ01_1" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ02" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ02H" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ02_1" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ03" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ03H" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ04" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ04H" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ04_1" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ05" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ05H" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ05_1" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ06" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ06H" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ07" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ07H" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ07_1" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ08" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ08H" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ09" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ09H" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ09_TEMP" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ10" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ10H" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ10_LOG" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."BZ11_WEB" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."OAE300_LOG" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."TEMP_AAB002" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."V_JCXT_AJGL_JABP" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."JCXT_AJGL_ZWNR" created with compilation warningsORA-39082: Object type VIEW:"LDJC"."V_JCXT_AJGL_LABP" created with compilation warningsProcessing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODYORA-39082: Object type PACKAGE_BODY:"LDJC"."QUEST_SOO_PKG" created with compilation warningsORA-39082: Object type PACKAGE_BODY:"LDJC"."QUEST_SOO_SQLTRACE" created with compilation warningsProcessing object type SCHEMA_EXPORT/JOBProcessing object type SCHEMA_EXPORT/POST_SCHEMA/PROCOBJJob "SYSTEM"."SYS_IMPORT_SCHEMA_01" completed with 72 error(s) at Fri Aug 18 08:40:22 2017 elapsed 0 00:00:20SQL> select * from ldjc.jy_test;   USER_ID----------         1         2         3SQL> select * from cdzj.jy_test;   USER_ID----------         1         2         3

在元数据导入后,可以将源数据库中的表空间ldjc,cdzj修改为read write状态

SQL> alter tablespace ldjc read write;Tablespace altered.SQL>  alter tablespace cdzj read write;Tablespace altered.

如果不使用network_link执行导入,那么可以执行传输表空间模式的data pump导出元数据,然后将元数据复制到目标数据库,再执行导入。

4.4 将目标数据库中的表空间ldjc,cdzj修改为read write状态

SQL> select tablespace_name,status from dba_tablespaces;TABLESPACE_NAME                STATUS------------------------------ ---------SYSTEM                         ONLINESYSAUX                         ONLINEUNDOTBS1                       ONLINETEMP                           ONLINEUSERS                          ONLINEEXAMPLE                        ONLINECDZJ                           READ ONLYLDJC                           READ ONLYSQL> alter tablespace ldjc read write;Tablespace altered.SQL> alter tablespace cdzj read write;Tablespace altered.SQL> select tablespace_name,status from dba_tablespaces;TABLESPACE_NAME                STATUS------------------------------ ---------SYSTEM                         ONLINESYSAUX                         ONLINEUNDOTBS1                       ONLINETEMP                           ONLINEUSERS                          ONLINEEXAMPLE                        ONLINECDZJ                           ONLINELDJC                           ONLINE

4.5 验证传输的数据
在这一步,在目标数据库中被传输过来的表空间设置为read only状态,然后运行应用程序来进行验证。也可以使用RMAN来检查物理与逻辑块损坏的情况。

IBMP740-2:/oracle11/xtts$export ORACLE_SID=jycsIBMP740-2:/oracle11/xtts$rman target/RMAN> validate tablespace LDJC,CDZJ check logical;Starting validate at 2017-08-16 20:00:52using channel ORA_DISK_1channel ORA_DISK_1: starting validation of datafilechannel ORA_DISK_1: specifying datafile(s) for validationinput datafile file number=00007 name=/oracle11/oradata/jycs/jycs/LDJC_6.dbfinput datafile file number=00006 name=/oracle11/oradata/jycs/jycs/CDZJ_7.dbfchannel ORA_DISK_1: validation complete, elapsed time: 00:00:25List of Datafiles=================File Status Marked Corrupt Empty Blocks Blocks Examined High SCN---- ------ -------------- ------------ --------------- ----------6    OK     0              255625       262144          14690188839620  File Name: /oracle11/oradata/jycs/jycs/CDZJ_7.dbf  Block Type Blocks Failing Blocks Processed  ---------- -------------- ----------------  Data       0              6239  Index      0              0  Other      0              280File Status Marked Corrupt Empty Blocks Blocks Examined High SCN---- ------ -------------- ------------ --------------- ----------7    OK     0              3818         655360          14690187700475  File Name: /oracle11/oradata/jycs/jycs/LDJC_6.dbf  Block Type Blocks Failing Blocks Processed  ---------- -------------- ----------------  Data       0              361553  Index      0              286299  Other      0              3690Finished validate at 2017-08-16 20:01:17

5.清除阶段
如果为了迁移创建了单独的转换home与实例,那么在传输表空间操作完成之后可以关闭实例并删除软件。为了执行跨平台增量备份传输表空间而创建的文件与目录也可以删除了,例如:
.源系统中的dfcopydir目录
.源系统中的backupformat目录
.目标系统中的stageondest目录
.目标系统中的backupondest目录
.源系统与目标系统中的$TMPDIR环境变量

Perl脚本xttdriver.pl选项
-S 准备传输源:-S选项只有当使用dbms_file_transfer方法传输数据文件时使用。这个准备操作在源系统中只对源数据库执行一次。这步操作将创建xttnewdatafiles.txt与getfile.sql文件

-G 从源系统获取数据文件:-G选项只有当使用dbms_file_transfer方法传输数据文件时使用。获取数据文件操作在目标系统中对目标数据库只执行一次。-S选项必须在它之前执行一次,并将生成的xttnewdatafiles.txt与getfile.sql文件传输到目标系统。-G选项会连接到目标数据库并执行脚本getfile.sql。getfile.sql将调用dbms_file_transfer.get_file()过程通过使用dblink(srclink)来从源数据库的目录对象(srcdir)中获取要被传输的数据文件到目标数据库的目录对象(dstdir)中。

-p 准备对源数据库执行备份:-p选项只有当使用RMAN备份方法来生成数据文件副本时才使用。这步操作在源系统中对源数据库只执行一次。这步操作会连接到源数据库并对要被传输的每个表空间执行一次xttpreparesrc.sql脚本。xttpreparesrc.sql会执行以下操作:
1.验证表空间是否处于online,read write模式与是否不包含脱机数据文件
2.标识第一次执行增量备份操作时所需要使用的SCN信息并将它们写入$TMPDIR目录中的xttplan.txt文件中
3.在源系统中会在xtt.properties文件的dfcopydir参数所指定的目录中创建初始化数据文件副本。这些数据文件副本必须手动传输到目标每张
4.创建RMAN脚本$TMPDIR/rmanconvert.cmd,在目标系统中它将被用来将数据文件副本的字节序转换为目标系统所使用的字节序

-c 转换数据文件:-c选项只有当使用RMAN备份创建初始化数据文件副本时才使用。在目标系统中转换数据文件副本只执行一次。这步操作将使用rmanconvert.cmd文件来将数据文件副本转换为目标系统所使用的字节序。转换后的数据文件副本会被存储到xtt.properties文件的storageondest参数所指定的目录中,也就是最终目标数据库存储数据文件的目录。

-i 创建增量备份: 创建增量备份可以对源数据库执行一次或多次。这个步骤会读取$TMPDIR/xttplan.txt中所记录的SCN并生成用于前滚目标系统上数据文件副本的增量备份文件。

-r 前滚数据文件:对于创建的每个增量备份都会对目标数据库的数据文件进行前滚操作。这步操作会连接到cnvinst_home与cnvinst_sid所定义的增量转换实例,转换所创建的增量备份,那么连接到目标数据库对数据文件应用增量备份进行前滚操作。

-s 判断新的from_scn:对源数据库判断新的from_scn可以执行一次或多次。这步操作会计算下次增量备份所需要的from_scn,并将其记录在xttplan.txt文件中,然后当下一次创建增量备份的就会使用它。

-e 生成Data Pump TTS命令:在目标系统中对目标数据库只执行一次来生成Data Pump TTS命令。这步操作将创建一个使用dblink来导入元数据的Data Pump Import命令

-d debug:-d选项能以debug模式来执行xttdriver.pl与RMAN命令。要启用debug模式需要设置环境变量XTTDEBUG=1

xtt.properties文件参数说明
tablespaces:用逗号来分隔从源数据库要被传输到目标数据库的表空间列表,例如tablespaces=TS1,TS2

platformid:从v$database.platform_id获得的源数据库的platform id,例如platformid=13

srcdir:源数据库中的目录对象,它指向源数据库中存储数据文件的目录。多个目录可以使用逗号进行分隔。srcdir与dstdir的映射可以是N:1或N:N。例如可以有多个源目录且文件存储到单个目标目录或者文件来自一个特定源目录将被存储到一个特定的目标目录。这个参数只有使用dbms_file_transfer来传输数据文件时才使用,例如srcdir=SOURCEDIR,srcdir=SRC1,SRC2

dstdir:目标数据库中的目录对象,它指向目标数据库中存储数据文件的目录。如果使用了多个源目录(srcdir),那么可以定义多个目标目录以便将特定源目录中的文件写入特定的目标目录中。这个参数只有使用dbms_file_transfer来传输数据文件时才使用,例如
dstdir=DESTDIR,dstdir=DST1,DST2

srclink:目标数据库中连接到源数据库的dblink。使用dbms_file_transfer传输数据文件时会使用这个dblink。这个参数只有使用dbms_file_transfer来传输数据文件时才使用,例如srclink=ttslink

dfcopydir:源系统中用来存储xttdriver.pl -p操作所生成的数据文件副本目录。这个目录要有足够的空间来存储所有被传输表空间的数据文件副本。这个目录可以是目标系统上通过NFS-mounted文件系统所挂载到源系统中的一个目录,在这种情况下,目标系统中的stageondest参数也引用这个相同的NFS目录。可以参考See Note 359515.1 for mount option guidelines。 这个参数只有使用RMAN备份生成数据文件副本时才使用,例如dfcopydir=/stage_source

backupformat:源系统中存储增量备份文件的目录。这个目录必须要有足够的空间来存储所有创建的增量备份文件。这个目录可以是目标系统上通过NFS-mounted文件系统所挂载到源系统中的一个目录,在这种情况下,目标系统中的stageondest参数也引用这个相同的NFS目录。例如,backupformat=/stage_source

stageondest:目标系统中存储从源系统中手动传输过来的数据文件副本。这个目录要有足够的空间来存储数据文件副本。这个目录同时也是用来存储从源系统传输过来的增量备份文件的目录。在目标系统上执行xttdriver.pl -c转换数据文件与执行xttdriver.pl -r前滚数据文件时会从这个目录中读取数据文件副本与增量备份文件。这个目标也可以是一个DBFS-mounted文件系统。个目录可以是源系统上通过NFS-mounted文件系统所挂载到目标系统中的一个目录,在这种情况下,源系统中的backupformat参数与dfcopydir参数就会引用这个相同的NFS目录。可以参考See Note 359515.1 for mount option guidelines。例如stageondest=/stage_dest

storageondest:目标系统中用来存储xttdriver.pl -c转换操作后所生成的数据文件副本的目录,也就是目标数据库最终存储数据文件的目录。这个目录要有足够的空间来永久存储数据文件。这个参数当使用RMAN备份来生成初始化数据文件副本时才使用,例如
storageondest=+DATA或者storageondest=/oradata/test

backupondest:目录系统中用来存储xttdriver.pl -r前滚操作所转换后的增量备份文件的目录。这个目录要有足够的空间来存储转换后的增量备份文件。注意,如果这个参数指向ASM磁盘目录,那么需要在xtt.properties参数文件中定义asm_home与asm_sid参数。如果这个参数指向文件系统目录,那么就从xtt.properties参数文件中删除asm_home与asm_sid参数。例如,backupondest=+RECO

cnvinst_home:如果需要使用一个单独的增量转换home目录时才使用。它是目标系统中运行增量转换实例的ORACLE_HOME,例如cnvinst_home=/u01/app/oracle/product/11.2.0.4/xtt_home

cnvinst_sid:如果需要使用一个单独的增量转换home目录时才使用。它是目标系统中运行增量转换实例的ORACLE_SID,例如cnvinst_xtt

asm_home:目标系统中ASM实例的ORACLE_HOME。注意如果backupondest设置为文件系统目录,那么就要删除asm_home与asm_sid参数,例如asm_home=/u01/app/11.2.0.4/grid

asm_sid:目标系统中ASM实例的ORACLE_SID。例如asm_sid=+ASM1

parallel:定义rmanconvert.cmd命令文件中rman convert命令的并行度。如果不设置这个参数,那么xttdriver.pl将使用parallel=8的缺省并行度。例如,parallel=3

rollparallel:定义xttdriver.pl -r前滚操作的并行度,例如rollparallel=2

getfileparallel:定义xttdriver.pl -G获取数据文件副本操作的并行度,缺省值是1,最大值为8,例如getfileparallel=4

0