【資料遷移】XTTS跨平臺傳輸表空間v4
一、 XTTS 概述
XTTS ( Cross-Platform transport tablespace )意為跨平臺傳輸表空間。 XTTS 實際上是 TTS 的增強功能。 TTS 意為傳輸表空間,原理是將業務表空間從一個庫傳到另一個庫,以達到資料遷移的目的。 XTTS 則可以支援跨平臺位元組格式、增量進行傳輸(跨平臺傳輸表空間僅支援 oracle 11g 或以上)。
本文采用xtts v4 版本,並且使用 RMAN 增量備份的方式進行兩庫之間遷移表空間,以實現最少的停機時間。
二、 規劃
源庫使用RMAN 增量 xtts 遷移表空間 tbs1 & tbs2 到目標庫。整個操作步驟分為準備階段、前滾階段、傳輸階段。
在準備階段中,需要準備一個軟體包:rman_xttconvert_VER4.zip 。將這個 zip 包解壓後,裡面會有一個 xttdriver.pl 指令碼。指令碼功能及引數如下:
三、 傳輸限制
ü 主庫作業系統不支援windows ;
ü xtts v4 版本僅支援 oracle 11.2.0.4 或以上
ü 源庫的compatible 引數必須不能比目標庫大(向下相容),因此, XTTS 可以用於升級操作;
ü 源庫必須處於歸檔模式;
ü 源庫RMAN 預設裝置型別需要配置為 DISK ,且 RMAN 的配置不能設定 COMPRESSED ,如果設定了,可能會報以下錯誤:
ORA-19994 : cross-platform backup of compressed backups different endianess ;
ü 源庫RMAN 配置不能設定為 BACKUP TYPE TO COPY, 必須配置為 BACKUP TYPE TO BAKCUPSET
ü 源庫RMAN 配置不能配置預設通道配置為 SBT
ü 被傳輸的表空間必須是online ,並且不存在 offline 資料檔案。該表空間必須是 read write ;
ü 如果表空間是read only 模式,那就沒必要使用 RMAN 增量和 DFT 方式遷移了,可以直接用傳統 XTTS 方式進行遷移。
ü ASM 只能被用於目標端最終存放路徑,這個版本 xtts 不能將備份放在 ASM 上;
ü 目標存放備份的位置,oracle 使用者必須有讀寫許可權。
四、 思路清晰
1. 準備階段
1) 建立表空間0 級備份;
2) 源端傳輸備份檔案到目標端;
3) 以目標端位元組格式,還原資料檔案到目標端;
2. 前滾階段
1) 源庫建立增量備份;
2) 傳輸增量備份和必要檔案到目標端;
3) 目標端轉換增量備份,並應用備份為目標庫資料檔案;
4) 重複上述操作,直到準備進行最後的表空間傳輸。
3. 傳輸階段
1) 源庫中表空間設定為read only ;
2) 最後一次執行前滾階段;
3) 目標端使用DataPump 匯入後設資料物件;
4) 目標庫設定表空間為read write 。
五、 操作步驟
1. 初始化設定階段
1) 目標端安裝資料庫軟體並建立資料庫,要求字符集和國家集與源庫保持一致,並且資料庫軟體版本不小於源庫。
2) 確認目標庫建立相應的使用者,並賦予許可權
源庫檢查使用者資訊
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 '));
目標庫根據上述查詢結果進行建立。
3) 解壓 rman_xttconvert_VER4.zip 到/home/oracle/xtts 目錄
$ cd /home/oracle/xtts
$ unzip rman_xttconvert_VER4.zip
4) 配置xtt.properties 檔案
tablespaces=tbs1,tbs2
platformid=13
src_scratch_location=/home/oracle/xtts/bak
dest_datafile_location=+DATA/ORCL/datafile
dest_scratch_location=/home/oracle/xtts/bak
asm_home=/u01/app/11.2.0/grid
asm_sid=+ASM1
parallel=2
引數說明:
源庫、目標庫建立目錄:
$ mkdir -p /home/oracle/xtts/bak
5) 源端將/home/oracle/xtts 下所有檔案傳給目標端
$ scp -r /home/oracle/xtts/* 172.16.70.170:/home/oracle/xtts/
6) 源端和目標端設定TMPDIR
(oracle 使用者環境變數)
源庫:$export TMPDIR=/home/oracle/xtts
目標庫:$export TMPDIR=/home/oracle/xtts
2. 準備階段
在這個階段,源端表空間資料檔案會備份,備份會傳輸到目標端
1) 源端建立備份
執行以下命令
$ perl xttdriver.pl --backup
這個命令會執行以下動作:
- 建立備份,並放置在 src_scratch_location 目錄中
- 建立 res.txt 檔案,放置在 TMPDIR 中
2) 將第一步產生的檔案傳到目標端
$ scp res.txt 172.16.70.170:/home/oracle/xtts/
$ scp /home/oracle/xtts/bak/* 172.16.70.170:/home/oracle/xtts/bak/
注:資料檔案要傳在目標端 dest_scratch_location 目錄中,res.txt 要傳在目標端 TMPDIR 中。
3) 目標端還原資料檔案
執行以下命令
$ perl xttdriver.pl --restore
當這一步完成,資料檔案將會被傳輸到目標端 dest_datafile_location 最終位置。
3. 前滾階段
在這個階段中,源庫會建立一個增量備份,傳輸到目標庫。並且會轉換為目標庫位元組格式,並應用於目標庫。這個階段可以執行多次,每一個成功的增量備份所花的時間應該比之前的要少,並且使目標庫的資料與源庫更接近。
1) 源庫建立表空間的增量備份集
源庫執行以下命令
$ perl xttdriver.pl --backup
這個命令會對傳輸的表空間產生一個增量備份集。備份集位於 src_scratch_location 目錄中。
並且會產生兩個檔案:tsbkupmap.txt,incrbackups.txt
2) 傳輸增量備份集到目標端
將上一步驟產生的增量備份集傳輸到目標端 dest_scratch_location 目錄,res.txt 要傳在目標端 TMPDIR 中。
$ scp `cat incrbackups.txt` 172.16.70.170:/home/oracle/xtts/bak/
$ scp res.txt 172.16.70.170:/home/oracle/xtts/
3) 目標端執行以下命令
$ perl xttdriver.pl --restore
目標端給表空間資料檔案應用增量備份。
4) 重複前滾階段(可選)
如果你需要使目標庫更接近源庫,則需要重複進行前滾階段;如果目標庫已經足夠接近源庫,那就直接進行傳輸階段。
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 - -backup
注;由於表空間設定為read only ,執行備份會警告:
####################################################################
Warning:
------
Warnings found in executing /home/oracle/xtts/backup_Jul28_Tue_14_33_57_440//xttpreparenextiter.sql
####################################################################
Prepare newscn for Tablespaces: 'TBS2'
DECLARE*
ERROR at line 1:
ORA-20001: TABLESPACE(S) IS READONLY OR,
OFFLINE JUST CONVERT, COPY
ORA-06512: at line 284
3) 傳輸至目標端
$ scp `cat incrbackups.txt` 172.16.70.170:/home/oracle/xtts/bak/
$ scp res.txt 172.16.70.170:/home/oracle/xtts/
4) 目標端最後一次應用
$ perl xttdriver.pl --restore
5) 源庫匯出後設資料
SQL> create directory xtts _dir as '/home/oracle/xtts /bak ';
$ expdp system/oracle dumpfile= x tts.dmp directory=xtts _dir logfile=expdp_xtts.log transport_tablespaces=tbs1,tbs2 exclude=statistics;
匯出其他物件
$ expdp system/oracle directory=xtts _dir dumpfile=expdp_other_mets.dmp logfile=expdp_other_meta.log content=metadata_only schemas=tbs1,tbs2
6) 將匯出的dmp 檔案傳輸到目標端同目錄
$ scp * .dmp 172.16.70.170:/home/oracle/xtts/ bak/
7) 目標庫匯入後設資料
SQL> create directory xtts _dir as '/home/oracle/xtts /bak ';
$ impdp system/oracle dumpfile= x tts.dmp directory=xtts _dir transport_tablespace=y datafiles='+DATA/orcl/datafile/tbs1_5.dbf','+DATA/orcl/datafile/tbs2_6.dbf';
匯入其他物件後設資料
$ impdp system/oracle dumpfile=expdp_other_mets.dmp directory=xtts _dir ;
8) 目標庫設定表空間read write ;
SQL> select tablespace_name,file_name from dba_data_files;
SQL> alter tablespace tbs1 read write;
SQL> alter tablespace tbs2 read write;
9) 目標庫統計資訊手工收集
SQL> exec dbms_stats.gather_schema_stats(ownname => ' tbs1 ',options => 'GATHER AUTO');
SQL> exec dbms_stats.gather_schema_stats(ownname => ' tbs2 ',options => 'GATHER AUTO');
10) 檢查物理和邏輯塊損壞,並驗證資料
RMAN> validate tablespace tbs1,tbs2 check logical;
驗證資料略
-------- end --------
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31529886/viewspace-2707663/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【資料遷移】XTTS跨平臺傳輸表空間(1.傳統方式)TTS
- 用傳輸表空間跨平臺遷移資料
- 【資料遷移】XTTS跨平臺傳輸表空間v3(3.DFT方式)TTS
- 【資料遷移】XTTS跨平臺傳輸表空間v3(2.RMAN增量)TTS
- 【XTTS】Oracle傳輸表空間xtts增量方式TTSOracle
- 【XTTS】使用XTTS傳輸表空間將Oracle11.2.0.4資料遷移至Oracle19CTTSOracle
- 【XTTS】Oracle11g 使用XTTS增量跨平臺傳輸減少停機時間TTSOracle
- 【MOS】如何利用RMAN可傳輸表空間遷移資料庫到不同位元組序的平臺(文件 ID 1983639.1)資料庫
- Oracle資料庫遷移 - 異構傳輸表空間TTS HP-UX遷移至Redhat Linux 7.7Oracle資料庫TTSRedhatLinux
- MySQL 傳輸表空間MySql
- table/index/LOBINDEX遷移表空間Index
- mysql之 表空間傳輸MySql
- MySQL 遷移表空間,備份單表MySql
- Oraclc 12C使用不一致備份執行跨平臺傳輸表空間
- 12c – 使用跨平臺增量備份來減少傳輸表空間的停機時間 (文件 ID 2102859.1)
- 12c – 使用跨平臺增量備份來減少傳輸表空間的停機時間 (Doc ID 2102859.1)
- Oracle中表空間、表、索引的遷移Oracle索引
- 達夢資料庫系統表空間資料檔案遷移過程資料庫
- xtts遷移實踐TTS
- 達夢(DM)資料庫的表空間建立和遷移維護資料庫
- Oracle 12cbigfile表空間物件遷移Oracle物件
- 超大資料量遷移方案,XTTS vs OGG大資料TTS
- oracle xtts遷移 AIX to LinuxOracleTTSAILinux
- 使用 Velero 跨雲平臺遷移叢集資源到 TKE
- mysql共享表空間擴容,收縮,遷移MySql
- 上雲遷移還怕傳輸慢、開機久、停機長?深信服SCMT遷移平臺這樣節省時間!
- impala 資料表在叢集間遷移方案
- elasticsearch跨叢集資料遷移Elasticsearch
- 【XTTS】Oracle XTTS V4--Oracle11.2.0.4+ 遷移升級TTSOracle
- GBASE助力山東移動大資料平臺PB級資料主倉業務跨機房無感知遷移大資料
- 12c跨平臺完成PDB的備份遷移
- RMAN備份恢復典型案例——跨平臺遷移pdb
- oracle 表移動表空間Oracle
- Oracle表移動表空間Oracle
- SecureFX for Mac(跨平臺檔案傳輸客戶端)Mac客戶端
- MySQL傳輸表空間的簡單使用方法MySql
- 資料遷移(1)——通過資料泵表結構批量遷移
- 資料實時傳輸平臺(CDC)與低程式碼平臺(APAAS)資料整合