天天看點

時過境遷:Oracle跨平台遷移之XTTS方案與實踐

**1

前期準備**

1.1. 檢查資料庫時區,保持兩邊一緻

1.2. 檢查資料庫字元集,保持兩邊一緻

1.3. 檢查目标端更新檔情況

目标端 PSU無特殊需求,可以随情況安裝最新即可。

如果準備階段使用 DBMS_FILE_TRANSFER方法,目标端建議安裝的更新檔如下:

Patch 19023822,修複目标端使用 DBMS_FILE_TRANSFER.GET_FILE包擷取源端資料檔案出現 ORA-03106 的情況。

如果準備階段使用 RMAN 方法,目标端沒有小更新檔安裝需求。

1.4. 檢查元件安裝情況,對于不一樣的元件,需要有所标記

Select comp_name from dba_registry;

源端元件情況

目标段元件情況

備注:元件不同,可能導緻源端的部分對象無法導入到目标端。

1.5. 檢查是否使用了 Key Compression 的索引組織表

索引組織表

如果存在,目标端需要安裝 Patch 14835322,否則索引組織表的對象無法導入到目标端。

目前該更新檔隻在 11.2.0.3 版本下提供,針對其他版本,如果 IOT表或者鍵值壓縮索引無法導入時,建議在中繼資料導入完成後,将該類對象傳輸過去。

**1.6. 檢查源端是否有 Cluster 對象

**

1.7. 檢查 RMAN DEVICE TYPE DISK 是否配置 COMPRESSED

配置壓縮會導緻以上報錯,通過rman > show all; 檢查

1.8. SYS、SYSTEM 使用者是否有對象存在于業務表空間

如資料庫使用者 SYS、SYSTEM 在業務表空間上建立有對象,則這些對象不能通過 XTTS 遷移,需要在目标庫手工建立。

1.9. 檢查表空間自包含

在傳輸階段可能因為目标端資料檔案目錄所限制,需要将各個表空間拆分進行傳送,在導入中繼資料階段,考慮到字包含特性,需要将所有的表空間彙總進行傳送。

檢查表空間時,隻檢查業務表空間的自包含情況;系統表空間,臨時表空間,undo 表空間不在檢查列。

exec dbms_tts.transport_set_check('将所有需要傳輸的表空間名寫在這裡用逗号隔開' ,TRUE,True);

1.10. 檢查源端 Compatible 參數

source 端不可以是 windows P7,source 端的 COMPATIBLE.RDBMS 必須大于 10.2.0,且不大于目标端 COMPATIBLE.RDBMS

如果目标端資料庫版本是 11.2.0.3 或更低。那麼需要在目标端裝 11.2.0.4 并建立執行個體,然後用來進行備份集轉換。如果 11.2.0.4 中轉執行個體使用 ASM。那麼 ASM 版本也必須是 11.2.0.4,否則報錯 ORA-15295。

1.11. 如果啟用 Block Change Tracking 功能

該功能在源端資料量較大或者資料改變較大時啟用,需要在源端安裝更新檔 Bug 16850197。

該更新檔在以下版本 PSU中提供

2.0.3.9

2.0.4

如果源庫是在上述版本前,需要安裝個别更新檔。

1.12. 檢查目标端的 DB_FILES 參數

在中繼資料導入階段,如果目标端的 DB_FILES 參數小于源端的 DB_FILES 參數,會導緻中繼資料導入出錯,是以要確定目标端參數比源端大于或者等于。

1.13. 确認生産庫的 recycle in 功能是關閉,并手工清空資源回收筒

1.14. 資料檔案狀态檢查

正常傳回應為:ONLINE、SYSTEM。

2

XTTS 操作步驟

遷移步驟大緻如下:

初始化階段,配置參數檔案

開啟塊追蹤特性

準備階段,進行資料全量同步

增量階段,進行資料檔案的增量同步

在停機同步前,在目标端建立 Owner 使用者,臨時表

傳輸階段,最後一次增量同步,并導入中繼資料

将原庫中的其餘使用者導入到目标端中

校驗資料檔案,檢查有無壞塊

3

RMAN 方式

注意:

使用 RMAN方式有一個嚴重的限制:同一批次的表空間傳輸到目标端後,都在同一個目錄下,即目标端的最終存放資料檔案的目錄大小要足夠存放一個批次中所有的表空間資料檔案。

源端和目标端需要挂載存儲用于存放所有資料檔案的鏡像檔案,建議使用 NFS 的方式将存儲遠端從源端挂載到目标端,減少備份傳送時間。

**3.1. 初始化階段,配置參數檔案

