Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1118007
  • 博文数量: 231
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 2662
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-03 16:35
个人简介

学无止境

文章分类

全部博文(231)

文章存档

2014年(7)

2013年(103)

2011年(11)

2010年(53)

2009年(57)

分类: Oracle

2010-08-31 16:41:11

 

由于基于时间点,在恢复之前,可能需要设置一下环境变量,让rman备份集中的时间显示得更清楚
set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
set NLS_DATE_FORMAT=YYYYMMDD-HH24:MI:SS
如果是异机恢复,或需要变更初始化参数文件,需要确保参数中路径的描述正确且路径有效,如后台dump目录等。
如果需要恢复controlfile,restore controlfile时不要指定时间,直接恢复即可。
例如:
RMAN> run
2>  {
3>     allocate channel d1 type disk;
4>     restore controlfile to 'E:\oracle\oradata\CONTROL01.CTL';
5>     release channel d1;}

恢复数据文件,restore时,只需要恢复system表空间、sysaux表空间、undo表空间,以及想要恢复的用户表空间的相关数据文件。
如果需要rename数据文件名称,使用set newname for datafile命令异机switch datafile命令。
恢复到某个时间点使用set until time '时间',其中时间格式需要满足前面设置的NLS_DATE_FORMAT环境变量格式。
recover时跳过其他不需要恢复的表空间。注意,如果有些表空间名称包含关键字,如"TEST",那么需要用引号引起,否则会报错。

RMAN> run
2> {
3> allocate channel d1 type disk;
4> allocate channel d2 type disk;
5> allocate channel d3 type disk;
6> set newname for datafile 1 to 'E:\oracle\oradata\SYSTEM01.DBF';
7> set newname for datafile 2 to 'E:\oracle\oradata\UNDOTBS01.DBF';
8> set newname for datafile 3 to 'E:\oracle\oradata\SYSAUX01.DBF';
9> set newname for datafile 9 to 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\EAGLE01.DBF';
10> set until time '20100827-11:54:54';
11> restore datafile 1,2,3,9;
12> switch datafile 1;
13> switch datafile 2;
14> switch datafile 3;
15> switch datafile 9;
16> recover database skip forever tablespace USERS,LDY,"TEST";
17> release channel d1;
18> release channel d2;
19> release channel d3;
20> }

恢复完之后,需要检查一下redo log和tempfile的名称,是否为有效路径,如果不是,需要rename:
alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\REDO01.LOG' to 'E:\oracle\oradata\REDO01.LOG';
alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\REDO02.LOG' to 'E:\oracle\oradata\REDO02.LOG';
alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\REDO03.LOG' to 'E:\oracle\oradata\REDO03.LOG';
alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\TEMP01.DBF' to 'E:\ORACLE\ORADATA\TEMP01.DBF';

rename之后,就可以用resetlogs方式open了。
alter database open resetlogs;

需要注意2点问题:
1.如果数据库版本和ORACLE软件版本不一致,可能会报错:
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced
alert log中有如下信息:
ORA-00704: bootstrap process failure
ORA-39700: database must be opened with UPGRADE option
这时需要对数据库进行升级或降级。

如果UNDO表空间做过变更,没有restore出所需的undo表空间。这时只能强制打开数据库,关于此部分内容参见我另一篇文档:
《UNDO表空间损坏导致无法打开数据库》,
http://blog.chinaunix.net/u3/105370/showart.php?id=2315156
阅读(2052) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~