多套Oracle 10g整合遷移到11g的方案
在數據遷移中,除了跨平台,全量,增量數據遷移之外,還有一類會把已有的難度升級,那就是整合式遷移,比如原來有兩個數據,遷移後是一個,類似這樣的需求,如果再加上平滑升級資料庫版本,那就值得我們好好想想方案了。
如果兩個源庫不大,其實直接使用Datapump不失為一種方法,最大的優點就是操作簡單,可控性強,而瓶頸也很明顯,隨著數據量的增長,這個遷移時長就會線性增長,從邏輯遷移的角度來看,對於版本升級的依賴性不高。
而如果兩個源庫都很大,比如都是5T這樣的級別,整合起來就是10T,這樣的量級,給你一個小時搞定,而且還要做資料庫的平滑升級,難度就相當大了。
我們來簡單理一下時間主要都花在哪裡了。
1.數據導出,我們還需要額外配置的磁碟空間和存儲,基本是200%以上的冗餘空間才可以,我們拍腦袋給個時間,比如30分鐘。
2.數據dump傳輸到目標庫,這個時間依賴於幾個點,比如源庫的網路鏈路配置,帶寬上限等。假設這些都不是問題,還是拍腦袋,至少得60分鐘
3.如果按照預想的計划到了這一步,數據遷移的工作還沒正式開始,時間就用完了。我們硬著頭皮繼續,數據導入,按照目前做PCIE-SSD POC的數據,5T按照最理想的情況,非歸檔導入至少得500分鐘
所以上面的方案就註定了是一個失敗的遷移案例,但是我們可以從中優化出很多東西,直到滿足我們的需求為止。
我們拋開上面的方案來,簡單回憶一下,資料庫遷移的本質,資料庫升級的本質,首先數據可以大體分為系統表空間數據(system,sysaux,undo),應用數據(表數據,索引等),只是表現形式會是表空間,數據文件,如果跨平台,我們考慮的數據的邏輯一致性,而如果不跨平台,考慮的是儘可能按照物理一致性來考量。在整合式遷移中,物理一致性就很難實現,但是我們可以最大程度的實現。
然後是資料庫升級的本質,本質上資料庫升級就是數據字典升級,對於數據文件來說,簡單來說,可以認為沒有差別。
所以資料庫從低版本升級到高版本,比如10g到11g,數據文件本質上是不變的,那麼變化的是數據字典,我們就可以取長補短。我們只關注數據字典的這部分,遷移的時候就會有很明確的方向。
那麼上面失敗的案例如何優化呢。我們可以極大的減少導出的時間,減少數據dump傳輸的時間,說得更加自信一些,我們能不能不導出數據,不傳輸dump。答案顯然是可以的,那就是充分利用Data Guard。
這樣前期的工作在正式遷移前都已經就位了,升級的過程中我們需要做得事情就是關注於數據字典的升級,而遷移的部分怎麼來做呢,就是通過傳輸表空間的方式來實現。
假設我們要遷移的資料庫是peak,extradb,我們計劃整合後的資料庫為peak,那麼在伺服器上應該會有下面的實例,很明顯有兩個名為peak的資料庫,因為ORACLE_HOME的不同,所以不會衝突。
按照目標庫最終的結果,我們的oradata下的目錄結果大體如下:
peak是最終的數據文件,extradb和peak的數據文件統統在peak目錄下面,而extradb的系統表空間在extradb目錄下,源庫peak的數據字典在peak_old下。
如果要遷移數據文件,在備庫上操作很簡單,可以參考如下的動態SQL.
select alter database rename file chr(39)namechr(39) to chr(39)replace(name, /extradb/ , /peak/ ) chr(39) ; from v$datafile;
這個時候peak目錄下的文件就像參加一個聚會一樣,大家都坐在一起,但是彼此之間還缺少聯繫,還沒有連接起來。
遷移前,需要做一個基本的檢查,當然這個工作是提前要做好的。到時候至少驗證一下即可。
然後查看
是否有衝突的信息
遷移的時候,把表空間置為read only狀態,可以使用如下的動態SQL來生成批量的遷移腳本。
導出數據字典的信息:
這個dump其實很小,而且導入的過程時間也很短。
接下來的工作就很瑣碎了,就是初始化基本的用戶信息,準備導入數據字典的信息,這裡需要提到一點的是users表空間的部分,這個表空間整合肯定會衝突,所以如果條件允許,我們可以給表空間改一下名字,避免衝突無法導入。
導入的部分語句如下,這個過程就是最終的映射,其實就跟一次聚會一樣,彼此介紹大家互相認識,產生了連接。
遷移的核心就在此了,行與不行全看這裡了。
而遷移之後,切記需要把表空間置為讀寫狀態,這樣一來大部分的遷移工作就提前準備好了。
如果滿打滿算,準備充分,半個小時搞定全然不成問題。
TAG:楊建榮的學習筆記 |
※macOS 10.15將迎來一波iPad應用大遷移
※是時候丟棄 Python 2.0,將 100 萬行的代碼遷移到Python 3.0了!
※是時候丟棄 Python 2.0,將 100 萬行的代碼遷移到 Python 3.0 了!
※每年1.2億美元,Twitter計劃將全球最大Hadoop集群遷移到谷歌雲
※Docker全面推出支持Windows Server 2008及可遷移版本
※Day041 Transfer Learning 遷移學習
※Kubuntu 18.10 開發重點遷移至ARM與X64平台
※詳解iOS 12.4帶來的全新iPhone遷移功能
※將 30 萬行代碼從 Flow 遷移到 TypeScript 是一種怎樣的體驗?
※iOS11.3正式版推出時間曝光#iCloud中國99.9%同意遷移
※空客宣布從Office轉投谷歌G Suite 未來18個月內完成13萬員工遷移
※iOS 12.4 正式推送:新增 iPhone 數據遷移功能
※官方揭秘OpenAI Five打敗人類:遷移學習10個月訓練4.5萬年
※iOS12.4發布正式版,新增iPhone遷移功能
※如約而至 iOS 12.4正式版推送 新增iPhone遷移數據功能
※蘋果發布iOS 12.4 推出全新iPhone遷移功能
※iOS 12.4 正式版來了!蘋果推出全新 iPhone 遷移功能
※GitLab已從Azure遷移至Google Cloud Platform
※蘋果官方教程:iOS 12.4 如何使用iPhone遷移功能
※蘋果ios12.4正式版發布:新增全新iPhone遷移功能