数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

利用RMAN转移数据和EXP/IMP转移的实测比较


发布日期:2023年01月13日
 
利用RMAN转移数据和EXP/IMP转移的实测比较

由于工程需要经常将客户的现场数据导出到公司的开发环境中随着客户现场数据量的不断增大原先使用的导出导入的方法需要花费越来越长的时间所以测试一下RMAN的效率验证是否能用恢复RMAN备份的方法来代替以往的EXP/IMP方法原本想过用传输表空间的方法但是由于我们通常在创建数据库的时候就给业务所用的表空间创建了很大的数据文件这样在传输表空间的copy数据文件的步骤上会花费很长的时间所以还是决定测试一下RMAN了

测试目的

实现对于JHJKREC用户的数据转移

机器上测试

测试环境

PG单CPUG内存G单硬盘Windows ServerOracle

跟JHJK用户相关的数据文件的总共大小为G

其中JHJKREC用户的对象总共大小为G

RMAN作full备份用时分钟生成文件大小G EXP作JHJKREC用户数据导出用时生成文件大小M

RMAN作数据恢复用时分钟(包括restore数据文件recover数据库)

IMP作JHJKREC用户数据导入用时分钟

RMAN备份在非归档模式下需要关闭数据库然后启动数据库到mount状态EXP在非归档模式下不需要关闭数据库但是数据表本身是不一致的

结论

利用RMAN备份的时间明显长于EXP的时间备份出的文件也远大于EXP出的文件但是恢复的时间却要少于IMP所需要的时间

利用RMAN恢复还需要备份控制文件而且由于是非归档模式还需要检查当前能够恢复到的最大SCN然后在SQLPLUS中recover database until change scn然后再alter database open resetlogs整个操作比EXP/IMP繁琐对于现场业务人员来说可能较为困难所以使用RMAN还是使用导出导入作数据转移还是见仁见智吧

以下为测试中RMAN和导出导入使用的命令基本上没有作任何优化

RMAN的备份脚本

@@connectrcv

# Backup up database at full level

#

shutdown immediate;

startup mount;

run{

allocate channel d type disk;

set limit channel d kbytes ;

backup full database

format E:\rman_bak\dbfull_%d_%s_%p_%t

tag=dbfull;

release channel d;

}

alter database open;

exit;

RMAN的恢复脚本

@@connectrcv

shutdown immediate;

startup mount;

run {

sql alter session set nls_date_language=AMERICAN;

sql alter session set nls_date_format=yyyymmdd hh:mi:ss;

set until time ::;

allocate channel ch type disk;

restore database;

release channel ch;

}

exit;

EXP的脚本

userid=jhjkrec/jhjkrec

file=e:\rman_bak\jhjkrecdmp

owner=jhjkrec

direct=n

compress=n

feedback=

IMP的脚本

userid=jhjkrec/jhjkrec

file=e:\rman_bak\jhjkrecdmp

ignore=y

fromuser=jhjkrec

touser=jhjkrec

feedback=

上一篇:sun Technical Training NOTE

下一篇:Oracle 有关Linux常见问题的详细解答