【資料遷移】XTTS跨平臺傳輸表空間v3(2.RMAN增量)
一、 XTTS 概述
XTTS ( Cross-Platform transport tablespace )意為跨平臺傳輸表空間。 XTTS 實際上是 TTS 的增強功能。 TTS 意為傳輸表空間,原理是將業務表空間從一個庫傳到另一個庫,以達到資料遷移的目的。 XTTS 則可以支援跨平臺位元組格式、增量進行傳輸。(跨平臺傳輸表空間僅支援 oracle 11g 或以上)
XTTS 有三種方式:傳統方式、 RMAN 增量方式、 DFT 方式( DBMS_FILE_TRANSFER )。本文演示為 RMAN 增量方式。
二、 規劃
源庫使用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. 初始化設定階段
- 目標端安裝資料庫軟體並建立資料庫
- 源庫表空間自包含檢查
- 目標庫建立使用者,賦予許可權
- 源端上傳 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 user TBS1 identified by oracle;
SQL> grant RESOURCE to TBS1;
SQL> grant CONNECT to TBS1;
5) 源端新建目錄/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
6) 編輯xtt.properties 檔案(重要!)
按照下面內容進行修改:
tablespaces= TBS1,TBS2
platformid=13
dfcopydir=/home/oracle/xtts/bak
backupformat=/home/oracle/xtts/bakincr
stageondest=/home/oracle/xtts/bak
storageondest=+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
desttmpdir=/home/oracle/xtts
引數說明:
源端建立目錄:
$ mkdir -p /home/oracle/xtts/bakincr
$ mkdir -p /home/oracle/xtts/bak
目標端建立目錄
$ mkdir -p /home/oracle/xtts/bak
7) 源端和目標端設定TMPDIR
(oracle 使用者環境變數)
源庫:$export TMPDIR=/home/oracle/xtts
目標庫:$export TMPDIR=/home/oracle/xtts
8) 源端將/home/oracle/xtts 下所有檔案傳給目標端
$ scp /home/oracle/xtts/* 172.16.70.170:/home/oracle/xtts/
2. 準備階段
在這個階段,源端傳輸的表空間資料檔案副本會被建立和轉換位元組格式。並且這些檔案會被傳輸到目標資料庫。這個階段只執行一次即可。
1) 源端執行下面命令
$ perl xttdriver.pl -p
這個命令會產生以下結果:
(注:下述目錄都寫在xtt.properties 配置檔案中)
建立表空間資料檔案副本到 dfcopydir 目錄下;
確認表空間處於online 模式, read write ;並且不包含離線資料檔案;
新建以下兩個檔案:xttplan.txt,rmanconvert.cmd
2) 傳輸資料檔案副本到目標端
將上一步生成的資料檔案副本傳輸到目標端,資料檔案副本位於 dfcopydir 目錄下。在目標端資料檔案必須存放在 stageondest 目錄下。
$ scp * 172.16.70.170:/home/oracle/xtts/bak/
3) 目標端轉換資料檔案副本
將源端產生的rmanconvert.cmd 傳輸到目標端 xtts 目錄下
$ scp rmanconvert.cmd 172.16.70.170:/home/oracle/xtts/
目標端執行以下命令
$ perl xttdriver.pl -c
這個命令會將 stageondest 目錄下的資料檔案轉換成目標端位元組格式。這些檔案轉換後會被寫在 storageondest 目錄下。這個命令執行完畢後, stageondest 這裡面的資料檔案就沒用了,可以選擇刪除。
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) 源庫匯出後設資料
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
5) 將匯出的dmp 檔案傳輸到目標端同目錄
$ scp * .dmp 172.16.70.170:/home/oracle/xtts/ bak/
6) 目標庫匯入後設資料
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 ;
7) 目標庫設定表空間read write ;
SQL> select tablespace_name,file_name from dba_data_files;
SQL> alter tablespace tbs1 read write;
SQL> alter tablespace tbs2 read write;
8) 目標庫統計資訊手工收集
SQL> exec dbms_stats.gather_schema_stats(ownname => ' tbs1 ',options => 'GATHER AUTO');
SQL> exec dbms_stats.gather_schema_stats(ownname => ' tbs2 ',options => 'GATHER AUTO');
9) 檢查物理和邏輯塊損壞,並驗證資料
RMAN> validate tablespace tbs1,tbs2 check logical;
驗證資料略
--------- end ---------
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31529886/viewspace-2707042/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【資料遷移】XTTS跨平臺傳輸表空間v3(3.DFT方式)TTS
- 【資料遷移】XTTS跨平臺傳輸表空間v4TTS
- 【資料遷移】XTTS跨平臺傳輸表空間(1.傳統方式)TTS
- 用傳輸表空間跨平臺遷移資料
- 【XTTS】Oracle傳輸表空間xtts增量方式TTSOracle
- 【XTTS】Oracle11g 使用XTTS增量跨平臺傳輸減少停機時間TTSOracle
- 【XTTS】使用XTTS傳輸表空間將Oracle11.2.0.4資料遷移至Oracle19CTTSOracle
- 12c – 使用跨平臺增量備份來減少傳輸表空間的停機時間 (Doc ID 2102859.1)
- 12c – 使用跨平臺增量備份來減少傳輸表空間的停機時間 (文件 ID 2102859.1)
- 【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使用不一致備份執行跨平臺傳輸表空間
- Oracle中表空間、表、索引的遷移Oracle索引
- xtts遷移實踐TTS
- 達夢資料庫系統表空間資料檔案遷移過程資料庫
- 達夢(DM)資料庫的表空間建立和遷移維護資料庫
- Oracle 12cbigfile表空間物件遷移Oracle物件
- oracle xtts遷移 AIX to LinuxOracleTTSAILinux
- 超大資料量遷移方案,XTTS vs OGG大資料TTS
- mysql共享表空間擴容,收縮,遷移MySql
- 使用 Velero 跨雲平臺遷移叢集資源到 TKE
- 上雲遷移還怕傳輸慢、開機久、停機長?深信服SCMT遷移平臺這樣節省時間!
- impala 資料表在叢集間遷移方案
- elasticsearch跨叢集資料遷移Elasticsearch
- 【XTTS】Oracle XTTS V4--Oracle11.2.0.4+ 遷移升級TTSOracle
- GBASE助力山東移動大資料平臺PB級資料主倉業務跨機房無感知遷移大資料
- RMAN備份恢復典型案例——跨平臺遷移pdb
- 12c跨平臺完成PDB的備份遷移
- oracle 表移動表空間Oracle
- Oracle表移動表空間Oracle
- MySQL傳輸表空間的簡單使用方法MySql
- 資料遷移(1)——通過資料泵表結構批量遷移
- SecureFX for Mac(跨平臺檔案傳輸客戶端)Mac客戶端
- 資料實時傳輸平臺(CDC)與低程式碼平臺(APAAS)資料整合