RMAN和EXP/IMP轉移數據的實測比較
2024-07-21 02:34:13
供稿:網友
由于工程需要經常將客戶的現場數據導出到公司的開發環境中,隨著客戶現場數據量的不斷增大,原先使用的導出導入的方法需要花費越來越長的時間,所以測試一下RMAN的效率,驗證是否能用恢復RMAN備份的方法來代替以往的EXP/IMP方法。 原本想過用傳輸表空間的方法,但是由于我們通常在創建數據庫的時候就給業務所用的表空間創建了很大的數據文件,這樣在傳輸表空間的copy數據文件的步驟上會花費很長的時間,所以還是決定測試一下RMAN了。
測試目的:
實現對于JHJKREC用戶的數據轉移。在10.101.48.71機器上測試。
測試環境:
P42.8G單CPU,1G內存,80G單硬盤,windows 2000 Server,Oracle817跟JHJK用戶相關的數據文件的總共大小為:21.4G 其中JHJKREC用戶的對象總共大小為:2.1G
1。RMAN作full備份,用時20分鐘,生成文件大小5.47GEXP作JHJKREC用戶數據導出,用時2分20秒,生成文件大小546M
2。RMAN作數據恢復,用時23分鐘(包括restore數據文件,recover數據庫)IMP作JHJKREC用戶數據導入,用時55分鐘
3。RMAN備份在非歸檔模式下需要關閉數據庫然后啟動數據庫到mount狀態EXP在非歸檔模式下不需要關閉數據庫,但是數據表本身是不一致的
結論:
利用RMAN備份的時間明顯長于EXP的時間,備份出的文件也遠大于EXP出的文件但是恢復的時間卻要少于IMP所需要的時間。利用RMAN恢復,還需要備份控制文件,而且由于是非歸檔模式,還需要檢查當前能夠恢復到的最大SCN,然后在SQLPLUS中ecover database until change scn,然后再alter database open resetlogs,整個操作比EXP/IMP繁瑣,對于現場業務人員來說可能較為困難,所以使用RMAN還是使用導出導入作數據轉移,還是見仁見智吧。
以下為測試中RMAN和導出導入使用的命令,基本上沒有作任何優化。
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的恢復腳本:
@@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