利用RMAN轉(zhuǎn)移數(shù)據(jù)和EXP/IMP轉(zhuǎn)移數(shù)據(jù)的實測比較
2024-07-21 02:11:39
供稿:網(wǎng)友
由于工程需要經(jīng)常將客戶的現(xiàn)場數(shù)據(jù)導(dǎo)出到公司的開發(fā)環(huán)境中,隨著客戶現(xiàn)場數(shù)據(jù)量的不斷增大,原先
使用的導(dǎo)出導(dǎo)入的方法需要花費越來越長的時間,所以測試一下rman的效率,驗證是否能用恢復(fù)rman備
份的方法來代替以往的exp/imp方法。原本想過用傳輸表空間的方法,但是由于我們通常在創(chuàng)建數(shù)據(jù)庫的
時候就給業(yè)務(wù)所用的表空間創(chuàng)建了很大的數(shù)據(jù)文件,這樣在傳輸表空間的copy數(shù)據(jù)文件的步驟上會花費
很長的時間,所以還是決定測試一下rman了。
測試目的:
實現(xiàn)對于jhjkrec用戶的數(shù)據(jù)轉(zhuǎn)移。
在10.101.48.71機器上測試。
測試環(huán)境:
p42.8g單cpu,1g內(nèi)存,80g單硬盤,windows 2000 server,oracle817
跟jhjk用戶相關(guān)的數(shù)據(jù)文件的總共大小為:21.4g
其中jhjkrec用戶的對象總共大小為:2.1g
1。rman作full備份,用時20分鐘,生成文件大小5.47g
exp作jhjkrec用戶數(shù)據(jù)導(dǎo)出,用時2分20秒,生成文件大小546m
2。rman作數(shù)據(jù)恢復(fù),用時23分鐘(包括restore數(shù)據(jù)文件,recover數(shù)據(jù)庫)
imp作jhjkrec用戶數(shù)據(jù)導(dǎo)入,用時55分鐘
3。rman備份在非歸檔模式下需要關(guān)閉數(shù)據(jù)庫然后啟動數(shù)據(jù)庫到mount狀態(tài)
exp在非歸檔模式下不需要關(guān)閉數(shù)據(jù)庫,但是數(shù)據(jù)表本身是不一致的
結(jié)論:
利用rman備份的時間明顯長于exp的時間,備份出的文件也遠大于exp出的文件
但是恢復(fù)的時間卻要少于imp所需要的時間。
利用rman恢復(fù),還需要備份控制文件,而且由于是非歸檔模式,還需要檢查當前能夠恢復(fù)到的最大scn,然后在sqlplus中recover database until change scn,然后再alter database open resetlogs,整個操作比exp/imp繁瑣,對于現(xiàn)場業(yè)務(wù)人員來說可能較為困難,所以使用rman還是使用導(dǎo)出導(dǎo)入作數(shù)據(jù)轉(zhuǎn)移,還是見仁見智吧。
以下為測試中rman和導(dǎo)出導(dǎo)入使用的命令,基本上沒有作任何優(yōu)化。
rman的備份腳本:
@@connect.rcv
# backup up database at full level
#
shutdown immediate;
startup mount;
run{
allocate channel d1 type disk;
set limit channel d1 kbytes 2097150;
backup full database
format 'e:/rman_bak/dbfull_%d_%s_%p_%t'
tag='dbfull';
release channel d1;
}
alter database open;
exit;
rman的恢復(fù)腳本:
@@connect.rcv
shutdown immediate;
startup mount;
run {
sql "alter session set nls_date_language=american";
sql "alter session set nls_date_format=''yyyy-mm-dd hh24:mi:ss''";
set until time '2004-9-7 15:30:00';
allocate channel ch1 type disk;
restore database;
release channel ch1;
}
exit;
exp的腳本:
userid=jhjkrec/jhjkrec
file=e:/rman_bak/jhjkrec.dmp
owner=jhjkrec
direct=n
compress=n
feedback=1000
imp的腳本:
userid=jhjkrec/jhjkrec
file=e:/rman_bak/jhjkrec.dmp
ignore=y
fromuser=jhjkrec
touser=jhjkrec
feedback=1000