共計 5141 個字符,預計需要花費 13 分鐘才能閱讀完成。
這篇文章主要介紹“XTTS 跨平臺傳輸表空間實現數據遷移的方法是什么”,在日常操作中,相信很多人在 XTTS 跨平臺傳輸表空間實現數據遷移的方法是什么問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”XTTS 跨平臺傳輸表空間實現數據遷移的方法是什么”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!
一、 XTTS 概述
XTTS(Cross-Platform transport tablespace)意為跨平臺傳輸表空間。XTTS 實際上是 TTS 的增強功能。TTS 意為傳輸表空間,原理是將業(yè)務表空間從一個庫傳到另一個庫,以達到數據遷移的目的。XTTS 則可以支持跨平臺字節(jié)格式、增量進行傳輸(跨平臺傳輸表空間僅支持 oracle 11g 或以上)。
本文采用 xtts v4 版本,并且使用 RMAN 增量備份的方式進行兩庫之間遷移表空間,以實現最少的停機時間。
二、規(guī)劃
源庫使用 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) 創(chuàng)建表空間 0 級備份;
2) 源端傳輸備份文件到目標端;
3) 以目標端字節(jié)格式,還原數據文件到目標端;
2. 前滾階段
1) 源庫創(chuàng)建增量備份;
2) 傳輸增量備份和必要文件到目標端;
3) 目標端轉換增量備份,并應用備份為目標庫數據文件;
4) 重復上述操作,直到準備進行最后的表空間傳輸。
3. 傳輸階段
1) 源庫中表空間設置為 read only;
2) 最后一次執(zhí)行前滾階段;
3) 目標端使用 DataPump 導入元數據對象;
4) 目標庫設置表空間為 read write。
五、 操作步驟 1. 初始化設置階段
1) 目標端安裝數據庫軟件并創(chuàng)建數據庫,要求字符集和國家集與源庫保持一致,并且數據庫軟件版本不小于源庫。
2) 確認目標庫創(chuàng)建相應的用戶,并賦予權限
源庫檢查用戶信息
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
目標庫根據上述查詢結果進行創(chuàng)建。
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
參數說明:
源庫、目標庫創(chuàng)建目錄:
$ 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 用戶環(huán)境變量)
源庫:$export TMPDIR=/home/oracle/xtts
目標庫:$export TMPDIR=/home/oracle/xtts
2. 準備階段
在這個階段,源端表空間數據文件會備份,備份會傳輸到目標端
1) 源端創(chuàng)建備份
執(zhí)行以下命令
$ perl xttdriver.pl –backup
這個命令會執(zhí)行以下動作:
–
創(chuàng)建備份,并放置在 src_scratch_location 目錄中
–
創(chuàng)建 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) 目標端還原數據文件
執(zhí)行以下命令
$ perl xttdriver.pl –restore
當這一步完成,數據文件將會被傳輸到目標端 dest_datafile_location 最終位置。
3. 前滾階段
在這個階段中,源庫會創(chuàng)建一個增量備份,傳輸到目標庫。并且會轉換為目標庫字節(jié)格式,并應用于目標庫。這個階段可以運行多次,每一個成功的增量備份所花的時間應該比之前的要少,并且使目標庫的數據與源庫更接近。
1) 源庫創(chuàng)建表空間的增量備份集
源庫執(zhí)行以下命令
$ 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) 目標端執(zhí)行以下命令
$ perl xttdriver.pl –restore
目標端給表空間數據文件應用增量備份。
4) 重復前滾階段(可選)
如果你需要使目標庫更接近源庫,則需要重復進行前滾階段;如果目標庫已經足夠接近源庫,那就直接進行傳輸階段。
4. 傳輸階段
在傳輸階段,源庫需要被設置為 read only 模式,目標庫會被應用最后一次增量備份。在目標數據文件一致后,將執(zhí)行一次普通的傳輸表空間的步驟,從源庫導出元數據對象并導入目標庫。在此階段結束之前,源庫只能通過 read only 方式訪問數據。
1) 源庫將表空間設置 read only
SQL alter tablespace tbs1 read only;
SQL alter tablespace tbs2 read only;
2) 源庫創(chuàng)建最后一次增量備份集
$ perl xttdriver.pl –backup
注;由于表空間設置為 read only,執(zhí)行備份會警告:
####################################################################
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=xtts.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=xtts.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;
驗證數據略
到此,關于“XTTS 跨平臺傳輸表空間實現數據遷移的方法是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注丸趣 TV 網站,丸趣 TV 小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>