8.测试目标数据库
C:\>set ORACLE_SID=bdup
C:\>sqlplus / as sysdba
SQL> set linesize 1000
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
-------------------------------- -----------------------
bdup OPEN
SQL> select * from v$dbfile;
FILE# NAME
---------- ---------------------------------
1 D:\ORADATA\BDUP\SYSTEM01.DBF
2 D:\ORADATA\BDUP\SYSAUX01.DBF
3 D:\ORADATA\BDUP\UNDOTBS01.DBF
4 D:\ORADATA\BDUP\USERS01.DBF
5 D:\ORADATA\BDUP\EXAMPLE01.DBF
6 D:\ORADATA\BDUP\TBS01.DBF
7 D:\ORADATA\BDUP\UNDOTBS02.DBF
8 D:\ORADATA\BDUP\RMAN_TBS01.DBF
8 rows selected.
9.遇到的错误及解决
RMAN>duplicate database to BDUP FROM ACTIVE DATABASE SPFILE NOFILENAMECHECK;
RMAN-03002: failure of Duplicate Db command
RMAN-05501: aborting duplication of target database
RMAN-03015: error occurred in stored script Memory Script
RMAN-03009: failure of backup command on d1 channel
ORA-17628: Oracle error 19505 returned by remote Oracle server
需要设置DB_FILE_NAME_CONVERT参数,这个参数我在参数文件中已经指定了,所以不需要加SPFILE选项;如果要在RMAN中指定,命令如下
RMAN>run {
duplicate database to BDUP FROM ACTIVE DATABASE SPFILE NOFILENAMECHECK;
spfile
set db_file_name_convert='C:\app\Administrator\oradata\orcl','D:\oradata\bdup'
set log_file_name_convert='C:\app\Administrator\oradata\orcl','D:\oradata\bdup'
set log_archive_dest_1=''
...........都可以设置........
set db_unique_name=bdup;
}
至此,RMAN两种类型的复制数据库方式测试完毕,也可以利用RMAN复制创建standby数据库。
总结:
基于备份的复制,RMAN必须执行基于时间点的恢复,即使没有明确的时间点,因为联机日志文件在源数据库没有备份,不能应用到目标数据库。目标数据库最远的恢复点是源数据库最近归档的日志文件。对于基于活动数据库的复制,需要做介质恢复,并且以resetlogs方式打开数据库。
在复制过程中,RMAN会自动做以下
1. 为辅助实例创建默认的spfile(复制不涉及standby database或者Server parameter files没有被复制或 者辅助实例没有用spfile启动)
2. 从活动数据库的备份或拷贝中恢复,最新的控制文件满足UNTIL选项。
3. 挂载从活动数据库中备份或拷贝的控制文件
4. 用RMAN恢复备份中的数据文件到辅助实例,这步应用于基于备份的复制。
5. 恢复和拷贝复制数据文件,用增量备份和归档日志恢复到非当前的时间点。
6. 关闭重启实例到NOMOUNT状态
7. 创建新的控制文件,然后创建并存储新的DBID在数据库文件中。
8. 以resetlogs方式打开复制数据库,为新数据库创建联机日志。
--------------------------------------推荐阅读 --------------------------------------
--------------------------------------分割线 --------------------------------------