-- 參考文檔,xtts使用到的腳本可以從以下MOS下載。
11G - Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (文檔 ID 1389592.1)
12c – 使用跨平臺增量備份來減少傳輸表空間的停機時間 (文檔 ID 2102859.1)
12C - Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (文檔 ID 2005729.1)
-- db info
源端 : rdbms 11.2.0.4 192.168.2.52 , 實例名testogg
目標端:rdbms 12.2.0.1 192.168.2.74 , 實例名test
-- 在源端開啓塊跟蹤
alter database enable block change tracking using file '/home/oracle/block_change_tracking.f';
-- 在源端創建測試用表空間, 創建用戶和測試數據
create tablespace xtts datafile '/u01/app/oracle/oradata/testogg/xtts01.dbf' size 100M autoextend on;
create user u_xtts identified by oracle;
grant connect,resource to u_xtts;
grant dba to u_xtts;
alter user u_xtts default tablespace xtts;
conn u_xtts/oracle
create table t_xtts as select * from dba_objects;
--在源端安裝rman_xttconvert_v3.zip ,編輯xtt.properties文件
tablespaces=xtts
platformid=13
dfcopydir=/backup/xtts/full -- 源端datafile convert 保存路徑,產生的是datafile copy 。
backupformat=/backup/xtts/inc -- 源端備份保存路徑(含增量備份) .源庫上備份放置的地方,這個目錄必須有足夠的空閒磁盤空間來放置0級備份及所有之後產生的增量備份
stageondest=/backup/xtts/full --目標端備份文件存放路徑 .目標系統上用來放置從源庫上傳輸過來的備份的位置
storageondest=/u01/app/oracle/oradata/testogg -- 目標端的數據文件保存位置
backupondest=/backup/xtts/inc --目標端增量備份集存放路徑
-- export下環境變量TMPDIR,指向腳本所在的目錄。否則會報錯,報錯看提示或者FAILED文件。然後Make sure srcdir dstdir srclink is not defined with prepare
export TMPDIR=/home/oracle
-- 對庫進行全備 。在/backup/xtts/full下生成了備份文件
/u01/app/oracle/product/11.2.0/dbhome_1/perl/bin/perl xttdriver.pl -p
-- 將備份和相關文件copy到目標庫對應的位置。源端的backupformat目錄中的備份要傳送到目標端stageondest目錄。
cd /backup/xtts/full
scp * 192.168.2.74:/backup/xtts/full/
cd /home/oracle/
scp rmanconvert.cmd 192.168.2.74:/home/oracle/
-- 在目標端恢復全備(恢復出數據文件),數據文件會被恢復到storageondest定義的目錄中。
export TMPDIR=/home/oracle
cd /home/oracle
/u01/app/oracle/product/12.2.0/dbhome_1/perl/bin/perl xttdriver.pl -c
-- 源端製造增量數據
conn u_xtts/oracle
insert into t_xtts select * from dba_objects;
commit;
-- 源端執行增量備份 ,生成增量備份文件和txt文件
/u01/app/oracle/product/11.2.0/dbhome_1/perl/bin/perl xttdriver.pl -i
[oracle@oggtest ~]$ ll *.txt
-rw-r--r--. 1 oracle oinstall 150181 Apr 28 09:06 awrrpt_1_28_29.txt
-rw-r--r-- 1 oracle oinstall 30 Jun 1 13:53 incrbackups.txt
-rw-r--r-- 1 oracle oinstall 25 Jun 1 13:53 tsbkupmap.txt
-rw-r--r-- 1 oracle oinstall 52 Jun 1 13:28 xttnewdatafiles.txt
-rw-r--r-- 1 oracle oinstall 18 Jun 1 13:28 xttplan.txt
[oracle@oggtest ~]$
--將生成的增量備份文件(在incrbackups.txt中有記錄)和相關TXT文件copy到目標庫對應的文件夾下.(xttplan.txt, tsbkupmap.txt, incrbackups.txt)在每次增量備份中仍然需要拷貝。因爲這些文件在每次執行增量備份後會發生改變。
$ scp `cat incrbackups.txt` oracle@dest:/stageondest -- 和下面語句一樣
[oracle@oggtest inc]$ pwd
/backup/xtts/full
[oracle@oggtest inc]$ scp 02v1lmv6_1_1 192.168.2.74:/backup/xtts/full/
cd /home/oracle
scp xttplan.txt 192.168.2.74:/home/oracle/
scp tsbkupmap.txt 192.168.2.74:/home/oracle/
scp incrbackups.txt 192.168.2.74:/home/oracle/
-- 目標端進行增量恢復。(每次這個步驟在執行中,都需要拷貝 xttplan.txt 和 tsbkupmap.txt,因爲它們的內容在每次執行時都會發生改變。)
/u01/app/oracle/product/12.2.0/dbhome_1/perl/bin/perl xttdriver.pl -r
##爲下次增量備份確定 from_scn (本次測試沒有使用該命令。但是xttplan.txt中每次增量備份,該文件中記錄的值都會變化)
[oracle@source]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -s
-- 再次製造增量數據,完畢後,將表空間做read only 。進行最後的傳輸,將備份的增量文件和txt文件傳送到目標端。
conn u_xtts/oracle
insert into t_xtts select * from dba_objects;
commit;
alter tablespace xtts read only;
/u01/app/oracle/product/11.2.0/dbhome_1/perl/bin/perl xttdriver.pl -i
##scp `cat incrbackups.txt` oracle@dest:/stageondest
scp `cat incrbackups.txt` 192.168.2.74:/home/oracle/
scp xttplan.txt.new 192.168.2.74:/home/oracle/
scp tsbkupmap.txt 192.168.2.74:/home/oracle/ -- 裏面包含第二次增量備份的文件
scp incrbackups.txt 192.168.2.74:/home/oracle/
-- 最後一次應用增量,這樣,源端和目標端的數據就一致了。
/u01/app/oracle/product/12.2.0/dbhome_1/perl/bin/perl xttdriver.pl -r
-- 源端導出元數據
expdp "'/ as sysdba'" dumpfile = xtts.dmp directory = DUMP transport_tablespaces=xtts logfile=xtts.log
##或者使用perl命令生成導入元數據的命令(通過dblink導入)
/u01/app/oracle/product/12.2.0/dbhome_1/perl/bin/perl xttdriver.pl -e -- 生成 /home/oracle/xttplugin.txt
[oracle@wls10306-01 ~]$ more /home/oracle/xttplugin.txt
impdp directory=<DATA_PUMP_DIR> logfile=<tts_imp.log> \
network_link=<ttslink> transport_full_check=no \
transport_tablespaces=XTTS \
transport_datafiles='/u01/app/oracle/oradata/testogg/XTTS_9.dbf'
[oracle@wls10306-01 ~]$
##-- 執行導入 ,在目標端創建連接到源端的dblink 。(沒有用這種方法。)
##
##create database link to_test connect to system identified by oracle using 'TEST';
##
##impdp system/oracle directory=DUMP logfile=tts_imp.log network_link=to_test transport_full_check=no transport_tablespaces=XTTS transport_datafiles='/u01/app/oracle/oradata/testogg/XTTS_9.dbf'
##
-- 導入元數據,先創建用戶
U_XTTS
create user u_xtts identified by oracle;
grant connect,resource to u_xtts;
grant dba to u_xtts;
alter user u_xtts default tablespace xtts;
impdp system/oracle directory=DUMP logfile=tts_imp.log dumpfile=xtts.dmp transport_datafiles='/u01/app/oracle/oradata/testogg/XTTS_9.dbf'
-- 驗證是否存在邏輯或物理損壞
RMAN>validate tablespce xtts;
-- 將目標端的表空間xtts 更改爲讀寫模式
alter tablespace xtts read write;
--對比數據
[oracle@oggtest admin]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.4.0 Production on Mon Jun 1 15:20:00 2020
Copyright (c) 1982, 2013, Oracle. All rights reserved.
@>conn / as sysdba
Connected.
SYS@testogg>select count(*) from u_xtts.t_xtts;
COUNT(*)
----------
261273
SYS@testogg>
[oracle@wls10306-01 admin]$ sqlplus /nolog
SQL*Plus: Release 12.2.0.1.0 Production on Mon Jun 1 16:59:41 2020
Copyright (c) 1982, 2016, Oracle. All rights reserved.
@>conn / as sysdba
Connected.
SYS@test>select count(*) from u_xtts.t_xtts;
COUNT(*)
----------
261273
SYS@test>
附加:
###################################################備份和恢復的過程
-- 源端全庫備份
[oracle@oggtest ~]$ /u01/app/oracle/product/11.2.0/dbhome_1/perl/bin/perl xttdriver.pl -p
============================================================
trace file is /home/oracle/prepare_Jun1_Mon_13_28_36_720//Jun1_Mon_13_28_36_720_.log
=============================================================
--------------------------------------------------------------------
Parsing properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Done parsing properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Checking properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Done checking properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Starting prepare phase
--------------------------------------------------------------------
Prepare source for Tablespaces:
'XTTS' /backup/xtts/full
xttpreparesrc.sql for 'XTTS' started at Mon Jun 1 13:28:36 2020
xttpreparesrc.sql for ended at Mon Jun 1 13:28:36 2020
--------------------------------------------------------------------
Done with prepare phase
--------------------------------------------------------------------
--------------------------------------------------------------------
Find list of datafiles in system
--------------------------------------------------------------------
--------------------------------------------------------------------
Done finding list of datafiles in system
--------------------------------------------------------------------
[oracle@oggtest ~]$
## 生成的文件
[oracle@oggtest ~]$ ls -l /backup/xtts/full
total 102408
-rw-r----- 1 oracle oinstall 104865792 Jun 1 13:28 XTTS_9.tf
[oracle@oggtest ~]$
-- 目標端執行全庫恢復,恢復出數據文件
[oracle@wls10306-01 ~]$ /u01/app/oracle/product/12.2.0/dbhome_1/perl/bin/perl xttdriver.pl -c
============================================================
trace file is /home/oracle/convert_Jun1_Mon_15_28_45_475//Jun1_Mon_15_28_45_475_.log
=============================================================
--------------------------------------------------------------------
Parsing properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Done parsing properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Checking properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Done checking properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Performing convert
--------------------------------------------------------------------
--------------------------------------------------------------------
Converted datafiles listed in: /home/oracle/xttnewdatafiles.txt
--------------------------------------------------------------------
[oracle@wls10306-01 ~]$
## 轉換後的文件
[oracle@wls10306-01 ~]$ more /home/oracle/xttnewdatafiles.txt
::XTTS
9,/u01/app/oracle/oradata/testogg/XTTS_9.dbf
[oracle@wls10306-01 ~]$
-- 執行增量備份
[oracle@oggtest ~]$ /u01/app/oracle/product/11.2.0/dbhome_1/perl/bin/perl xttdriver.pl -i
============================================================
trace file is /home/oracle/incremental_Jun1_Mon_13_53_39_822//Jun1_Mon_13_53_39_822_.log
=============================================================
--------------------------------------------------------------------
Parsing properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Done parsing properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Checking properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Done checking properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Backup incremental
--------------------------------------------------------------------
============================================================
No new datafiles added
=============================================================
Prepare newscn for Tablespaces: 'XTTS'
--------------------------------------------------------------------
Starting incremental backup
--------------------------------------------------------------------
--------------------------------------------------------------------
Done backing up incrementals
--------------------------------------------------------------------
[oracle@oggtest ~]$
-- 進行一次增量恢復
[oracle@wls10306-01 ~]$ /u01/app/oracle/product/12.2.0/dbhome_1/perl/bin/perl xttdriver.pl -r
============================================================
trace file is /home/oracle/rollforward_Jun1_Mon_15_53_01_314//Jun1_Mon_15_53_01_314_.log
=============================================================
--------------------------------------------------------------------
Parsing properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Done parsing properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Checking properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Done checking properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Start rollforward
--------------------------------------------------------------------
--------------------------------------------------------------------
End of rollforward phase
--------------------------------------------------------------------
[oracle@wls10306-01 ~]$
-- 最後一次增量備份
[oracle@oggtest ~]$ /u01/app/oracle/product/11.2.0/dbhome_1/perl/bin/perl xttdriver.pl -i
============================================================
trace file is /home/oracle/incremental_Jun1_Mon_14_19_19_347//Jun1_Mon_14_19_19_347_.log
=============================================================
--------------------------------------------------------------------
Parsing properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Done parsing properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Checking properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Done checking properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Backup incremental
--------------------------------------------------------------------
============================================================
No new datafiles added
=============================================================
Prepare newscn for Tablespaces: 'XTTS'
--------------------------------------------------------------------
Starting incremental backup
--------------------------------------------------------------------
--------------------------------------------------------------------
Done backing up incrementals
--------------------------------------------------------------------
[oracle@oggtest ~]$
-- 最後一次增量恢復
[oracle@wls10306-01 ~]$ /u01/app/oracle/product/12.2.0/dbhome_1/perl/bin/perl xttdriver.pl -r
============================================================
trace file is /home/oracle/rollforward_Jun1_Mon_16_20_55_894//Jun1_Mon_16_20_55_894_.log
=============================================================
--------------------------------------------------------------------
Parsing properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Done parsing properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Checking properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Done checking properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Start rollforward
--------------------------------------------------------------------
--------------------------------------------------------------------
End of rollforward phase
--------------------------------------------------------------------
[oracle@wls10306-01 ~]$
-- 導入元數據
[oracle@wls10306-01 dump]$ impdp system/oracle directory=DUMP logfile=tts_imp.log dumpfile=xtts.dmp transport_datafiles='/u01/app/oracle/oradata/testogg/XTTS_9.dbf'
Import: Release 12.2.0.1.0 - Production on Mon Jun 1 16:56:07 2020
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
Master table "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01": system/******** directory=DUMP logfile=tts_imp.log dumpfile=xtts.dmp transport_datafiles=/u01/app/oracle/oradata/testogg/XTTS_9.dbf
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 Jun 1 16:56:39 2020 elapsed 0 00:00:26
[oracle@wls10306-01 dump]$
-- 補充 xttdriver.pl 的用法
[oracle@oggtest ~]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl
============================================================
trace file is /home/oracle//Jun2_Tue_09_51_40_380//Jun2_Tue_09_51_40_380_.log
=============================================================
--------------------------------------------------------------------
Parsing properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Done parsing properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Checking properties
--------------------------------------------------------------------
--------------------------------------------------------------------
Done checking properties
--------------------------------------------------------------------
This program prepares, backsup and rollsforward tablespaces
for cross-platform transportable tablespaces.
usage: xttdriver.pl
{[--backup|-b] || [--bkpincr|-B] || [--bkpexport/E]
[--resincrdmp|M]
[--fixnewdf|W]
[--convert/-c] || [--generate|-e] || [--incremental|-i] ||
[[--prepare|-p] || [--getfile|-G]] ||
[--restore|R] || [--recover|X]
[--rollforward|-r [--rolltbs|-T <TBS1[,TBS2]>] ||
[--determinescn|-s] ||
[--orasid/O] || [--orahome|-o]]
[--help|-h]}
Additional options
------------------
[--debug|d] [--clearerrorfile|-C] [--xttdir|Dir <tmpdir>]
[-F/--propfile] [-I/--propdir]
-b : For 12c and above, generate transportable backups
-B : For 12c and above, generate level 1 transportable backups
-c : conversion of datafiles
-M : create the dump file from the generated backup
-e : generate impdp script: export over new link
-i : incremental backup
-p : prepare
-G : get datafiles from source database using get_file, should not
be used together with -p
-r : roll forward datafiles
-s : new from_scn values into xttplan.txt
-R : For 12c restore the datafiles from the backups
-X : For 12c recover the datafiles from the backups
-T : roll forward specific tablespace(s)
-h : this (help) message (Default)
-d : provides more debug information, also rman is called with debug
option so that tracing is better.
-L : delete the ERROR FILE and proceed with the execution
-D : Instead of defining environement variable, user can pass tmpdir
through xttdir
-O : Use this option to pass ORACLE_SID to override the environment
variable
-o : Use this option to pass ORACLE_HOME to override the environment
variable
-I : Use this option to mention the location from where the script
will pick the properties file etc
-F : Use this option to mention the location from where the script
will pick the properties file.
-W : Will try to reconstruct files on the destination after new
datafiles have been added
example: xttdriver.pl -p
xttdriver.pl -i
xttdriver.pl -r
xttdriver.pl -s
[oracle@oggtest ~]$
END