原文转载于http://blog.youkuaiyun.com/renfengjun/article/details/52880292
跨平台表空间增量迁移
platform
|
OS’version
|
IP
地址
|
数据库版本
|
desc
| |
10-8-28-71
|
solaris sparc X64
|
5.11
|
ip1
|
11.2.0.4
|
源端
|
orcl6
|
Oracle Linux X64
|
6
|
ip2
|
11.2.0.4
|
目标端
|
SQL> select * from V$TRANSPORTABLE_PLATFORM order by 1;
PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
----------- ---------------------------------------- --------------
1 Solaris[tm] OE (32-bit) Big
2 Solaris[tm] OE (64-bit) Big
3 HP-UX (64-bit) Big
4 HP-UX IA (64-bit) Big
5 HP Tru64 UNIX Little
6 AIX-Based Systems (64-bit) Big
7 Microsoft Windows IA (32-bit) Little
8 Microsoft Windows IA (64-bit) Little
9 IBM zSeries Based Linux Big
10 Linux IA (32-bit) Little
11 Linux IA (64-bit) Little
PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
----------- ---------------------------------------- --------------
12 Microsoft Windows x86 64-bit Little
13 Linux x86 64-bit Little
15 HP Open VMS Little
16 Apple Mac OS Big
17 Solaris Operating System (x86) Little
18 IBM Power Based Linux Big
19 HP IA Open VMS Little
20 Solaris Operating System (x86-64) Little
21 Apple Mac OS (x86-64) Little
20 rows selected.
此次为跨字节序的迁移动作。
确定要传输的表空间是否字包含,如果传输多个表空间,中间加逗号。
EXECUTEDBMS_TTS.TRANSPORT_SET_CHECK('xttbs',true) ;
SELECT * FROM TRANSPORT_SET_VIOLATIONS;
create tablespace xtidx datafile '/u01/app/oracle/oradata/startrek/xtidx01.dbf' size 100m autoextend on next 100m maxsize unlimited ;
create tablespace xttbs datafile '/u01/app/oracle/oradata/startrek/xttbs01.dbf' size 100m autoextend on next 100m maxsize unlimited ;
source
dexter
xiaojun
创建了一些测试数据。
SQL> select * from tab
2 ;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
TB1 TABLE
TB2 TABLE
TB3 TABLE
TB4 TABLE
xttbs
表数据
xtidx
索引数据
需要迁移的数据如下所示:
表空间名称
|
数据文件
|
包含内容
|
数据
owner
|
xttbs
|
/u01/app/oracle/oradata/startrek/xttbs01.dbf
|
表数据
|
dexter
|
xtidx
|
/u01/app/oracle/oradata/startrek/xtidx01.dbf
|
索引数据
|
dexter
|
directory
信息
源端
sourcedir /u01/sourcedir
targetdir /u01/targetdir
xtt.properties
中几个重要参数说明:
tablespaces=xttbs,xtidx
要迁移的表空间
platformid=2 source
端
platform
编号,查看
V$TRANSPORTABLE_PLATFORM
视图
srcdir=/u01/app/oracle/oradata/startrek
与
dstdir
联合使用,有点像
dg
中的
convert
,当数据文件在源端以及
target
端不一致的时候可以使用
dstdir=/u01/app/oracle/oradata/startrek
dfcopydir=/u01/sourcedir/dfcopy
源端目录,使用
rmanbackup
的时候,将
datafile copy
放置在源端的目录
backupformat=/u01/sourcedir/incbk
源端目录,源端增量备份生成的目录
stageondest=/u01/targetdir/datafiledir
目标端目录,源端的
datafilecopy
传输到目标段临时存放的目录。(未转换前)
storageondest=/u01/target/rmanbk
目标端目录,
datafile copy
以及
incremental backup
使用
-c
转换后的目录。正经需要使用的目录,转换后的数据文件会在这个目录生成。
如果目标端为asm可以设定为+DATA磁盘组名称。
backupondest=/u01/target/rmaninc
目标段目录,当使用
-r roll forward datafiles
阶段,
inc backup
存放的目录。使用rman incremental recover的时候不需要这个参数。如果目标端为asm可以设定为+DATA磁盘组名称。
具体:
## Location where converted incremental backups on the destination system
## will be written during the "-r roll forward datafiles" step.
##
其他内容,请具体看下面的文件。
cd /u01/sourcedir
执行下面命令
$ORACLE_HOME/perl/bin/perl xttdriver.pl –p
这个脚本执行三个主要步骤
- Creates datafile copies of the tablespaces that will be transported in the location specified by the xtt.properties parameterdfcopydir.
-
创建给定表空间相关的数据文件 copy 到 dfcopydir 下面。
-
- Verifies the tablespaces are online, in READ WRITE mode, and do not contain offline datafiles.
-
验证给定的表空间为 online 、 readwrite 、不包含 offline 的数据文件
-
-
Creates the following files used later in this procedure:
- xttplan.txt
-
rmanconvert.cmd
-
创建两个相关的文件 xttplan.txt,rmanconvert.cmd
-
别忘了源库需要在归档模式
生成的相关两个文件内容如下所示
cat xttplan.txt
XTTBS::::2785883
5
XTIDX::::2785883
6
-bash-4.1$ cat rmanconvert.cmd
host 'echo ts::XTTBS';
convert from platform 'Solaris[tm] OE (64-bit)'
datafile
'/u01/targetdir/datafiledir/XTTBS_5.tf'
format '/u01/target/rmanbk/%N_%f.xtf'
parallelism 3;
host 'echo ts::XTIDX';
convert from platform 'Solaris[tm] OE (64-bit)'
datafile
'/u01/targetdir/datafiledir/XTIDX_6.tf'
format '/u01/target/rmanbk/%N_%f.xtf'
parallelism 3;
将源端生成的
rmanconvert.cmd XTIDX_6.tf XTTBS_5.tf xttplan.txt
两个
datafile copy
文件
copy
到
target
端的
stageondest
目录下。另外两个生成的文件置于
xtt
相关脚本主目录下面。
然后执行下面的语句:
$ORACLE_HOME/perl/bin/perl xttdriver.pl –c
其实就是执行了
rman convert
命令。
上述脚本执行后会执行下面两个文件
[oracle@orcl6 targetdir]$ cat xttnewdatafiles.txt
::XTTBS
5,/u01/targetdir/rmanbk/XTTBS_5.xtf
::XTIDX
6,/u01/targetdir/rmanbk/XTIDX_6.xtf
神秘分割线
原文地址:blog.youkuaiyun.com/renfengjun
然后执行源端增量备份
$ORACLE_HOME/perl/bin/perl xttdriver.pl –i
生成了下面四个文件
04rgpbpl_1_1 05rgpbpn_1_1
tsbkupmap.txt
incrbackups.txt
-bash-4.1$ cat rmanincr.cmd
set nocfau;
host 'echo ts::XTTBS';
backup incremental from scn 2785883
tag tts_incr_update tablespace 'XTTBS' format
'/u01/sourcedir/incbk/%U';
set nocfau;
host 'echo ts::XTIDX';
backup incremental from scn 2785883
tag tts_incr_update tablespace 'XTIDX' format
'/u01/sourcedir/incbk/%U';
-bash-4.1$ cat tsbkupmap.txt
XTIDX::6:::1=05rgpbpn_1_1
XTTBS::5:::1=04rgpbpl_1_1
将上述几个文件
copy
到
target
端的
stageondest
目录下。
tsbkupmap.txt
以及新生成的
xttplan.txt.new
文件
copy
到
target
端的脚本主目录。
重命名为
xttplan.txt
执行下面语句完成
roll forwad
。
$ORACLE_HOME/perl/bin/perl xttdriver.pl –r
源端执行下面的脚本以确定下一次执行
incremental backup
的
from_scn
$ORACLE_HOME/perl/bin/perl xttdriver.pl –s
神秘分割线
分割线中间即为
repeat
重复执行的内容。
$ORACLE_HOME/perl/bin/perl xttdriver.pl –s
上面的语句就算是最后一步也需要执行,因为最后还需要进行一次增量备份恢复。
先将表空间置于
readonly
状态。(这个脚本其实就是减少了
down
机时间)
SQL> alter tablespace xttbs read only ;
Tablespace altered.
SQL> alter tablespace xtidx read only ;
Tablespace altered.
SQL>
执行最后一次增量备份
$ORACLE_HOME/perl/bin/perl xttdriver.pl –i
将相关四个文件传送到
target
端
tsbkupmap.txt
xttplan.txt
inc09
inc10
相应的目录中。
执行最后一次
incremental recover
[oracle@dest]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl –r
然后执行下面的命令
[oracle@dest]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl –e
可以生成一个
impdp
的命令,然后适当的改一下即可。
[oracle@orcl6 targetdir]$ cat xttplugin.txt
impdp directory=<DATA_PUMP_DIR> logfile=<tts_imp.log> \
network_link=<ttslink> transport_full_check=no \
transport_tablespaces=XTTBS,XTIDX \
transport_datafiles='/u01/targetdir/rmanbk/XTTBS_5.xtf','/u01/targetdir/rmanbk/XTIDX_6.xtf'
这是在另个系统网络通畅的情况下使用的命令,如果不通则需要手动的
expdp impdp
来
import metadata
。
expdp dexter/xiaojun dumpfile=xtts_xttbs_xtidx.dmp directory=sourcedir transport_tablespaces=xttbs,xtidx logfile=exp_xtts_xttbs_xtidx.log
传送文件
xtts_xttbs_xtidx.dmp
到
target
端相应的目录然后执行导入即可。
impdp system/xiaojun dumpfile= xtts_xttbs_xtidx.dmp directory=targetdir transport_datafiles='/u01/targetdir/rmanbk/XTTBS_5.xtf','/u01/targetdir/rmanbk/XTIDX_6.xtf' logfile= imp_xtts_xttbs_xtidx.dmp.log
导入结束后相关的表都级联生成(记得先创建用户)
[oracle@orcl6 targetdir]$ sqlplus dexter/xiaojun
SQL*Plus: Release 11.2.0.4.0 Production on Mon Sep 26 14:21:25 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select * from tab ;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
TB1 TABLE
TB2 TABLE
TB3 TABLE
TB4 TABLE
SQL> select count(*) from tb2 ;
COUNT(*)
----------
10000
SQL> select count(*) from tb3 ;
COUNT(*)
----------
87079
SQL>
xtts
就完成了。
数据库的
down
机时间取决于最后一次执行
incremental
的速度。
随着执行
incremental
的次数的增加
down
机时间越来越少。
相关文档见:
11G - Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (
文档
ID 1389592.1)
12c –
使用跨平台增量备份来减少传输表空间的停机时间
(
文档
ID 2102859.1)
如需转载,请注明出处。