rman对于新手来说是一个难题,然而对我来说同样如此。因此在这里我把我使用rman过程中遇到的问题进行总结以及给出解决的方法。希望给那些同样和我一样的菜了一些宝贵的经验。
1、首先就是关于备份后的备份集存放位置的问题
错误背景:对于全备份来说当在机器A上面进行备份后如果在机器B上进行恢复的时候。备份集存放在B机器什么目录下这个问题困扰了我这个菜了。现在我在这里肯定的告诉大家,放在哪个目录都行,只要恢复的时候oracle用户能读取的权限就可以。当然如果不是和原备份机器相同的目录而在恢复的时候又没有注册备份集的位置那么久会犯和我一样的错误。
解决方法:注册备份集(可以在恢复的时候让rman知道备份集在什么位置),具体做法为(其中/dsms2012为我上传到需要恢复的数据库机器存放备份集的位置):
RMAN> catalog start with '/dsms2012/';
released channel: ORA_DISK_1
searching for all files that match the pattern /dsms2012/
List of Files Unknown to the Database
=====================================
File Name: /dsms2012/arch_ECDSDB_30530_1.bk
File Name: /dsms2012/arch_ECDSDB_30531_1.bk
File Name: /dsms2012/ctl.bk
File Name: /dsms2012/pri_ECDSDB_30526_1.bk
File Name: /dsms2012/pri_ECDSDB_30527_1.bk
File Name: /dsms2012/pri_ECDSDB_30528_1.bk
File Name: /dsms2012/pri_ECDSDB_30529_1.bk
File Name: /dsms2012/spfile.bk
Do you really want to catalog the above files (enter YES or NO)? YES
cataloging files...
cataloging done
List of Cataloged Files
=======================
File Name: /dsms2012/arch_ECDSDB_30530_1.bk
File Name: /dsms2012/arch_ECDSDB_30531_1.bk
File Name: /dsms2012/ctl.bk
File Name: /dsms2012/pri_ECDSDB_30526_1.bk
File Name: /dsms2012/pri_ECDSDB_30527_1.bk
File Name: /dsms2012/pri_ECDSDB_30528_1.bk
File Name: /dsms2012/pri_ECDSDB_30529_1.bk
File Name: /dsms2012/spfile.bk
2、关于原数据库和目标数据库的目录结构的问题
错误背景:作为菜了开始进行恢复的时候我不知道如果没有指定恢复路径,恢复会按备份的控制文件中记录的原数据库的存放路径进行恢复。所以当原数据库结构和目标数据库结构不一样的时候就会犯和我一样的错误。错误信息如下:MAN> RESTORE DATABASE;
Starting restore at 07-JAN-13
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=2190 devtype=DISK
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /home/db/oracle/oradata/ecdsdb/rsystem_01_4g
restoring datafile 00002 to /home/db/oracle/oradata/ecdsdb/rundotbs1_01_10g
restoring datafile 00004 to /home/db/oracle/oradata/ecdsdb/ruser_01_512m
restoring datafile 00006 to /home/db/oracle/oradata/ecdsdb/rtbs_data1_01_16g
restoring datafile 00008 to /home/db/oracle/oradata/ecdsdb/rtbs_part_01_16g
channel ORA_DISK_1: reading from backup piece /home/orarch_ecdsdb2/20121218/pri_ECDSDB_30527_1.bk
ORA-19870: error reading backup piece /home/orarch_ecdsdb2/20121218/pri_ECDSDB_30527_1.bk
ORA-19504: failed to create file "/home/db/oracle/oradata/ecdsdb/rtbs_data1_01_16g"
ORA-27040: file create error, unable to create file
HPUX-ia64 Error: 2: No such file or directory
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00003 to /home/db/oracle/oradata/ecdsdb/rsysaux_01_4g
restoring datafile 00005 to /home/db/oracle/oradata/ecdsdb/rundotbs2_01_10g
restoring datafile 00007 to /home/db/oracle/oradata/ecdsdb/rtbs_data2_01_24g
restoring datafile 00009 to /home/db/oracle/oradata/ecdsdb/rtbs_idx1_01_16g
restoring datafile 00010 to /home/db/oracle/oradata/ecdsdb/rpatrol_data_01_256m
channel ORA_DISK_1: reading from backup piece /home/orarch_ecdsdb2/20121218/pri_ECDSDB_30526_1.bk
ORA-19870: error reading backup piece /home/orarch_ecdsdb2/20121218/pri_ECDSDB_30526_1.bk
ORA-19504: failed to create file "/home/db/oracle/oradata/ecdsdb/rtbs_data2_01_24g"
ORA-27040: file create error, unable to create file
HPUX-ia64 Error: 2: No such file or directory
failover to previous backup
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 01/07/2013 13:07:37
RMAN-06026: some targets not found - aborting restore
RMAN-06100: no channel to restore a backup or copy of datafile 10
RMAN-06100: no channel to restore a backup or copy of datafile 9
RMAN-06100: no channel to restore a backup or copy of datafile 8
RMAN-06100: no channel to restore a backup or copy of datafile 7
RMAN-06100: no channel to restore a backup or copy of datafile 6
RMAN-06100: no channel to restore a backup or copy of datafile 5
RMAN-06100: no channel to restore a backup or copy of datafile 4
RMAN-06100: no channel to restore a backup or copy of datafile 3
RMAN-06100: no channel to restore a backup or copy of datafile 2
RMAN-06100: no channel to restore a backup or copy of datafile 1
报如上错误,说明控制文件中记录了目标数据库的数据库文件路径和本地的/home/oracle/oradata/ecdsdb/不同,所以必须重新指向数据文件的位置如下操作。
解决方法:RMAN> run{
2> set newname for datafile 1 to '/home/oracle/oradata/ecdsdb/system_01_4g';
3> set newname for datafile 2 to '/home/oracle/oradata/ecdsdb/undotbs1_01_10g';
4> set newname for datafile 4 to '/home/oracle/oradata/ecdsdb/user_01_512m';
5> set newname for datafile 6 to '/home/oracle/oradata/ecdsdb/tbs_data1_01_16g';
6> set newname for datafile 8 to '/home/oracle/oradata/ecdsdb/tbs_part_01_16g';
7> set newname for datafile 3 to '/home/doracle/oradata/ecdsdb/sysaux_01_4g';
8> set newname for datafile 5 to '/home/oracle/oradata/ecdsdb/undotbs2_01_10g';
9> set newname for datafile 7 to '/home/oracle/oradata/ecdsdb/tbs_data2_01_24g';
10> set newname for datafile 9 to '/home/oracle/oradata/ecdsdb/tbs_idx1_01_16g';
11> set newname for datafile 10 to '/home/oracle/oradata/ecdsdb/patrol_data_01_256m';
12> restore database;
13> }