閱讀50 返回首頁    go 魔獸


我們都被騙了,所有的跨平台遷移都可以通過XTTS實現

自從2015年初進行了xtts增量的U2L遷移測試之後,國內很多人都開始利用這種方案進行數據庫跨平台遷移了,基本上都是利用Oracle 封裝的perl腳本。其中Oracle MOS文檔 11G – Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (文檔 ID 1389592.1) 明確提到目標端環境必須是Linux,

這裏該文檔中的一段原話:

The source system may be any platform provided the prerequisites referenced and listed below for both platform and database are met. The destination system must be Linux, either 64-bit Oracle Linux or RedHat Linux, as long as it is a certified version. The typical use case is expected to be migrating data from a big endian platform, such as IBM AIX, HP-UX, or Solaris SPARC, to 64-bit Oracle Linux, such as Oracle Exadata Database Machine running Oracle Linux.


其實這裏很容易讓人產生誤解,這裏Oracle並非說不支持其他平台,而是說Oracle 提供的封裝perl腳本不支持而已。但是手工進行xtts操作,完全是ok的;經過我的測試也是可行,這裏是測試從Hp IA到Solaris Sparc的xtts增量遷移方式,供參考。


1、首先在原端創建測試表空間和測試表.

-創建測試表空間

create tablespace xtts datafile ‘+data’ size 100m;

create table test0504 as select * from dba_objects where 1=2;

alter table test504 move tablespace xtts;

2、備份xtts表空間文件,並傳輸到目標端(Solaris)

3、目標端進行文件格式轉換

convert from platform ‘HP-UX IA (64-bit)’ datafile  ’/tmp/xtts.dbf’ format ‘+DATA/test/datafile/xtts_new.dbf’;

4、原端進行基於SCN的增量備份(這裏由於我是測試表空間,所以未啟用Block track  changing)

640?wx_fmt=png&wxfrom=5&wx_lazy=1


5、創建備份集傳到目標端並進行備份集格式手工轉換(Solaris)

將腳本保存為xtts_conv1.sql並執行,如下是腳本內容:

640?wx_fmt=png&wxfrom=5&wx_lazy=1


執行結果如下:

SQL> start xtts_conv1.sql;

PL/SQL procedure successfully completed.


6、進行第一次增量應用(Solaris)

說明:為了驗證增量數據是否能夠同步到目標端,在進行增量備份之前,


我這裏先進行了:

SQL > insert into test0504 select * fro dba_objects where rownm < 101;

SQL> commit;


將如下腳本保存為apply_incr1.sql,並執行:

640?wx_fmt=png&wxfrom=5&wx_lazy=1


執行結果如下:

640?wx_fmt=png&wxfrom=5&wx_lazy=1

7、將原端表空間設置為隻讀模式

SQL> alter tablespace xtts  read only ;


8、進行最後一次增量備份。

640?wx_fmt=png&wxfrom=5&wx_lazy=1


9、將備份集傳輸到目標端並進行轉換。步驟略(同上)


10、最後一次應用增量備份。步驟略(同上)


11、源端導出元數據

將下列內容保存為exp_xtts.par:

640?wx_fmt=png&wxfrom=5&wx_lazy=1


執行如下命令導出xtts表空間上的元數據信息:

640?wx_fmt=png&wxfrom=5&wx_lazy=1


12、目標端導入元數據

將下列內容保存為imp_xtts.par:

640?wx_fmt=png&wxfrom=5&wx_lazy=1


執行如下命令導入元數據。

640?wx_fmt=png&wxfrom=5&wx_lazy=1


13、檢查數據

640?wx_fmt=png&wxfrom=5&wx_lazy=1


我們可以看出,xtts表空間已經被遷移過來了,並且增量的數據也已經同步了。

所以我想表達的是,所有的跨平台遷移,其實都可以利用XTTS Incremental Backup 功能進行遷移,無論目標端是什麼平台。當然,如果字節序相同的情況下,可以直接使用convert database 功能。


補充:

在進行增量應用時,可能會出現如下錯誤:

640?wx_fmt=png&wxfrom=5&wx_lazy=1


如果遇到這個錯誤,那麼隻需要將實例停掉,啟動到nomount狀態下執行腳本即可。


本文出自數據和雲公眾號,原文鏈接


最後更新:2017-07-17 16:44:37

  上一篇:go  H5自助建站係統企業建站更輕鬆
  下一篇:go  科大訊飛陶曉東:AI算法如何實現將信息和影像結合產生診斷結果?