SQL Server數(shù)據(jù)庫遷移方法
我們常常需要對數(shù)據(jù)進行遷移,遷移到更加高級的主機上、遷移到遠程的機房上、遷移到不同的平臺下……
一、exp/imp:
這也算是最常用最簡單的方法了,一般是基于應用的owner級做導出導入。
操作方法為:在新庫建立好owner和表空間,停老庫的應用,在老庫做exp user/pwd owner=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.
優(yōu)缺點:優(yōu)點是可以跨平臺使用;缺點是停機時間長,停機時間為從exp到網(wǎng)絡傳輸?shù)叫聨?,再加上imp的時間。
二、存儲遷移:
這種情況下,數(shù)據(jù)文件、控制文件、日志文件、spfile都在存儲上(一般情況下是裸設備),我們可以直接把存儲掛到新機器上,然后在新機器上啟動數(shù)據(jù)庫。
操作方法:將老庫的pfile(因為里面有指向裸設備的spfile鏈接),tnsnames.ora,listener.ora,密碼文件傳到新庫的對應位置。將存儲切至新機,或者用文件拷貝或dd的方式復制數(shù)據(jù)文件,啟動數(shù)據(jù)庫。
優(yōu)缺點:優(yōu)點是該遷移方式非常簡單,主要的工作是主機工程師的工作,dba只需配合即可,停機時間為當庫、切存儲、起庫的時間。缺點是要求新老庫都是同一平臺,是相同的數(shù)據(jù)庫版本。
三、利用data guard遷移:
用dg我們不僅可以用來做容災,物理的dg我們還可以作為遷移的方式。
操作方法:注意switch over之后,可以將dg拆掉,去掉log_archive_dest_2、FAL_SERVER、FAL_CLIENT、standby_file_management參數(shù)。另外還要注意如果用rman做dg,注意手工添加tempfile。
優(yōu)缺點:優(yōu)點是停機時間短,停機時間為switch over的時間。缺點:主機必須雙份、存儲必須雙份。
四、用rman做遷移:
rman比較適合于跨文件系統(tǒng)的遷移,如同平臺下的不同文件系統(tǒng)。
操作方法:
1.停第三方的歸檔備份,如legato或dp
2.backup數(shù)據(jù)庫:
run{ |
3.備份控制文件alter database backup controlfile to '/tmp/mydb.ctl';并到新數(shù)據(jù)庫用rman恢復:restore controlfile from '/arch/sd168.ctl';
4.restore備份文件:
run{ |
5.傳歸檔日志,并且對歸檔進行做recover:recover database until sequence = 歸檔的序號 thread = 1;
6.對數(shù)據(jù)庫open resetlogs:RMAN>sql 'alter database open resetlogs';
7.alter tablespace temp add tempfile 'XXXXXX' size XXM reuse;
優(yōu)缺點:優(yōu)點是可以跨文件系統(tǒng),停機時間少。缺點是要時刻關注這歸檔日志,做recover的時候一個都不能少!
【編輯推薦】