【資料遷移】XTTS跨平臺傳輸表空間v3(3.DFT方式)
一、 XTTS 概述
XTTS ( Cross-Platform transport tablespace )意為跨平臺傳輸表空間。 XTTS 實際上是 TTS 的增強功能。 TTS 意為傳輸表空間,原理是將業務表空間從一個庫傳到另一個庫,以達到資料遷移的目的。 XTTS 則可以支援跨平臺位元組格式、增量進行傳輸。(跨平臺傳輸表空間僅支援 oracle 11g 或以上)
XTTS 有三種方式:傳統方式、 RMAN 增量方式、 DFT 方式( DBMS_FILE_TRANSFER )
本文采用DFT 方式進行遷移、 DFT 方式和 RMAN 增量方式思路相同。 DFT 方式會用到 dblink, 並且 xtt.properties 引數會有所不同。
二、 規劃
源庫使用RMAN 增量 xtts 遷移表空間 tbs1 & tbs2 到目標庫。整個操作步驟分為準備階段、前滾階段、傳輸階段。
1. 準備階段
在準備階段中,表空間的資料檔案副本最終要傳輸到目標系統(如果跨位元組格式需要自動convert )。
在準備階段中,需要準備一個軟包:rman_xttconvert_v3.zip 。將這個 zip 包解壓後,裡面會有一個 xttdriver.pl 指令碼。指令碼功能及引數如下:
2. 前滾階段
在上一步準備階段中,資料檔案副本已經傳輸到目標端。在前滾階段中,將使用增量備份來進行前滾。可以執行多次此步驟,並且每次的增量備份會變得越來越小,目標端應用也會越來越快,直到目標庫資料與源庫資料同步。
3. 傳輸階段
在傳輸階段中,被傳輸的表空間需要被設定為read only 模式,然後在源庫做最後一次增量備份,應用到目標庫中,讓目標庫的資料與源庫保持一致。然後從源庫中使用 Datapump 匯出後設資料,並匯入到目標庫中。最後,傳輸到目標庫的表空間需要設定為 read write 。
三、 傳輸限制
ü 主庫作業系統不支援windows ;
ü 源庫必須在10.2.0.3 版本或以上;
ü 源庫的compatible 引數在 10.2.0 或以上;
ü 源庫的compatible 引數必須不能比目標庫大(向下相容);
ü 源庫必須處於歸檔模式;
ü 目標庫必須在11.2.0.4 或以上;
ü RMAN 預設裝置型別需要配置為 DISK ,且 RMAN 的配置不能設定 COMPRESSED ,如果設定了,可能會報以下錯誤:
ORA-19994 : cross-platform backup of compressed backups different endianess ;
ü 被傳輸的表空間必須是online ,並且不存在 offline 資料檔案。該表空間必須是 read write ;
ü 如果表空間是read only 模式,那就沒必要使用 RMAN 增量和 DFT 方式遷移了,可以直接用傳統 XTTS 方式進行遷移。
四、 思路清晰
1.
- 目標端安裝資料庫軟體並建立資料庫
- 源庫表空間自包含檢查
- 目標庫建立使用者,賦予許可權
- 建立目錄和 dblink
- 源端上傳 zip 軟體包,修改 xtt.properties 配置檔案
2.
- 源庫檢查,建立兩個檔案
- 將這兩個檔案傳輸到目標端
- 目標端資料檔案轉換
3.
- 源端建立表空間增量備份集
- 將增量備份集傳輸到目標端
- 轉換增量備份集並應用到目標庫
- 確定下次增量備份的 SCN
- 重複前滾階段(可選)
4.
- 源庫將表空間設定為 read only
- 源庫建立最後一次增量備份集,傳輸、轉換、應用到目標庫
- 匯入物件資料到目標庫
- 將表空間設定為 read write
- 壞塊驗證,資料驗證
五、 操作步驟
1. 初始化設定階段
1) 目標端安裝資料庫軟體並建立資料庫,要求字符集和國家集與源庫保持一致,並且資料庫軟體版本不小於源庫。
2) 主庫表空間自包含檢查
SQL> execute dbms_tts.transport_set_check('tbs1,tbs2',true);
SQL> select * from transport_set_violations;
3) 確認目標庫建立相應的使用者,並賦予許可權
源庫檢查使用者資訊
SQL> select 'create user '||username||' identified by '||''''||password||''''||';' from dba_users where default_tablespace in(' TBS1 ' , ' TBS2 ');
源庫檢查角色許可權
SQL> select 'grant '||GRANTED_ROLE||' to '||grantee||';' from dba_role_privs where grantee in(select username from dba_users where default_tablespace in(' TBS1 ' , ' TBS2 '));
4) 建立以下物件
源端建立複製資料庫物件的目錄(參考源庫被傳輸的資料檔案存放位置)
SQL> create directory source_dir as '/oradata/ORCL';
目標端建立存放資料庫物件的目錄(參考目標庫最終資料檔案存放位置)
SQL> create directory dest_dir as '+DATA/ORCL/datafile';
5) 目標端建立dblink ,參考源端
目標端tnsnames.ora 新增以下內容
XTTS_SOURCE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.70.178)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
目標端建立dblink ,參考源端
SQL> create public database link xtts_link connect to system identified by oracle using 'XTTS_SOURCE';
6) 源端新建目錄/home/oracle/xtt 。上傳 rman_xttconvert_v3.zip 檔案到 xtt 目錄下,並賦予許可權。
# mkdir /home/oracle/xtt s
# chown -R oracle:dba /home/oracle/xtt s /
oracle 使用者解壓 zip 包
$ cd /home/oracle/xtt s /
$ unzip rman_xttconvert_v3.zip
7) 編輯xtt.properties 檔案
tablespaces= TBS1,TBS2
platformid=13
srcdir = SOURCE_DIR
dstdir=DEST_DIR
srclink=XTTS_LINK
backupformat=/home/oracle/xtts/bakincr
stageondest=/home/oracle/xtts/bak
dstdir =+DATA/ ORCL /datafile
backupondest=+DATA/ ORCL /datafile
asm_home=/u01/app/ 11.2.0/grid
asm_sid=+ASM 1
parallel= 8
rollparallel= 4
getfileparallel= 4
引數說明:
源端建立目錄:
$ mkdir -p /home/oracle/xtts/bakincr
$ mkdir -p /home/oracle/xtts/bak
目標端建立目錄
$ mkdir -p /home/oracle/xtts/bak
8) 源端和目標端設定TMPDIR
(oracle 使用者環境變數)
源庫:$export TMPDIR=/home/oracle/xtts
目標庫:$export TMPDIR=/home/oracle/xtts
9) 源端將/home/oracle/xtts 下所有檔案傳給目標端
$ scp /home/oracle/xtts/* 172.16.70.170:/home/oracle/xtts/
2. 準備階段
在這個階段,表空間資料檔案會從源庫傳輸到目標庫,並且會做一個自動的位元組格式的轉換。這個步驟只需要做一次。在此階段,源端資料庫可以正常進行訪問。
1) 執行以下命令
$ perl xttdriver.pl -S
這個命令會執行以下動作:
- 確認表空間是 online , read write 模式,不包含 offline 資料檔案
- 建立兩個檔案: xttnewdatafiles.txt,getfile.sql
2) 將第一步產生的兩個檔案傳到目標端
$ scp xttnewdatafiles.txt getfile.sql 172.16.70.170:/home/oracle/xtts/
3) 目標端執行以下命令
$ perl xttdriver.pl -G
當這一步完成,資料檔案將會被傳輸到目標端最終位置,並且被目標庫使用。
3. 前滾階段
在這個階段中,源庫會建立一個增量備份,傳輸到備庫。並且會轉換為目標庫位元組格式,並應用於目標庫。這個階段可以執行多次,每一個成功的增量備份所花的時間應該比之前的要少,並且使目標庫的資料與源庫更接近。
1) 源庫建立表空間的增量備份集
源庫執行以下命令
$ perl xttdriver.pl -i
這個命令會對傳輸的表空間產生一個增量備份集。備份集位於 backupformat 目錄下。
並且會產生兩個檔案:tsbkupmap.txt,incrbackups.txt
2) 傳輸增量備份集到目標端
將上一步驟產生的增量備份集傳輸到目標端 stageondest 目錄
$ scp `cat incrbackups.txt` 172.16.70.170:/home/oracle/xtts/bak/
3) 轉換增量備份集並應用到目標庫
源端複製xttplan.txt,tsbkupmap.txt 到目標端。
$ scp xttplan.txt tsbkupmap.txt 172.16.70.170:/home/oracle/xtts/
目標端執行以下命令
$ perl xttdriver.pl -r
如果命令報以下錯誤,請到 backupondest 去檢視是否有備份檔案,如果有,忽視這個錯誤。
Error:
------
No tablepsace entries found
注:
ü 每次做增量的時候,都要複製xttplan.txt 和 tsbkupmap.txt 這兩個檔案到目標端。
ü 源端xttplan.txt.new 不要做任何複製或改動
ü 目標例項會被關閉和重啟
4) 確定下次增量備份的scn
源庫執行下面指令碼
$ perl xttdriver.pl -s
確定一個新的scn, 記錄在 xttplan.txt 檔案中。
5) 重複前滾階段(可選)
如果你需要使目標庫更接近源庫,則需要重複進行3.1 步驟;如果目標庫已經足夠接近源庫,那就直接進行傳輸階段。
4. 傳輸階段
在傳輸階段,源庫需要被設定為read only 模式,目標庫會被應用最後一次增量備份。在目標資料檔案一致後,將執行一次普通的傳輸表空間的步驟,從源庫匯出後設資料物件並匯入目標庫。在此階段結束之前,源庫只能透過 read only 方式訪問資料。
1) 源庫將表空間設定read only
SQL> alter tablespace tbs1 read only;
SQL> al t er tablespace tbs2 read only;
2) 源庫建立最後一次增量備份集,傳輸、轉換、應用到目標庫
$ perl xttdriver.pl -i
$ scp `cat incrbackups.txt` 172.16.70.170:/home/oracle/xtts/bak/
$ scp xttplan.txt tsbkupmap.txt 172.16.70.170:/home/oracle/xtts/
3) 目標端最後一次應用
$ perl xttdriver.pl -r
4) 匯入物件資料到目標庫
目標端執行一下命令
$ perl xttdriver.pl -e
這個命令會產生一個DataPump 匯入模板檔案 xttplugin.txt 。根據模板編寫匯入指令碼
impdp system/oracle directory=XTTS_DIR logfile=xtts_imp.log network_link=XTTS_LINK transport_full_check=no transport_tablespaces=TBS1,TBS2 transport_datafiles='+DATA/ORCL/datafile/tbs1.dbf','+DATA/ORCL/datafile/tbs2.dbf'
注:這裡的directory 不必指向資料檔案目錄
5) 目標庫設定表空間read write ;
SQL> select tablespace_name,file_name from dba_data_files;
SQL> alter tablespace tbs1 read write;
SQL> alter tablespace tbs2 read write;
6) 檢查物理和邏輯塊損壞,並驗證資料
RMAN> validate tablespace tbs1,tbs2 check logical;
驗證資料略
-------- end --------
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31529886/viewspace-2707061/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【資料遷移】XTTS跨平臺傳輸表空間(1.傳統方式)TTS
- 【資料遷移】XTTS跨平臺傳輸表空間v3(2.RMAN增量)TTS
- 【資料遷移】XTTS跨平臺傳輸表空間v4TTS
- 用傳輸表空間跨平臺遷移資料
- 跨平臺表空間遷移(傳輸表空間)
- [zt]跨平臺表空間傳輸 (DB遷移)
- 【XTTS】Oracle傳輸表空間xtts增量方式TTSOracle
- 利用可傳輸表空間跨平臺遷移 -RMAN CONVERT
- 【資料遷移】使用傳輸表空間遷移資料
- RMAN跨平臺傳輸資料庫和表空間資料庫
- RMAN跨平臺可傳輸表空間和資料庫資料庫
- 【傳輸表空間】使用 EXPDP/IMPDP工具的傳輸表空間完成資料遷移
- 海量資料遷移之傳輸表空間(一)
- 12c跨平臺傳輸表空間
- 跨平臺表空間傳輸的實現
- 10g跨平臺傳輸表空間
- 【傳輸表空間】使用 EXPDP/IMPDP工具的傳輸表空間完成資料遷移[轉]
- 【XTTS】使用XTTS傳輸表空間將Oracle11.2.0.4資料遷移至Oracle19CTTSOracle
- Ora10G跨平臺傳輸表空間
- RMAN跨平臺傳輸表空間(different Endian)
- RMAN跨平臺傳輸表空間(same endian)
- oracle 異構平臺遷移之傳輸表空間一例Oracle
- 利用CONVERT實現跨平臺表空間遷移
- 基於可傳輸表空間的表空間遷移
- oracle跨版本與平臺執行傳輸表空間Oracle
- Oracle 不同平臺間表空間遷移Oracle
- 使用可傳輸表空間向rac環境遷移資料
- RMAN跨小版本跨平臺與位元組序傳輸表空間
- 用可傳輸表空間實現Oracle跨平臺移植Oracle
- 10g新特性之-跨平臺表空間傳輸
- 【XTTS】Oracle11g 使用XTTS增量跨平臺傳輸減少停機時間TTSOracle
- 使用Oracle可傳輸表空間的特性複製資料(3)跨平臺的傳輸實踐Oracle
- 同位元組序跨平臺表空間傳輸的測試
- 11g使用增量備份來執行跨平臺傳輸表空間減少停機時間(xtts_rman)TTS
- 10G新特性筆記之跨平臺傳輸表空間筆記
- Oracle資料庫同平臺與異構平臺下的表空間傳輸Oracle資料庫
- oracle小知識點14--xtts傳輸表空間OracleTTS
- 資料庫物件遷移表空間資料庫物件