**3.1.1. 建立 Dest 端到 Source 端的 DBLINK

該步驟創立的 DBLINK用于在傳輸階段的中繼資料導入時使用

create public database link ttslink connect to systemidentified by password using 'ttslink';

來了

3.1.2. Source 端和 Dest 端建立目錄用于存放 XTTS腳本

3.2. 開啟塊追蹤特性

按照文檔所示,開啟這個特性後,使用 XTTS會觸發 BUG16850197,需要安裝個别更新檔,但是目前該更新檔隻在 11.2.0.3.8 上有提供。

經過測試,其餘版本沒有觸發 bug。

RAC 環境下,需要将塊追蹤檔案存放在共享存儲上,否則會導緻 DFS LOCKHANDLE,導緻執行個體異常。

3.3. 準備階段,進行資料全量同步

3.3.1. 修改參數

源端平台 ID 查詢

附錄解釋:

3.3.2. 将 XTTS目錄 Copy 傳送到目标端

scp -r /home/oracle/xtt2 sprac2:/home/oracle

3.3.3. 設定 TMPDIR

3.3.4. 源端 Prepare

perl /home/oracle/xtt2/xttdriver.pl -p

初始化之後産生 xttplan.txt rmanconvert.cmd

xttplan.txt 記錄了目前 SCN,也就是下次需要增量的開始 SCN

rmanconvert.cmd 記錄了檔案轉換的名字

3.3.5. 源端生成的資料檔案 Copy 到目标端

**3.3.6. 轉換資料檔案 Copy 的 Endian 模式

轉換成功之後會生成 xttnewdatafiles.txt

整個過程,存放在 stageondest 的 copy,将會轉換寫入到 storageondest 參數設定的最終存放點。轉換完成後,copy 就可以删除了。

**3.4. 增量階段,進行資料檔案的增量同步

3.4.1. 源端建立增量備份

第一次增量備份之後産生的配置檔案為 tsbkupmap.txt incrbackups.txt,這兩個為增量與資料檔案對應關系配置,在做增量恢複時候需要用到。增量備份檔案放在了backupformat 指定位置。

**3.4.2. 傳輸增量備份到目标端

3.4.3. 目标端應用增量備份

3.4.4. 源端為之後的增量備份确定新的 SCN

該步驟會将 -i 時生成的 xttplan.txt.new 改名為 xttplan.txt,并将原來的 xttplan.txt 備份。

3.4.5. 重複前滾操作

重複操作步驟 3.4.1 - 3.4.4,恢複增量資料。

**3.5. 停機同步前,在目标端建立 Owner 使用者

**3.5.1. 建立臨時表空間

依照原庫上的臨時表空間大小,在目标端建立同名臨時表空間。

3.5.2. 建立 Owner 使用者

在源端執行下列語句

将生成的語句,在目标端執行,建立使用者。

**3.6. 傳輸階段,最後一次增量同步,并導入中繼資料

3.6.1. 将原庫表空間置為隻讀狀态

3.6.2. 開始最後做增量備份

重複步驟 3.4.1 - 3.4.3,做最後的增量恢複。

3.6.3. 自定義 Role 處理

3.6.4. 自定義 Profile 處理

3.6.5. 臨時表處理

**---建立臨時表

@temp_table.sql

源端生産庫采集腳本,目标端執行

set long 1000000

SET PAGESIZE 3000

set lines 200

SET HEADING OFF

SET VERIFY OFF

SET FEEDBACK OFF

set echo on

set timing off

set wrap On

SET LONGCHUNKSIZE 400

select dbms_metadata.get_ddl('TABLE',TABLE_NAME,OWNER)

from DBA_TABLES

where TEMPORARY='Y' and owner in ();**

**3.6.6. 目标端導入中繼資料

3.6.6.1. 一次中繼資料導入

這個步驟會産生一個導入樣本腳本 xttplugin.txt,需要修改如下:

在一次中繼資料導入階段,不能開啟并行,統計資訊導入階段,可以将會話殺除終止

将統計資訊排除,後面開啟并行收集統計資訊。

3.6.6.2. 二次中繼資料導入

将第一次沒有導入的過程,視圖,包,觸發器導入。

3.6.6.3. 重新在目标端搜集統計資訊

**3.7. 将原庫中的其餘使用者導入到目标端中,權限處理

使用如下腳本重新賦權

3.8. 校驗資料檔案,檢查有無壞塊

RMAN> validate tablespace xtts check logical;

3.9. 編譯無效對象,進行資料對比。

原文釋出時間為:2018-02-25

本文作者:謝金融