資料庫中跨平臺遷移方法介紹

fengzj發表於2009-03-23
一、遷移方法介紹:

  exp/imp:

  這也算是最常用最簡單的方法了,一般是基於應用的owner級做匯出匯入。

  操作方法為:在新庫建立好owner和表空間,停老庫的應用,在老庫做exp user/pwd wner=XXX file=exp_xxx.dmp log=exp_xxx.log buffer=6000000,傳dmp檔案到新庫,在新庫做imp user/pwd fromuser=XXX touser=XXX file=exp_xxx.dmp log=imp_xxx.log ignore=y.

  優缺點:優點是可以跨平臺使用;缺點是停機時間長,停機時間為從exp到網路傳輸到新庫,再加上imp的時間。

  儲存遷移:

  這種情況下,資料檔案、控制檔案、日誌檔案、spfile都在儲存上(一般情況下是裸裝置),我們可以直接把儲存掛到新機器上,然後在新機器上啟動資料庫。

  操作方法:將老庫的pfile(因為裡面有指向裸裝置的spfile連結),tnsnames.ora,listener.ora,密碼檔案傳到新庫的對應位置。將儲存切至新機,或者用檔案拷貝或dd的方式複製資料檔案,啟動資料庫。

  優缺點:優點是該遷移方式非常簡單,主要的工作是主機工程師的工作,dba只需配合即可,停機時間為當庫、切儲存、起庫的時間。缺點是要求新老庫都是同一平臺,是相同的資料庫版本。

  利用data guard遷移:

  用dg我們不僅可以用來做容災,物理的dg我們還可以作為遷移的方式。

  操作方法:可見http://www.oracleblog.cn/study-note/dg-created-by-rman/或者 http://www.oracleblog.cn/study-note/create-dg-by-rman-one-datafile-by-one -datafile/或者其他相關網文。注意switch over之後,可以將dg拆掉,去掉log_archive_dest_2、FAL_SERVER、FAL_CLIENT、 standby_file_management引數。另外還要注意如果用rman做dg,注意手工新增tempfile。

  優缺點:優點是停機時間短,停機時間為switch over的時間。缺點:主機必須雙份、儲存必須雙份。

  用rman做遷移:

  rman比較適合於跨檔案系統的遷移,如同平臺下的不同檔案系統。

  1.傳歸檔日誌,並且對歸檔進行做recover:recover database until sequence = 歸檔的序號 thread = 1;

  2.對資料庫open resetlogs:RMAN>sql 'alter database open resetlogs';

  3.alter tablespace temp add tempfile 'XXXXXX' size XXM reuse;

  優缺點:優點是可以跨檔案系統,停機時間少。缺點是要時刻關注這歸檔日誌,做recover的時候一個都不能少!

二、遷移樣式介紹:

  1、直接對映,原來是什麼就是什麼,原封不動照搬過來,對這樣的規則,如果資料來源欄位和目標欄位長度或精度不符,需要特別注意看是否真的可以直接對映還是需要做一些簡單運算。

  2、欄位運算,資料來源的一個或多個欄位進行數學運算得到的目標欄位,這種規則一般對數值型欄位而言。

  3、參照轉換,在轉換中通常要用資料來源的一個或多個欄位作為Key,去一個關聯陣列中去搜尋特定值,而且應該只能得到唯一值。這個關聯陣列使用Hash演算法實現是比較合適也是最常見的,在整個ETL開始之前,它就裝入記憶體,對效能提高的幫助非常大。

  4、字串處理,從資料來源某個字串欄位中經常可以獲取特定資訊,例如身份證號。而且,經常會有數值型值以字串形式體現。對字串的操作通常 有型別轉換、字串擷取等。但是由於字元型別欄位的隨意性也造成了髒資料的隱患,所以在處理這種規則的時候,一定要加上異常處理。

  5、空值判斷,對於空值的處理是資料倉儲中一個常見問題,是將它作為髒資料還是作為特定一種維成員?這恐怕還要看應用的情況,也是需要進一步探 求的。但是無論怎樣,對於可能有NULL值的欄位,不要採用“直接對映”的規則型別,必須對空值進行判斷,目前我們的建議是將它轉換成特定的值。

  6、日期轉換,在資料倉儲中日期值一般都會有特定的,不同於日期型別值的表示方法,例如使用8位整型20040801表示日期。而在資料來源中,這種欄位基本都是日期型別的,所以對於這樣的規則,需要一些共通函式來處理將日期轉換為8位日期值、6位月份值等。

  7、日期運算,基於日期,我們通常會計算日差、月差、時長等。一般資料庫提供的日期運算函式都是基於日期型的,而在資料倉儲中採用特定型別來表示日期的話,必須有一套自己的日期運算函式集。

  8、聚集運算,對於事實表中的度量欄位,他們通常是通過資料來源一個或多個欄位運用聚集函式得來的,這些聚集函式為SQL標準中,包括sum,count,avg,min,max。

  9、既定取值,這種規則和以上各種型別規則的差別就在於它不依賴於資料來源欄位,對目標欄位取一個固定的或是依賴系統的值。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/219982/viewspace-576438/,如需轉載,請註明出處,否則將追究法律責任。

相關文章