第 1 阶段、初始设置阶段
1.1、安装目标数据库软件并创建目标数据库
在将运行目标数据库的目标系统上安装所需的 Oracle 数据库软件。
在目标系统上识别(或创建)数据库以将表空间传输到其中,并创建表空间传输所需的模式用户。即拥有正在传输的表空间内的对象的用户。根据通用 TTS 要求,确保目标数据库中存在表空间传输所需的架构用户。
1.2、识别要传输的表空间
标识源数据库中将传输的表空间。
1.3、在源系统上安装 xttconvert 脚本
在源系统上,作为 Oracle 软件所有者,下载并解压缩作为 rman_xttconvert_VER4.3.zip
[oracle@19c01 script]$ unzip rman_xttconvert_VER4.3.zip
Archive: rman_xttconvert_VER4.3.zip
inflating: xtt.newproperties
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 中的参数说明部分。对于此过程,只有以下参数是必需的。其他是可选的和/或可供使用的。
- 表空间
- 平台ID
- src_scratch_location
- 目标暂存位置
- 目标数据文件位置
- usermantransport=1 -如果源数据库运行12c或更高版本,建议设置此值。这会导致在设置此参数时使用新的12c(及更高版本)功能。
vi xtt.properties
tablespaces=T1,T2
platformid=13
src_scratch_location=/back/data
dest_datafile_location=/back/oradata/
dest_scratch_location=/back/dest_backups/
usermantransport=1
注意:无论目标版本如何,目标的 xtt.properties 中此参数的值必须与源相同。
1.6、将xttconvert脚本和xtt.properties复制到目标系统
作为 Oracle 软件所有者,将所有 xttconvert 脚本和修改后的xtt.properties文件复制到目标系统
[oracle@19c01 back]$ scp -r tts oracle@172.16.220.202:/back/
oracle@172.16.220.202's password:
rman_xttconvert_VER4.3.zip 100% 41KB 14.8MB/s 00:00
xtt.newproperties 100% 5169 5.2MB/s 00:00
xttcnvrtbkupdest.sql 100% 1390 2.0MB/s 00:00
xttdbopen.sql 100% 71 104.7KB/s 00:00
xttdriver.pl 100% 176KB 82.9MB/s 00:00
xttprep.tmpl 100% 11KB 12.6MB/s 00:00
xttstartupnomount.sql 100% 52 71.4KB/s 00:00
xtt.properties 100% 5168 5.0MB/s 00:00
1.7、设置TMPDIR环境变量
在源系统和目标系统上的 shell 环境中,将环境变量 TMPDIR 设置为支持脚本所在的位置。使用此 shell 运行 Perl 脚本xttdriver.pl,如以下步骤所示。如果未设置 TMPDIR,则在 /tmp 中创建输出文件,并且输入文件预计位于 /tmp 中。
[oracle@19c02 back]$ export TMPDIR=/back/tts
[oracle@19c01 tts]$ export TMPDIR=/back/tts
第 2 阶段、准备阶段
2.1、在源系统上运行备份
[oracle@19c01 tts]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3
============================================================
trace file is /back/tts/backup_Mar8_Fri_16_56_39_161//Mar8_Fri_16_56_39_161_.log
=============================================================
--------------------------------------------------------------------
Parsing properties
--------------------------------------------------------------------
Key: getfileparallel
Values: 4
Key: dest_scratch_location
Values: /back/dest_backups/
Key: dest_datafile_location
Values: /back/oradata/
Key: platformid
Values: 13
Key: usermantransport
Values: 1
Key: tablespaces
Values: T1,T2
Key: rollparallel
Values: 2
Key: parallel
Values: 3
Key: src_scratch_location
Values: /back/data
--------------------------------------------------------------------
Done parsing properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Checking properties
--------------------------------------------------------------------
ARGUMENT tablespaces
ARGUMENT platformid
ARGUMENT backupformat
--------------------------------------------------------------------
Done checking properties
--------------------------------------------------------------------
ORACLE_SID : orcl
ORACLE_HOME : /u01/app/oracle/product/19.3.0/dbhome_1
190000
PRIMARY
Running on PRIMARY
XXX: Doing usermantransport
--------------------------------------------------------------------
Starting backup phase
--------------------------------------------------------------------
Parallel:3
/ as sysdba
size of tablespace 2
No. of tablespaces per batch 1
TABLESPACE STRING :'T1'
Prepare source for Tablespaces:
'T1' /back/dest_backups/
xttpreparesrc.sql for 'T1' started at Fri Mar 8 16:56:41 2024
#PLAN:T1::::2084950
backup for transport allow inconsistent incremental level 0 datafile
#NEWDESTDF:5,/back/oradata//T1_5.dbf
5
#PLAN:5
format '/back/data/%N_%f_%U.bkp';
xttpreparesrc.sql for ended at Fri Mar 8 16:56:42 2024
#PLAN:T1::::2084950backup for transport allow inconsistent incremental level 0 datafile
#NEWDESTDF:5,/back/oradata//T1_5.dbf
5
#PLAN:5
format '/back/data/%N_%f_%U.bkp';
verifySrcdirDatafiles: Entered
verifySrcdirDatafiles: #PLAN:T1::::2084950
verifySrcdirDatafiles: backup for transport allow inconsistent incremental level 0 datafile
verifySrcdirDatafiles: #NEWDESTDF:5,/back/oradata//T1_5.dbf
verifySrcdirDatafiles: 5
verifySrcdirDatafiles: #PLAN:5
verifySrcdirDatafiles: format '/back/data/%N_%f_%U.bkp';
/back/tts/backup_Mar8_Fri_16_56_39_161//xttprepare.cmd
Recovery Manager: Release 19.0.0.0.0 - Production on Fri Mar 8 16:56:42 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
RMAN-06005: connected to target database: ORCL (DBID=1690603302)
RMAN> #PLAN:T1::::2084950
2> backup for transport allow inconsistent incremental level 0 datafile
3> #NEWDESTDF:5,/back/oradata//T1_5.dbf
4> 5
5> #PLAN:5
6> format '/back/data/%N_%f_%U.bkp';
7>
RMAN-03090: Starting backup at 08-MAR-24
RMAN-06009: using target database control file instead of recovery catalog
RMAN-08030: allocated channel: ORA_DISK_1
RMAN-08500: channel ORA_DISK_1: SID=395 device type=DISK
RMAN-08048: channel ORA_DISK_1: starting incremental level 0 datafile backup set
RMAN-08010: channel ORA_DISK_1: specifying datafile(s) in backup set
RMAN-08522: input datafile file number=00005 name=/u01/app/oracle/oradata/ORCL/datafile/t1.dbf
RMAN-08038: channel ORA_DISK_1: starting piece 1 at 08-MAR-24
RMAN-08044: channel ORA_DISK_1: finished piece 1 at 08-MAR-24
RMAN-08530: piece handle=/back/data/T1_5_022l6nec_1_1.bkp tag=TAG20240308T165644 comment=NONE
RMAN-08540: channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
RMAN-03091: Finished backup at 08-MAR-24
Recovery Manager complete.
TABLESPACE STRING :'T2'
Prepare source for Tablespaces:
'T2' /back/dest_backups/
xttpreparesrc.sql for 'T2' started at Fri Mar 8 16:56:46 2024
#PLAN:T2::::2084950
backup for transport allow inconsistent incremental level 0 datafile
#NEWDESTDF:2,/back/oradata//T2_2.dbf
2
#PLAN:2
format '/back/data/%N_%f_%U.bkp';
xttpreparesrc.sql for ended at Fri Mar 8 16:56:47 2024
#PLAN:T2::::2084950backup for transport allow inconsistent incremental level 0 datafile
#NEWDESTDF:2,/back/oradata//T2_2.dbf
2
#PLAN:2
format '/back/data/%N_%f_%U.bkp';
verifySrcdirDatafiles: Entered
verifySrcdirDatafiles: #PLAN:T2::::2084950
verifySrcdirDatafiles: backup for transport allow inconsistent incremental level 0 datafile
verifySrcdirDatafiles: #NEWDESTDF:2,/back/oradata//T2_2.dbf
verifySrcdirDatafiles: 2
verifySrcdirDatafiles: #PLAN:2
verifySrcdirDatafiles: format '/back/data/%N_%f_%U.bkp';
/back/tts/backup_Mar8_Fri_16_56_39_161//xttprepare.cmd
Recovery Manager: Release 19.0.0.0.0 - Production on Fri Mar 8 16:56:47 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
RMAN-06005: connected to target database: ORCL (DBID=1690603302)
RMAN> #PLAN:T2::::2084950
2> backup for transport allow inconsistent incremental level 0 datafile
3> #NEWDESTDF:2,/back/oradata//T2_2.dbf
4> 2
5> #PLAN:2
6> format '/back/data/%N_%f_%U.bkp';
7>
RMAN-03090: Starting backup at 08-MAR-24
RMAN-06009: using target database control file instead of recovery catalog
RMAN-08030: allocated channel: ORA_DISK_1
RMAN-08500: channel ORA_DISK_1: SID=263 device type=DISK
RMAN-08048: channel ORA_DISK_1: starting incremental level 0 datafile backup set
RMAN-08010: channel ORA_DISK_1: specifying datafile(s) in backup set
RMAN-08522: input datafile file number=00002 name=/u01/app/oracle/oradata/ORCL/datafile/t2.dbf
RMAN-08038: channel ORA_DISK_1: starting piece 1 at 08-MAR-24
RMAN-08044: channel ORA_DISK_1: finished piece 1 at 08-MAR-24
RMAN-08530: piece handle=/back/data/T2_2_032l6neh_1_1.bkp tag=TAG20240308T165649 comment=NONE
RMAN-08540: channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
RMAN-03091: Finished backup at 08-MAR-24
Recovery Manager complete.
fixXTTDupDatafiles: Entered
--------------------------------------------------------------------
Done with backup phase
--------------------------------------------------------------------
XXX: ::5:::1=T1_5_022l6nec_1_1.bkp
XXX: ::2:::1=T2_2_032l6neh_1_1.bkp
/ as sysdba
size of tablespace 3
No. of tablespaces per batch 1
TABLESPACE STRING :'T1'
Prepare newscn for Tablespaces: 'T1'
TABLESPACE STRING :'T2'
Prepare newscn for Tablespaces: 'T2'
New /back/tts/xttplan.txt with FROM SCN's generated
scalar(or2
XXX: adding here for 2, 0, T1,T2
XXX: adding proper here for index 0, b4 added 'T1'
,
XXX: adding proper here for index 0, added 'T1'
XXX: adding proper here for index 1, b4 added 'T2'
,
XXX: adding proper here for index 1, added 'T2'
Number of tb arrays is 2
::T1:::SCN:::20857605=2085760,T1,/back/oradata//T1_5.dbf
::T2:::SCN:::2085800
2=2085800,T2,/back/oradata//T2_2.dbf
::T1:::SCN:::2085760
/back/tts/newfile.txt: ::T1:::SCN:::2085760
/back/tts/newfile.txt: 5=2085760,T1,/back/oradata//T1_5.dbf
/back/tts/newfile.txt: ::T2:::SCN:::2085800
/back/tts/newfile.txt: 2=2085800,T2,/back/oradata//T2_2.dbf
/back/tts/backup_Mar8_Fri_16_56_39_161//xttnewdatafiles.txt.added: ::T1:::SCN:::2085760
/back/tts/backup_Mar8_Fri_16_56_39_161//xttnewdatafiles.txt.added: 5=2085760,T1,/back/oradata//T1_5.dbf
Writing new 5=2085760,T1,/back/oradata//T1_5.dbf
Writing1 new 5, /back/oradata//T1_5.dbf
/back/tts/backup_Mar8_Fri_16_56_39_161//xttnewdatafiles.txt.added: ::T2:::SCN:::2085800
/back/tts/backup_Mar8_Fri_16_56_39_161//xttnewdatafiles.txt.added: 2=2085800,T2,/back/oradata//T2_2.dbf
Writing new 2=2085800,T2,/back/oradata//T2_2.dbf
Writing1 new 2, /back/oradata//T2_2.dbf
XTTout:::T1
XTTout:5,/back/oradata//T1_5.dbf
XTTout:::T2
XTTout:2,/back/oradata//T2_2.dbf
Sqlout:::T1:::SCN:::2085760
Sqlout:5=2085760,T1,/back/oradata//T1_5.dbf
Sqlout:::T2:::SCN:::2085800
Sqlout:2=2085800,T2,/back/oradata//T2_2.dbf
No new datafiles added
2.2、将以下文件传输到目标系统
从源src_scratch_location 到目标dest_scratch_location创建的备份。注意:这些参数只能存放在一个位置。
从源$TMPDIR到目标 $TMPDIR的res.txt文件
[oracle@19c01 back]$ scp -r data oracle@19c02:/back/
The authenticity of host '19c02 (172.16.220.202)' can't be established.
ECDSA key fingerprint is SHA256:fF/iIw97tAEBRoD5jCB6zw1Jp0QDQ218lAU586Fa4wA.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '19c02' (ECDSA) to the list of known hosts.
oracle@19c02's password:
T1_5_022l6nec_1_1.bkp 100% 13MB 98.2MB/s 00:00
T2_2_032l6neh_1_1.bkp 100% 12MB 133.2MB/s 00:00
[oracle@19c01 tts]$ scp res.txt oracle@172.16.220.202:/back/tts/
oracle@172.16.220.202's password:
res.txt 100% 120 93.9KB/s 00:00
2.3、恢复目标系统上的数据文件
在目标系统上,以 oracle 用户身份登录,环境(ORACLE_HOME 和 ORACLE_SID 环境变量)指向目标数据库,按如下方式运行恢复:
[oracle@19c02 tts]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore --debug 3
============================================================
trace file is /back/tts/restore_Mar8_Fri_17_14_27_727//Mar8_Fri_17_14_27_727_.log
=============================================================
--------------------------------------------------------------------
Parsing properties
--------------------------------------------------------------------
Key: parallel
Values: 3
Key: getfileparallel
Values: 4
Key: dest_scratch_location
Values: /back/dest_backups/
Key: usermantransport
Values: 1
Key: dest_datafile_location
Values: /back/oradata/
Key: src_scratch_location
Values: /back/data
Key: platformid
Values: 13
Key: rollparallel
Values: 2
Key: tablespaces
Values: T1,T2
--------------------------------------------------------------------
Done parsing properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Checking properties
--------------------------------------------------------------------
ARGUMENT tablespaces
ARGUMENT platformid
ARGUMENT backupformat
--------------------------------------------------------------------
Done checking properties
--------------------------------------------------------------------
ORACLE_SID : orcl
ORACLE_HOME : /u01/app/oracle/product/19.3.0/dbhome_1
190000
Doiung 12C
YYY: CAme here
5
2
--------------------------------------------------------------------
Start restore/recover
--------------------------------------------------------------------
rdfno 5
BEFORE ROLLPLAN
XXX: /back/oradata//T1_5.dbf, 5, 7, 5, 0
XXX: res is 5 format '/back/oradata//T1_5.dbf'
AFTER ROLLPLAN
rdfno 2
BEFORE ROLLPLAN
XXX: /back/oradata//T2_2.dbf, 2, 7, 2, 0
XXX: res is 2 format '/back/oradata//T2_2.dbf'
AFTER ROLLPLAN
Recovery Manager: Release 19.0.0.0.0 - Production on Fri Mar 8 17:14:29 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
RMAN-06005: connected to target database: ORCL (DBID=1690869858)
RMAN> restore from platform 'Linux x86 64-bit' FOREIGN DATAFILE 5 format '/back/oradata//T1_5.dbf' from backupset '/back/dest_backups//T1_5_022l6nec_1_1.bkp';
2>
3>
RMAN-03090: Starting restore at 08-MAR-24
RMAN-06009: using target database control file instead of recovery catalog
RMAN-08030: allocated channel: ORA_DISK_1
RMAN-08500: channel ORA_DISK_1: SID=393 device type=DISK
RMAN-08016: channel ORA_DISK_1: starting datafile backup set restore
RMAN-08089: channel ORA_DISK_1: specifying datafile(s) to restore from backup set
RMAN-08624: channel ORA_DISK_1: restoring foreign file 00005
RMAN-08003: channel ORA_DISK_1: reading from backup piece /back/dest_backups//T1_5_022l6nec_1_1.bkp
RMAN-08626: channel ORA_DISK_1: restoring foreign file 5 to /back/oradata/T1_5.dbf
RMAN-08627: channel ORA_DISK_1: foreign piece handle=/back/dest_backups//T1_5_022l6nec_1_1.bkp
RMAN-08023: channel ORA_DISK_1: restored backup piece 1
RMAN-08180: channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
RMAN-03091: Finished restore at 08-MAR-24
Recovery Manager complete.
Recovery Manager: Release 19.0.0.0.0 - Production on Fri Mar 8 17:14:29 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
RMAN-06005: connected to target database: ORCL (DBID=1690869858)
RMAN> restore from platform 'Linux x86 64-bit' FOREIGN DATAFILE 2 format '/back/oradata//T2_2.dbf' from backupset '/back/dest_backups//T2_2_032l6neh_1_1.bkp';
2>
3>
RMAN-03090: Starting restore at 08-MAR-24
数据文件将放置在目标系统上定义的dest_datafile_location 中。 注意:此参数仅允许一个位置。
第 3 阶段、前滚阶段
在此阶段,从源数据库创建增量备份,传输到目标系统,转换为目标系统字节序格式,然后应用于转换后的目标数据文件副本以将其前滚。该阶段可以运行多次。每个连续的增量备份应该比之前的增量备份花费更少的时间,并且将使目标数据文件副本与源数据库更加同步。在此阶段,可以完全访问正在传输的数据(源)。
注意:可以针对源执行多个备份,而无需将它们应用到目标。在目标执行“–restore”之前,必须复制备份文件和 res.txt。
注意:该脚本将在 --restore 之前以 NOMOUNT 方式关闭并启动目标数据库。
3.1、创建源系统上传输的表空间的增量备份
在源系统上,以 oracle 用户身份登录,环境(ORACLE_HOME 和 ORACLE_SID 环境变量)指向源数据库,运行创建增量步骤,如下所示:
[oracle@19c01 tts]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3
============================================================
trace file is /back/tts/backup_Mar8_Fri_17_20_36_464//Mar8_Fri_17_20_36_464_.log
=============================================================
--------------------------------------------------------------------
Parsing properties
--------------------------------------------------------------------
Key: tablespaces
Values: T1,T2
Key: dest_scratch_location
Values: /back/dest_backups/
Key: usermantransport
Values: 1
Key: rollparallel
Values: 2
Key: platformid
Values: 13
Key: dest_datafile_location
Values: /back/oradata/
Key: getfileparallel
Values: 4
Key: parallel
Values: 3
Key: src_scratch_location
Values: /back/data
--------------------------------------------------------------------
Done parsing properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Checking properties
--------------------------------------------------------------------
ARGUMENT tablespaces
ARGUMENT platformid
ARGUMENT backupformat
--------------------------------------------------------------------
Done checking properties
--------------------------------------------------------------------
ORACLE_SID : orcl
ORACLE_HOME : /u01/app/oracle/product/19.3.0/dbhome_1
190000
PRIMARY
Running on PRIMARY
XXX: Doing usermantransport
--------------------------------------------------------------------
Backup incremental
--------------------------------------------------------------------
scalar(or2
XXX: adding here for 2, 0, T1,T2
XXX: adding proper here for index 0, b4 added 'T1'
,
XXX: adding proper here for index 0, added 'T1'
XXX: adding proper here for index 1, b4 added 'T2'
,
XXX: adding proper here for index 1, added 'T2'
Number of tb arrays is 2
::T1:::SCN:::20857605=2085760,T1,/back/oradata//T1_5.dbf
::T2:::SCN:::2085800
2=2085800,T2,/back/oradata//T2_2.dbf
::T1:::SCN:::2085760
/back/tts/newfile.txt: ::T1:::SCN:::2085760
/back/tts/newfile.txt: 5=2085760,T1,/back/oradata//T1_5.dbf
/back/tts/newfile.txt: ::T2:::SCN:::2085800
/back/tts/newfile.txt: 2=2085800,T2,/back/oradata//T2_2.dbf
/back/tts/backup_Mar8_Fri_17_20_36_464//xttnewdatafiles.txt.added: ::T1:::SCN:::2085760
/back/tts/backup_Mar8_Fri_17_20_36_464//xttnewdatafiles.txt.added: 5=2085760,T1,/back/oradata//T1_5.dbf
Writing new 5=2085760,T1,/back/oradata//T1_5.dbf
Writing1 new 5, /back/oradata//T1_5.dbf
/back/tts/backup_Mar8_Fri_17_20_36_464//xttnewdatafiles.txt.added: ::T2:::SCN:::2085800
/back/tts/backup_Mar8_Fri_17_20_36_464//xttnewdatafiles.txt.added: 2=2085800,T2,/back/oradata//T2_2.dbf
Writing new 2=2085800,T2,/back/oradata//T2_2.dbf
Writing1 new 2, /back/oradata//T2_2.dbf
XTTout:::T1
XTTout:5,/back/oradata//T1_5.dbf
XTTout:::T2
XTTout:2,/back/oradata//T2_2.dbf
Sqlout:::T1:::SCN:::2085760
Sqlout:5=2085760,T1,/back/oradata//T1_5.dbf
Sqlout:::T2:::SCN:::2085800
Sqlout:2=2085800,T2,/back/oradata//T2_2.dbf
No new datafiles added
/ as sysdba
size of tablespace 2
No. of tablespaces per batch 1
TABLESPACE STRING :'T1'
Prepare newscn for Tablespaces: 'T1'
T1::::2085760 5
TABLESPACE STRING :'T2'
Prepare newscn for Tablespaces: 'T2'
T2::::2085800 2
--------------------------------------------------------------------
Starting incremental backup
--------------------------------------------------------------------
/back/tts/backup_Mar8_Fri_17_20_36_464//rmanincr.cmd
Recovery Manager: Release 19.0.0.0.0 - Production on Fri Mar 8 17:20:41 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
RMAN-06005: connected to target database: ORCL (DBID=1690603302)
RMAN> set nocfau;
2> host 'echo ts::T1';
3> backup incremental from scn 2084950
4> tablespace 'T1' format
5> '/back/data/%U';
6> set nocfau;
7> host 'echo ts::T2';
8> backup incremental from scn 2084950
9> tablespace 'T2' format
10> '/back/data/%U';
11>
RMAN-03023: executing command: SET NOCFAU
RMAN-06009: using target database control file instead of recovery catalog
ts::T1
RMAN-06134: host command complete
RMAN-03090: Starting backup at 08-MAR-24
RMAN-08030: allocated channel: ORA_DISK_1
RMAN-08500: channel ORA_DISK_1: SID=149 device type=DISK
RMAN-08008: channel ORA_DISK_1: starting full datafile backup set
RMAN-08010: channel ORA_DISK_1: specifying datafile(s) in backup set
RMAN-08522: input datafile file number=00005 name=/u01/app/oracle/oradata/ORCL/datafile/t1.dbf
RMAN-08038: channel ORA_DISK_1: starting piece 1 at 08-MAR-24
RMAN-08044: channel ORA_DISK_1: finished piece 1 at 08-MAR-24
RMAN-08530: piece handle=/back/data/042l6orb_1_1 tag=TAG20240308T172043 comment=NONE
RMAN-08540: channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
RMAN-03091: Finished backup at 08-MAR-24
RMAN-03023: executing command: SET NOCFAU
ts::T2
RMAN-06134: host command complete
RMAN-03090: Starting backup at 08-MAR-24
RMAN-12016: using channel ORA_DISK_1
RMAN-08008: channel ORA_DISK_1: starting full datafile backup set
RMAN-08010: channel ORA_DISK_1: specifying datafile(s) in backup set
RMAN-08522: input datafile file number=00002 name=/u01/app/oracle/oradata/ORCL/datafile/t2.dbf
RMAN-08038: channel ORA_DISK_1: starting piece 1 at 08-MAR-24
RMAN-08044: channel ORA_DISK_1: finished piece 1 at 08-MAR-24
RMAN-08530: piece handle=/back/data/052l6orc_1_1 tag=TAG20240308T172044 comment=NONE
RMAN-08540: channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
RMAN-03091: Finished backup at 08-MAR-24
Recovery Manager complete.
--------------------------------------------------------------------
Done backing up incrementals
--------------------------------------------------------------------
/ as sysdba
size of tablespace 3
No. of tablespaces per batch 1
TABLESPACE STRING :'T1'
Prepare newscn for Tablespaces: 'T1'
TABLESPACE STRING :'T2'
Prepare newscn for Tablespaces: 'T2'
New /back/tts/xttplan.txt with FROM SCN's generated
此步骤将为 xtt.properties 中列出的所有表空间创建增量备份。
3.2、将增量备份和 res.txt 传输到目标系统
将增量备份(在 src_scratch_location 和 dest_scratch_location 之间)和 res.txt(在 $TMPDIR 之间)从源传输到目标。当前备份的增量备份文件列表可以在源系统上的incrbackups.txt
文件中找到。
[oracle@19c01 tts]$ scp `cat incrbackups.txt` oracle@172.16.220.202:/back/dest_backups/
The authenticity of host '172.16.220.201 (172.16.220.201)' can't be established.
ECDSA key fingerprint is SHA256:fF/iIw97tAEBRoD5jCB6zw1Jp0QDQ218lAU586Fa4wA.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.16.220.201' (ECDSA) to the list of known hosts.
oracle@172.16.220.201's password:
042l6orb_1_1 100% 56KB 30.1MB/s 00:00
052l6orc_1_1 100% 56KB 38.5MB/s 00:00
oracle@172.16.220.202's password:
res.txt 100% 246 183.2KB/s 00:00
[oracle@19c01 tts]$
如果源系统上的src_scratch_location和目标系统上的 dest_scratch_location 引用相同的 NFS 存储位置,则不需要复制备份,因为它们在目标系统上的预期位置中可用。
但是,必须在上次增量备份之后复制 res.txt 文件,然后才能将其应用于目标
3.3、将增量备份应用到目标系统上的数据文件副本
在目标系统上,以 oracle 用户身份登录,环境(ORACLE_HOME 和 ORACLE_SID 环境变量)指向目标数据库,运行前滚数据文件步骤,
[oracle@19c02 tts]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore --debug 3
============================================================
trace file is /back/tts/restore_Mar8_Fri_17_39_21_219//Mar8_Fri_17_39_21_219_.log
=============================================================
--------------------------------------------------------------------
Parsing properties
--------------------------------------------------------------------
Key: dest_scratch_location
Values: /back/dest_backups/
Key: getfileparallel
Values: 4
Key: platformid
Values: 13
Key: tablespaces
Values: T1,T2
Key: rollparallel
Values: 2
Key: src_scratch_location
Values: /back/data
Key: parallel
Values: 3
Key: dest_datafile_location
Values: /back/oradata/
Key: usermantransport
Values: 1
--------------------------------------------------------------------
Done parsing properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Checking properties
--------------------------------------------------------------------
ARGUMENT tablespaces
ARGUMENT platformid
ARGUMENT backupformat
--------------------------------------------------------------------
Done checking properties
--------------------------------------------------------------------
ORACLE_SID : orcl
ORACLE_HOME : /u01/app/oracle/product/19.3.0/dbhome_1
190000
Doiung 12C
5
2
YYYZ: T1_5.dbf::5:::1=042l6orb_1_1 T2_2.dbf::2:::1=052l6orc_1_1
--------------------------------------------------------------------
Start restore/recover
--------------------------------------------------------------------
rdfno 5
BEFORE ROLLPLAN
XXX: /back/oradata//T1_5.dbf, 5, 8, 5, 0
XXX: res is '/back/oradata//T1_5.dbf'
AFTER ROLLPLAN
rdfno 2
BEFORE ROLLPLAN
XXX: /back/oradata//T2_2.dbf, 2, 8, 2, 0
XXX: res is '/back/oradata//T2_2.dbf'
AFTER ROLLPLAN
Recovery Manager: Release 19.0.0.0.0 - Production on Fri Mar 8 17:39:23 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
RMAN-06005: connected to target database: ORCL (DBID=1690869858)
RMAN> recover from platform 'Linux x86 64-bit' FOREIGN DATAFILECOPY '/back/oradata//T2_2.dbf' from backupset '/back/dest_backups//052l6orc_1_1';
2>
3>
RMAN-03090: Starting restore at 08-MAR-24
RMAN-06009: using target database control file instead of recovery catalog
RMAN-08030: allocated channel: ORA_DISK_1
RMAN-08500: channel ORA_DISK_1: SID=148 device type=DISK
RMAN-08016: channel ORA_DISK_1: starting datafile backup set restore
RMAN-08089: channel ORA_DISK_1: specifying datafile(s) to restore from backup set
RMAN-08624: channel ORA_DISK_1: restoring foreign file /back/oradata//T2_2.dbf
RMAN-08003: channel ORA_DISK_1: reading from backup piece /back/dest_backups//052l6orc_1_1
RMAN-08627: channel ORA_DISK_1: foreign piece handle=/back/dest_backups/052l6orc_1_1
RMAN-08023: channel ORA_DISK_1: restored backup piece 1
RMAN-08180: channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
RMAN-03091: Finished restore at 08-MAR-24
Recovery Manager complete.
前滚步骤连接到目标数据库,并对正在传输的每个表空间的表空间数据文件应用增量备份。
3.4、重复前滚阶段 3 (3.1-3.3)或继续进行阶段4,最终增量备份
- 如果您需要使目标数据库中的文件与生产系统更加同步,请从步骤 3.1 开始重复前滚阶段。
- 如果目标数据库中的文件与源数据库中的文件非常接近,则继续进入传输阶段。
第 4 阶段、最终增量备份
在此阶段,源数据变为只读,并且通过创建和应用最终增量备份使目标数据文件与源数据库保持一致。目标数据文件一致后,将执行正常的可传输表空间步骤,从源数据库导出对象元数据并将其导入目标数据库。在此阶段结束之前,只能以只读模式访问正在传输的数据。
如果运行的是12c及更高版本,此阶段有两个选项。如果运行的是11g,则只有选项1可用。
选项1、进行最终备份
1.1、将源数据库中的源表空间更改为只读
SQL> alter tablespace t1 read only;
Tablespace altered.
SQL> alter tablespace t2 read only;
Tablespace altered.
1.2、创建源系统上正在传输的表空间的最终增量备份
[oracle@19c01 tts]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3
============================================================
trace file is /tmp/backup_Mar11_Mon_08_53_08_247//Mar11_Mon_08_53_08_247_.log
=============================================================
--------------------------------------------------------------------
Parsing properties
--------------------------------------------------------------------
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Error:
------
Some failure occurred. Check /tmp/FAILED for more details
If you have fixed the issue, please delete /tmp/FAILED and run it
again OR run xttdriver.pl with -L option
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[oracle@19c01 tts]$ rm /tmp/FAILED \
> ^C
[oracle@19c01 tts]$ rm /tmp/FAILED
[oracle@19c01 tts]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3
============================================================
trace file is /tmp/backup_Mar11_Mon_08_53_26_718//Mar11_Mon_08_53_26_718_.log
=============================================================
--------------------------------------------------------------------
Parsing properties
--------------------------------------------------------------------
Key: dest_datafile_location
Values: /back/oradata/
Key: src_scratch_location
Values: /back/data
Key: rollparallel
Values: 2
Key: getfileparallel
Values: 4
Key: platformid
Values: 13
Key: dest_scratch_location
Values: /back/dest_backups/
Key: tablespaces
Values: T1,T2
Key: parallel
Values: 3
Key: usermantransport
Values: 1
--------------------------------------------------------------------
Done parsing properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Checking properties
--------------------------------------------------------------------
ARGUMENT tablespaces
ARGUMENT platformid
ARGUMENT backupformat
--------------------------------------------------------------------
Done checking properties
--------------------------------------------------------------------
ORACLE_SID : orcl
ORACLE_HOME : /u01/app/oracle/product/19.3.0/dbhome_1
190000
PRIMARY
Running on PRIMARY
XXX: Doing usermantransport
--------------------------------------------------------------------
Starting backup phase
--------------------------------------------------------------------
Parallel:3
/ as sysdba
size of tablespace 2
No. of tablespaces per batch 1
TABLESPACE STRING :'T1'
Prepare source for Tablespaces:
'T1' /back/dest_backups/
xttpreparesrc.sql for 'T1' started at Mon Mar 11 08:53:28 2024
DECLARE
*
ERROR at line 1:
ORA-20001: TABLESPACE(S) IS READONLY OR,
OFFLINE JUST CONVERT, COPY
ORA-06512: at line 284
xttpreparesrc.sql for ended at Mon Mar 11 08:53:29 2024
DECLARE*
ERROR at line 1:
ORA-20001: TABLESPACE(S) IS READONLY OR,
OFFLINE JUST CONVERT, COPY
ORA-06512: at line 284
####################################################################
Warning:
------
Error in executing /tmp/backup_Mar11_Mon_08_53_26_718//xttpreparesrc.sql
####################################################################
DECLARE*
ERROR at line 1:
ORA-20001: TABLESPACE(S) IS READONLY OR,
OFFLINE JUST CONVERT, COPY
ORA-06512: at line 284
verifySrcdirDatafiles: Entered
verifySrcdirDatafiles: DECLARE
verifySrcdirDatafiles: *
verifySrcdirDatafiles: ERROR at line 1:
verifySrcdirDatafiles: ORA-20001: TABLESPACE(S) IS READONLY OR,
verifySrcdirDatafiles: OFFLINE JUST CONVERT, COPY
verifySrcdirDatafiles: ORA-06512: at line 284
verifySrcdirDatafiles:
verifySrcdirDatafiles:
/tmp/backup_Mar11_Mon_08_53_26_718//xttprepare.cmd
Recovery Manager: Release 19.0.0.0.0 - Production on Mon Mar 11 08:53:29 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
RMAN-06005: connected to target database: ORCL (DBID=1690603302)
RMAN> DECLARE
2> *
3> ERROR at line 1:
4> ORA-20001: TABLESPACE(S) IS READONLY OR,
5> OFFLINE JUST CONVERT, COPY
6> ORA-06512: at line 284
7>
8>
9>
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01006: error signaled during parse
RMAN-02002: unexpected end of input file reached
Recovery Manager complete.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Error:
------
Recovery Manager: Release 19.0.0.0.0 - Production on Mon Mar 11 08:53:29 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
RMAN-06005: connected to target database: ORCL (DBID=1690603302)
RMAN> DECLARE
2> *
3> ERROR at line 1:
4> ORA-20001: TABLESPACE(S) IS READONLY OR,
5> OFFLINE JUST CONVERT, COPY
6> ORA-06512: at line 284
7>
8>
9>
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01006: error signaled during parse
RMAN-02002: unexpected end of input file reached
Recovery Manager complete.
Inappropriate ioctl for device
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
警告,可以忽略。
1.3、将增量备份和res.txt传输到目标系统
[oracle@19c01 tts]$ scp `cat incrbackups.txt` oracle@172.16.220.202:/back/dest_backups/
oracle@172.16.220.202's password:
072l6qdn_1_1 100% 56KB 30.0MB/s 00:00
062l6qdm_1_1 100% 11MB 146.2MB/s 00:00
[oracle@19c01 tts]$ scp res.txt oracle@172.16.220.202:/back/tts/
oracle@172.16.220.202's password:
res.txt
1.4、将上次增量备份应用到目标数据文件
[oracle@19c02 tts]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore --debug 3
============================================================
trace file is /tmp/restore_Mar11_Mon_08_45_13_244//Mar11_Mon_08_45_13_244_.log
=============================================================
--------------------------------------------------------------------
Parsing properties
--------------------------------------------------------------------
Key: dest_datafile_location
Values: /back/oradata/
Key: platformid
Values: 13
Key: parallel
Values: 3
Key: usermantransport
Values: 1
Key: tablespaces
Values: T1,T2
Key: src_scratch_location
Values: /back/data
Key: rollparallel
Values: 2
Key: getfileparallel
Values: 4
Key: dest_scratch_location
Values: /back/dest_backups/
--------------------------------------------------------------------
Done parsing properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Checking properties
--------------------------------------------------------------------
ARGUMENT tablespaces
ARGUMENT platformid
ARGUMENT backupformat
--------------------------------------------------------------------
Done checking properties
--------------------------------------------------------------------
ORACLE_SID : orcl
ORACLE_HOME : /u01/app/oracle/product/19.3.0/dbhome_1
190000
Doiung 12C
YYYZ:
第 5 阶段、传输阶段:导入元数据
1、方法一
1、在源数据库上运行数据泵导出
通过在源数据库上运行可传输模式数据泵导出来执行表空间传输,以将正在传输的对象元数据导出到转储文件中
[oracle@19c01 expdp]$ cat tts.par
dumpfile=xttdump.dmp
directory=dir
exclude=statistics
transport_tablespaces=T1,T2
transport_full_check=yes
logfile=tts_export.log
[oracle@19c01 expdp]$ expdp system/oracle parfile=tts.par
Export: Release 19.0.0.0.0 - Production on Mon Mar 11 08:57:06 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Starting "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01": system/******** parfile=tts.par
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/TABLE
Master table "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is:
/back/tts/expdp/xttdump.dmp
******************************************************************************
Datafiles required for transportable tablespace T1:
/u01/app/oracle/oradata/ORCL/datafile/t1.dbf
Datafiles required for transportable tablespace T2:
/u01/app/oracle/oradata/ORCL/datafile/t2.dbf
Job "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully completed at Mon Mar 11 08:57:19 2024 elapsed 0 00:00:12
2、将导出文件传输到数据泵使用的目标目录
[oracle@19c01 expdp]$ scp * oracle@172.16.220.202:/back/tts/impdp/
oracle@172.16.220.202's password:
tts_export.log 100% 1551 943.5KB/s 00:00
tts.par 100% 130 183.0KB/s 00:00
xttdump.dmp
3、使用目标上的导出文件运行数据泵导入以插入表空间
SQL> create directory dir as '/back/tts/impdp';
Directory created.
[oracle@19c02 impdp]$ cat tts_imp.par
dumpfile= xttdump.dmp
directory=dir
transport_datafiles='/back/oradata/T1_5.dbf','/back/oradata/T2_2.dbf'
logfile=tts_import.log
[oracle@19c02 impdp]$ impdp system/oracle parfile=tts_imp.par
Import: Release 19.0.0.0.0 - Production on Mon Mar 11 09:08:37 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Master table "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01": system/******** parfile=tts_imp.par
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
ORA-39123: Data Pump transportable tablespace job aborted
ORA-29342: user SCOTT does not exist in the database
Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" stopped due to fatal error at Mon Mar 11 09:08:39 2024 elapsed 0 00:00:01
需要先创建用户
SQL> create user scott identified by oracle account unlock;
User created.
SQL> grant dba to scott;
Grant succeeded.
[oracle@19c02 impdp]$ impdp system/oracle parfile=tts_imp.par
Import: Release 19.0.0.0.0 - Production on Mon Mar 11 10:13:46 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Master table "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01": system/******** parfile=tts_imp.par
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/TABLE
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at Mon Mar 11 10:13:48 2024 elapsed 0 00:00:02
第 6 阶段、验证传输的数据
1、检查目标数据库中未由 TTS 传输的对象、pl/sql 对象、序列、视图等
只有那些物理上位于正在传输的表空间中的数据库对象才会被复制到目标系统。位于 SYSTEM 表空间中的其他对象,例如用户、pl/sql 对象、序列、视图等将不会被传输。您将需要预先创建用户并将此类对象复制到目标系统(可能使用数据泵)。
2、检查表空间有效性
[oracle@19c02 impdp]$ rman target /
Recovery Manager: Release 19.0.0.0.0 - Production on Mon Mar 11 10:15:57 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1690869858)
RMAN> validate tablespace T1, T2 check logical;
Starting validate at 11-MAR-24
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=148 device type=DISK
channel ORA_DISK_1: starting validation of datafile
channel ORA_DISK_1: specifying datafile(s) for validation
input datafile file number=00005 name=/back/oradata/T1_5.dbf
input datafile file number=00002 name=/back/oradata/T2_2.dbf
channel ORA_DISK_1: validation complete, elapsed time: 00:00:01
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
2 OK 0 195 12801 2204855
File Name: /back/oradata/T2_2.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 4222
Index 0 0
Other 0 8383
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
5 OK 0 206 12801 2204851
File Name: /back/oradata/T1_5.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 2921
Index 0 0
Other 0 9673
Finished validate at 11-MAR-24
3、修改目标库表空间read writd
SQL> select tablespace_name,status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------------------------------------ ------------------
SYSTEM ONLINE
SYSAUX ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
USERS ONLINE
T1 READ ONLY
T2 READ ONLY
7 rows selected.
SQL> alter tablespace t1 read write;
Tablespace altered.
SQL> alter tablespace t2 read write;
Tablespace altered.
SQL> select tablespace_name,status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------------------------------------ ------------------
SYSTEM ONLINE
SYSAUX ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
USERS ONLINE
T1 ONLINE
T2 ONLINE
7 rows selected.
第7阶段、清理
清理迁移过程中使用的目录即可以




