技术开发 频道

几种oracle数据库恢复的练习示例


实例4:归档模式下热备份的恢复模拟练习
1:对某个表空间进行热备份.
Ater tablespace user begin backup
2:在os下把USER表空间对应的文件复制到备份的目录下。
3:结束热备。
Alter tablespace user end backup.
4:shutdown abort;
5:删除该表空间的数据文件。
6:startup;
7:提示文件不存在。
8:还原热备的文件,令该文件脱机。
Alter database datafile ‘88888888’ offline;
9:打开数据库。
10:恢复该文件。
Recover databfile ‘88888888’;
11:alter database datafile online.

也可以对所有的表空间进行热备,删除数据库所有文件,还原热备文件。利用归档日志进行恢复,方法同上。
注:一定要保留热备之后的所有归档日志,联机日志和控制文件,如果联机日志丢失(指状态为active或者current的日志文件),只能进行不完全恢复。方法是按照提示输入日志文件,知道最后一个没有归档的日志文件时CANCEL掉就可以了。

一点心得:
在数据库归档模式下,即使是数据库非正常DOWN掉,通过归档日志和联机日志都可以进行完全恢复。可是如果某个状态为ACTIVE或者CURRENT的日志文件丢失或者损坏,ORACLE肯定不能完整的打开,即使使用
recover database until cancel时,也基本上会报:
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01194: 文件1需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'D:\ORACLE\ORADATA\SAMPLE\SYSTEM01.DBF'
这种情况下由于数据库不能恢复到一致的状态,
一种方法:
在数据库中加入:
_allow_resetlogs_corruption=true
让ORACLE不验证数据一致性的情况下强行打开数据库。
然后EXPORT出数据,重建数据库。
或者:
把以前的的数据文件拿来,做不完全恢复,一直恢复到提示使用丢失的联机日志序列号时时打入cancel
recover database until cancel;
然后使用resetlogs的选项打开数据库
alter database open resetlogs;
所以在归档模式下当前数据库的控制文件和联机日志文件在恢复时候至关重要:
其中控制文件用来对旧数据进行恢复,应用归档日志。
而联机日志则可以保证数据库恢复到发生事故时的状态,算是完全恢复。
如果没归档的联机日志丢失(状态为ACTIVE或者CURRENT),则只能使用归档日志恢复到最后一个归档日志的地方,是不完全恢复。

0
相关文章