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