首页 > 数据库 > Oracle > 利用rman恢复来复制数据库
利用rman来实现数据库的复制,其实质是利用备份来恢复一个不存在的数据库
前提是目标系统上有完全一致oracle软件,并且要求数据库名要一致
首先要在源数据库上用rman做完整的备份,至少要有源库的spfile,和整库的备份,控制文件的备份及归档日志的备份
将以上的所以备份copy至目标数据库
在目标数据库上创建pfile,如需要可以修改相关参数
SQL> create pfile='orcl_pfile.ora' from spfile='/u01/spfileorcl.ora'
创建参数文件中所需要的目录
修改完成后利用该pfile创建二进制的参数文件并启动数据库到nomount状态
SQL> creat spfile from pfile='orcl_pfile.ora';
设置ORACLE_SID与源库一致,并rman登入
[oracle@orcl10g ~]$ export ORACLE_SID=orcl
[oracle@orcl10g ~]$ rman target /
设置DBID与源库一致
RMAN> set DBID=1362189063
executing command: SET DBID
注:DBID在源库rman登入时即可找到:
connected to target database: ORCL (DBID=1362189063)
利用备份的控制文件来修复
RMAN> restore controlfile from '/u01/app/orcl_rman_back/controlfile_02-20.bak';
Starting restore at 20-FEB-14
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=159 devtype=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:04
output filename=/u01/app/oracle/oradata/orcl/control01.ctl
output filename=/u01/app/oracle/oradata/orcl/control02.ctl
output filename=/u01/app/oracle/oradata/orcl/control03.ctl
Finished restore at 20-FEB-14
修改数据库到mount状态
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
恢复数据库(也可自己指定备份路径,若两库的备份路径一样,无需指定)
RMAN> restore database;
channel ORA_DISK_1: restored backup piece 1
piece handle=/u01/app/orcl_rman_back/all_backup_02-20_840018591.bak tag=TAG20140220T102951
channel ORA_DISK_1: restore complete, elapsed time: 00:01:16
Finished restore at 20-FEB-14
恢复数据库,由于备份不是一致性备份,会出现错误提示
RMAN> recover database;
Starting recover at 20-FEB-14
using channel ORA_DISK_1
starting media recovery
unable to find archive log
archive log thread=1 sequence=5
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 02/20/2014 11:11:16
RMAN-06054: media recovery requesting unknown log: thread 1 seq 5 lowscn 833280
重做日志打开数据库
RMAN> alter database open resetlogs;
database opened
登入数据库查看数据:
SQL> select count(*) from test;
COUNT(*)
----------
256
数据库复制完成
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29320885/viewspace-1084407/ ,如需转载,请注明出处,否则将追究法律责任。