在归档模式下当前数据库的控制文件和联机日志文件在恢复时候至关重要: 其中控制文件用来对旧数据进行恢复,应用归档日志,课课家教育。
实例3:上面的例子也可以做基于时间的不完全恢复,但时间必须是数据已经保留在归档日志中的时间及以前。
9:startupmount;
10:基于时间点的不完全恢复:
recoverdatabaseuntiltime‘2003-9-2412:20’;
SVRMGR>recoverdatabaseuntiltime'2003-9-2411:20';
ORA-00279:??84851370(?09/24/200311:16:01??)????1????
ORA-00289:??:D:\\Oracle\\ORADATA\\SAMPLE\\ARCHIVE\\TESTT001S01324.ARC
ORA-00280:??84851370????1????#1324???
指定日志:{
应用的记录。
SVRMGR>alterdatabaseopenresetlogs;
实例4:归档模式下单个数据文件丢失或损坏,从冷备份中恢复的模拟练习
1:已经做了冷备份。
2:abort方式关掉前的数据库,模拟由于数据文件丢失造成数据库非正常关闭。
3:从冷备份当中copy丢失的数据文件。
4:startupmount;
5:只对这个文件进行恢复。
Recoverdatafile'D:\\ORACLE\\ORADATA\\SAMPLE\\DR01.DBF';
ORA-00279:更改84851719(在09/24/200312:15:51生成)对于线程1是必需的
ORA-00289:建议:D:\\ORACLE\\ORADATA\\SAMPLE\\ARCHIVE\\TESTT001S01330.ARC
ORA-00280:更改84851719对于线程1是按序列#1330进行的
ORA-00278:此恢复不再需要日志文件'D:\\ORACLE\\ORADATA\\SAMPLE\\ARCHIVE\\TESTT001S01329.ARC'
指定日志:{
auto指定为自动恢复。
应用的记录。
直至完成。
ORA-00278:此恢复不再需要日志文件'D:\\ORACLE\\ORADATA\\SAMPLE\\ARCHIVE\\TESTT001S01343.ARC'
应用的记录。
完成介质的恢复。
6:打开数据库
alterdatabaseopen;
另一种方法:
1:startupmount;
2:alterdatabasedatafile'D:\\ORACLE\\ORADATA\\SAMPLE\\DR01.DBF'offline;
3:alterdatabaseopen;
4:recoverdatafile'D:\\ORACLE\\ORADATA\\SAMPLE\\DR01.DBF';;
5:alterdatabasedatafile'D:\\ORACLE\\ORADATA\\SAMPLE\\DR01.DBF'online;
实例5:归档模式下热备份的恢复模拟练习
1:对某个表空间进行热备份.
Atertablespaceuserbeginbackup
2:在os下把USER表空间对应的文件复制到备份的目录下。
3:结束热备。
Altertablespaceuserendbackup.
4:shutdownabort;
5:删除该表空间的数据文件。
6:startup;
7:提示文件不存在。
8:还原热备的文件,令该文件脱机。
Alterdatabasedatafile‘88888888’offline;
9:打开数据库。
10:恢复该文件。
Recoverdatabfile‘88888888’;
11:alterdatabasedatafileonline.
也可以对所有的表空间进行热备,删除数据库所有文件,还原热备文件。利用归档日志进行恢复,方法同上。
注:一定要保留热备之后的所有归档日志,联机日志和控制文件,如果联机日志丢失(指状态为active或者current的日志文件),只能进行不完全恢复。方法是按照提示输入日志文件,知道最后一个没有归档的日志文件时CANCEL掉就可以了。
一点心得:
在数据库归档模式下,即使是数据库非正常DOWN掉,通过归档日志和联机日志都可以进行完全恢复。可是如果某个状态为ACTIVE或者CURRENT的日志文件丢失或者损坏,ORACLE肯定不能完整的打开,即使使用
recoverdatabaseuntilcancel时,也基本上会报:
ORA-01547:警告:RECOVER成功但OPENRESETLOGS将出现如下错误
ORA-01194:文件1需要更多的恢复来保持一致性
ORA-01110:数据文件1:'D:\\ORACLE\\ORADATA\\SAMPLE\\SYSTEM01.DBF'
这种情况下由于数据库不能恢复到一致的状态,
一种方法:
在数据库中加入:
_allow_resetlogs_corruption=true
让ORACLE不验证数据一致性的情况下强行打开数据库。
然后EXPORT出数据,重建数据库。
或者:
把以前的的数据文件拿来,做不完全恢复,一直恢复到提示使用丢失的联机日志序列号时时打入cancel
recoverdatabaseuntilcancel;
然后使用resetlogs的选项打开数据库
alterdatabaseopenresetlogs;
而联机日志则可以保证数据库恢复到发生事故时的状态,算是完全恢复。
如果没归档的联机日志丢失(状态为ACTIVE或者CURRENT),则只能使用归档日志恢复到最后一个归档日志的地方,是不完全恢复。
找Oracle视频教程学oracle,上课课家教育IT培训专家。
上一篇:Oracle数据库系统调优方法
下一篇:oracle数据类型详解
¥48.00¥180.00
¥798.00
¥48.00¥180.00
¥199.00
¥29.90
¥199.00