資料庫遷移的幾個方式

victorymoshui發表於2011-05-02
我們常常需要對資料進行遷移,遷移到更加高階的主機上、遷移到遠端的機房上、遷移到不同的平臺下……

  一、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.停第三方的歸檔備份,如legato或dp

  2.backup資料庫:

  run{
  allocatechannelt1typedisk;
  backupfullformat'$DIR_BAK/UNDOTBS1_2_%d_%s_%p.bak'datafile2;
  ……
  releasechannelt1;
  }

  3.備份控制檔案alter database backup controlfile to '/tmp/mydb.ctl';併到新資料庫用rman恢復:restore controlfile from '/arch/sd168.ctl';

  4.restore備份檔案:

  run{
  allocatechannelt1typedisk;
  restoredatafile2;
  releasechannelt1;
  }

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

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

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

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

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

相關文章