Oracle数据库redo日志损坏恢复方案总结

Oracle数据库redo日志损坏恢复方案总结


一、清理在线日志组:Clear the Online Redo Logfile Group:
redolog损坏会导致归档出现问题,进而引发数据库宕机。该语句可以在线处理损坏的日志,避免重启数据库。
同时对current group的日志也有效。     
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2;

如果损坏的日志还没有被归档,使用以下语句清理,可以使该日志跳过归档步骤:

alter database clear unarchived logfile group 2;


二、组内某个成员丢失,但还有其它成员可以使用
1.通过报警日志文件找到丢失的成员
2.删除丢失的成员
3.重新建立丢失的成员


三、非当前组丢失
如果及时发现,clear 该组,或者删除,再建立
如果没有发现,将变为当前日志丢失


四、当前的组丢失

A. 有备份情况,数据库崩溃,因为lgwr 进程崩溃,导致数据库崩溃

1.全备份数据库(再次恢复的基石)
2.恢复所有的datafile(千万不要恢复其它文件)
2. Startup mount;
3. recover database until cancel (using backup controlfile;);
4.提供归档日志
5.数据库要丢失的日志时,键入cancel
6. alter database open resetlogs;
7.全备份数据库(未来恢复的基石)
结果丢失了当前组所记录的交易,因为当前组没归档

B. 没有备份情况下当前日志组损坏

SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile;
SQL> shutdown abort;
ORACLE instance shut down。
SQL> startup mount;
SQL> show parameter allow


SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01139: RESETLOGS option only valid after an incomplete database recovery
以resetlogs 模式打开数据库,让数据库重新建立日志,但失败了。
做一个假恢复,欺骗数据库。走个形式,因为我们没有备份,不可能真恢复
SQL> recover database until cancel;
cancel
数据库相信了,可以了,但打开的时候又崩溃了。
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 75498852 bytes
Database Buffers 88080384 bytes
Redo Buffers 2945024 bytes
Database mounted.
Database opened.
数据库好了!
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值