数据库复制方式进行数据库恢复
在我们的测试工作中可能会遇到这样的需求,需要根据目前已经存在的一个运行的orracle数据库来恢复出一个相同的数据库,同时在一些情况下最好这个源数据库不被关掉,提供正常服务,另外整个恢复过程的要求可接受的时间内完成。在这种情况下一些传统备份恢复可能无法实现或者效率太低,因此在这样一种情况下可以考虑使用11g以后新增duplicate命令方式来进行数据库的复制。
使用duplicate方式来复制一个数据主要有如下一些步骤:
1)在需要恢复数据库的机器上新建好数据文件目录,并保证目录空间足够。
2)在需要恢复数据库的机器上创建一个数据库服务,服务名可以和源数据库名相同或者不同(该步骤只在windows平台需要,linux平台可忽略):
Oradim –new –sid duptest (duptest为目标库的服务名)
3)在目标库创建密码文件:
Orapwd file=” D:\oracle\product\11.2.0\dbhome_1\database\pwdduptest.ora” password = oracle entries =10
(注意:duptest和上面的服务名一致;D:\oracle\product\11.2.0\dbhome_1\database为ORACLE_HOME目录)
4)创建目标库的参数文件,可根据源数据库的初始化参数文件来创建,方法如下:
Create pfile from spfile;
在源库中执行以上命令得到init开头的参数文件,进行相应修改后重命名为init+服务名.ora的方式,比如这里重命名文件为INITDUPTEST.ORA,并放置到ORACLE_HOME下的database目录下。
5)启动目标库到nomount状态:
Startup nomount
6)使用rman连接到源库和目标库:
C:\Users\Administrator>rman
RMAN> connect target sys/oracle@test
连接到目标数据库: TEST (DBID=2128587833)
RMAN> connect auxiliary sys/oracle@test
已连接到辅助数据库: TEST (DBID=2128587833)
7)在rman中执行duplicate命令,开始数据库复制,该命令将自动把源数据库中的控制文件数据文件及重做日志文件复制到目标库中:
RMAN> run{
set newname for datafile 1 to 'D:\oracle\oradata\duptest\SYSTEM01.DBF';
set newname for datafile 2 to 'D:\oracle\oradata\duptest\SYSAUX01.DBF';
set newname for datafile 3 to 'D:\oracle\oradata\duptest\UNDOTBS01.DBF';
set newname for datafile 4 to 'D:\oracle\oradata\duptest\USERS01.DBF';
set newname for datafile 1 to 'D:\oracle\oradata\duptest\TEMP01.DBF';
duplicate target database to duptest from active database password file spfil
e nofilenamecheck;
}
在以上命令执行后,如果出现如下内容表示命令执行成功:
内存脚本的内容:
{
Alter clone database open resetlogs;
}
正在执行内存脚本
数据库已打开
完成 Duplicate Db 于 05-11月-13
8)登入到目标库中验证数据库是否可用。
至此一个和源数据库相同的数据库就恢复完成。当然这只是一个比较基本的完整数据库复制过程,同时duplicate方式还可以完成一些特殊的需求,比如根据需要只复制部分表空间的数据等。
通过上面的恢复过程可以看到duplicate实际上是一种RMAN新特性,使用该方式可以在一些特定场景中完美完成数据库复制需求,使用得当可以减少目前数据库恢复时间,提高效率 。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7913676/viewspace-776067/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7913676/viewspace-776067/