【資料遷移】XTTS跨平臺傳輸表空間v3(3.DFT方式)

恩強Boy發表於2020-07-26

一、  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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章