深入淺出XTTS:Oracle資料庫遷移升級利器
來自專欄 IT大咖說1 人贊了文章
內容來源:2017年3月11日,新炬網路高級工程師楊光在「DBAplus北京資料庫技術沙龍」進行《深入淺出XTTS:Oracle資料庫遷移升級利器》演講分享。IT 大咖說作為獨家視頻合作方,經主辦方和講者審閱授權發布。
閱讀字數:1781 | 4分鐘閱讀
獲取嘉賓演講視頻回放及PPT,請點擊:http://t.cn/EvLMeM3
摘要
通常我們要進行數據遷移,可以使用的方案有很多,比如數據泵、RMAN、GoldenGate,甚至是第三方同步軟體DSG、DDS等。但是對於傳統的遷移方式來說,數據量越大,需要的停機時間越長。增強版的XTTS支持了跨平台增量備份,使用增量備份的方式,可以將前期的數據文件傳輸、數據文件轉換等操作在不中斷業務的下操作。然後通過多次增量備份恢復,使源端和目標端的數據差異降到最小,最後業務停機時間只需要申請增量備份和恢復的時間即可。
XTTS是什麼?
TTS是一種傳輸數據的手段,傳輸表空間,把表空間從一個庫移到另一個庫。但是對於傳統的TTS來說,數據量越大,需要的停機時間越長。因此Oracle提供了一個加強版的XTTS,XTTS可以提供跨平台的增量備份,兩者結合大縮減遷移時所需要停機時間。
適用場景
我們在做數據遷移的時候使用了三種手段。
第一種是數據泵。我們要做數據遷移的時候需要停止應用,數據沒有更新才能保證所有業務表的一致性。在這個情況下使用數據泵進行導出,導出後進行傳輸,最後灌入。這種方式操作起來是最簡單的,它適用的場景是在數據量比較小的情況下。
第二種方式是我們在做一些大型系統時,對它進行遷移的時候往往會使用Goldengate。Goldengate有一個好處就是停用時間很短。它在前期準備的時候做了數據的初始化,然後做數據的同步。在準備階段數據是一直在傳輸的,只有當業務可以停機的時候,才會停止業務,切換到新的庫上。
XTTS和Goldengate的方式比較像,它的前期也是要有一個準備,有數據初始化。後續是做增量的恢復,把初始化之後變更的數據使用增量的備份和恢復把之前的數據補上,到最後割接的時候把最後一次小增量補回來,這樣來保證割接的時間比較短暫。
最短停機時間和最少的數據丟失是每個業務人員的訴求,上圖是前面三種方式的對比。這三種方式都支持跨版本和跨平台,但不同的數據量會導致它們的停機時間不同。Goldengate的停機時間是最短的,因為它一直在不停地傳輸數據;數據泵的停機時間最長,它需要在停止業務之後再開始傳輸數據,其中有備份的時間、傳輸數據文件的時間和恢復的時間。而XTTS的停機時間則是介於Goldengate和數據泵之間。
TTS的基礎操作步驟
A、將源端資料庫表空間設置為READ ONLY模式。
B、傳輸數據文件到目標系統。
C、轉換數據文件為目標系統的位元組序。
D、在源端導出元數據,並在目標端導入。
E、將目標端的資料庫表空間設置為READ WRITE。
XTTS的基礎操作步驟
A、將源端數據文件傳輸到目標系統。
B、轉換數據文件為目標系統的位元組序。
C、在源端創建增量備份,並傳輸到目標端。
D、在目標端恢復增量備份。
E、重複多次操作C和D步驟。
F、將源端資料庫表空間設置為READ ONLY模式。
G、最後一次執行C和D步驟。
H、在源端導出元數據,並在目標端導入。
I、將目標端的資料庫表空間設置為READ WRITE。
XTTS每次恢復都需要重啟?
pfile.ora
*.audit_file_dest=/home/u02/app/oracle/admin/xtt/adump
*.db_name=xtt
*.compatible=11.2.0.4.0
*.db_block_size=16384
*.db_file_multiblock_read_count=64
*.db_files=8000
*.memory_target=21474836480
*.open_cursors=3000
*.processes=8000
*.undo_tablespace=UNDOTBS1
如何加速XTTS
我們要考慮的是如何把最後增量的備份和恢復可控時間縮短到3個小時之內。
在停止業務的這段時間,要做的是表空間只讀、增量備份恢復、元數據導入,最後是數據校驗。表空間只讀和數據校驗的時間是固定的,關鍵的時間點是增量備份恢復和元數據的導入時間。
增量備份提速6小時→小時
alterdatabase enable block change tracking using file/oradata/Oracle_change.trace;
selectstatus, filename fromv$block_change_tracking;
incrementalbackup的目的是只備份那些自上次備份以來發生過改變的block。然而,即使只有一小部分發生改變,incremental backup也要讀取完整的數據文件。block change tracking功能解決了這個問題。它使用change tracking writer(CTWR)後台進程,在change tracking file文件中,記錄所有資料庫中變化的物理位置。啟動block change tracking功能後,level 0級的incremental backup依然要掃描整個數據文件,因為change tracking file還沒有映射到block的狀態。對於後續級別的incremental backups,RMAN使用change tracking data決定哪些需要讀取。通過消除對整個數據文件的read,提高了性能。
元數據導入加速
第一次導入
impdpdirectory=DESTDIR1logfile=tts_imp.lognetwork_link=ttslinktransport_full_check=yestransport_tablespaces=XXX
transport_datafiles=/XXX/xxx.dbf『
exclude=statistics
第二次導入
impdpdirectory=DESTDIR1logfile=tts_imp_2.lognetwork_link=ttslinkschemas=XXX
content=metadata_onlyexclude=index,table,constraintparallel=8
將過程,視圖,包,觸發器,統計信息導入,開啟並行。
遷移前的準備
遷移對象統計;
資料庫字符集檢查;
檢查原環境是否存在空段;
失效對象檢查;
基於XMLSchema的XMLType對象檢查;
目標端創建檢查用dblink;
檢查源資料庫和目標庫具有重複名稱的表空間;
檢查是否存在應用用戶建在system,sysaux,users上的情況;
表空間自包含檢查;
比對新舊環境role;
比對新舊環境profile;
在新環境中比對並創建用戶;
生成恢復用戶默認表空間和臨時表空間的腳本;
創建非默認的temp表空間;
生成為應用用戶賦對象許可權腳本;
軟體包上傳。
總結
XTTS支持擴位元組序遷移,操作靈活簡便,停機時間較短。遷移時盡量減少批次,操作越多越容易出錯。
我今天的分享就到這裡,謝謝大家!
推薦閱讀: