注意事项:

1.确认丢失redo log后,切记不要关闭数据库,这样还有机会不丢失数据。

2.实例在线时,如果丢失的是archived状态的redo log,可以使用alter database clear logfile group 1;

3.实例在线时,如果丢失的是unarchived状态的redo log,可以使用alter database clear unarchived logfile group 1;

4.恢复之前先查询丢失redo log的状态,select group#,archived,status,members from v$log;

5.add drop logfile之后,要alter system switch logfile 后才能重用新建的redo logfile

6.在alert日志中,也会写当前使用的日志组是哪一组

7.可能的情况是:断电后或者存储丢失导致redo log需要恢复

8.实例在线时,只要使用clear 或clear archived logfile
实例关闭时,inactive可以使用clear ,active和current要使用recover database until cancel;alter database open resetlogs;

情况一:数据库关闭状态下丢失redo log

1.1.丢失一路redo log(非当前日志成员损坏),开启时没有报错

SQL> startup

ORA-15012: ASM file ‘+DATA/ghyyk/onlinelog/group_4.261.1033499459’ does not exist
Errors in file /u01/app/oracle/diag/rdbms/ghyyk/ghyyk/trace/ghyyk_lgwr_6825.trc:
ORA-00321: log 4 of thread 1, cannot update log file header
ORA-00312: online log 4 thread 1: ‘+DATA/ghyyk/onlinelog/group_4.261.1033499459’
日志报错

select group#,archived,status,members from v l o g ; S Q L > s e l e c t s t a t u s , m e m b e r f r o m v log; SQL> select status,member from v log;SQL>selectstatus,memberfromvlogfile;
SYS@ghyyk> alter database drop logfile member ‘+DATA/ghyyk/onlinelog/group_4.261.1033499459’;
SYS@ghyyk> alter database add logfile member ‘+DATA’ to group 4;

1.2.丢失一路redo log(当前日志成员损坏),开启时没有报错

startup

Errors in file /u01/app/oracle/diag/rdbms/ghyyk/ghyyk/trace/ghyyk_m000_6534.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: ‘+DATA/ghyyk/onlinelog/group_1.272.1033499455’
ORA-17503: ksfdopn:2 Failed to open file +DATA/ghyyk/onlinelog/group_1.272.1033499455
ORA-15012: ASM file ‘+DATA/ghyyk/onlinelog/group_1.272.1033499455’ does not exist
日志报错

select group#,archived,status,members from v$log;

SYS@ghyyk> alter database drop logfile member ‘+DATA/ghyyk/onlinelog/group_1.272.1033499455’;
alter database drop logfile member ‘+DATA/ghyyk/onlinelog/group_1.272.1033499455’
*
ERROR at line 1:
ORA-01609: log 1 is the current log for thread 1 - cannot drop members
ORA-00312: online log 1 thread 1:
‘+DATA/ghyyk/onlinelog/group_1.272.1033499455’
ORA-00312: online log 1 thread 1: ‘+FRA/ghyyk/onlinelog/group_1.305.1033499455’

SYS@ test11g> alter system switch logfile;
System altered.

SYS@ghyyk> alter database drop logfile member ‘+DATA/ghyyk/onlinelog/group_1.272.1033499455’;

SYS@ test11g> alter database add logfile member ‘+DATA’ to group 1;
Database altered.

1.3丢失所有路径下的redo log,开启时报错

select group#,archived,status,members from v$log;
–非当前日志组损坏

SQL> startup

ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: ‘+FRA/ghyyk/onlinelog/group_3.307.1033564159’
ORA-17503: ksfdopn:2 Failed to open file +FRA/ghyyk/onlinelog/group_3.307.1033564159
ORA-15012: ASM file ‘+FRA/ghyyk/onlinelog/group_3.307.1033564159’ does not exist
ORA-00312: online log 3 thread 1: ‘+DATA/ghyyk/onlinelog/group_3.260.1033564159’
ORA-17503: ksfdopn:2 Failed to open file +DATA/ghyyk/onlinelog/group_3.260.1033564159
ORA-15012: ASM file ‘+DATA/ghyyk/onlinelog/group_3.260.1033564159’ does not exist

日志报错

SQL> startup mount;
SQL> select group#,archived,status,members from v$log;
SQL> alter database clear logfile group 3;
SQL> alter database open;

SYS@ghyyk> select group#,archived,status,members from v$log;
GROUP# ARC STATUS MEMBERS
1 NO CURRENT 2
2 YES INACTIVE 2
3 YES UNUSED 2
4 YES INACTIVE 2
clear后3号redo log变为unused状态

1.4 所有路径下的redo log都丢失,启动数据库报错:(不完全恢复)

select group#,archived,status,members from v$log;
–当前日志组损坏(CURRENT)

SQL> startup
ORACLE instance started.

Total System Global Area 1620115456 bytes
Fixed Size 2253704 bytes
Variable Size 939527288 bytes
Database Buffers 671088640 bytes
Redo Buffers 7245824 bytes
Database mounted.

ORA-00313: open failed for members of log group 4 of thread 1
ORA-00312: online log 4 thread 1: ‘+DATA/ghyyk/onlinelog/group_4.261.1033563397’
ORA-17503: ksfdopn:2 Failed to open file +DATA/ghyyk/onlinelog/group_4.261.1033563397
ORA-15012: ASM file ‘+DATA/ghyyk/onlinelog/group_4.261.1033563397’ does not exist
ORA-00312: online log 4 thread 1: ‘+FRA/ghyyk/onlinelog/group_4.308.1033499459’
ORA-17503: ksfdopn:2 Failed to open file +FRA/ghyyk/onlinelog/group_4.308.1033499459
ORA-15012: ASM file ‘+FRA/ghyyk/onlinelog/group_4.308.1033499459’ does not exist
日志报错

恢复方法:

SQL> shutdown immediate
SQL> startup mount
SQL> recover database until cancel;
SQL> alter database open resetlogs;

ASMCMD> ls
group_1.272.1033499455
group_2.271.1033499455
group_3.260.1033499457
group_4.261.1033499459

立即做一次全库备份

情况二:数据库打开状态下丢失redo log

2.1.查看日志组状态,是否归档,根据丢失的是什么状态的redo再进行恢复。

select group#,archived,status,members from vKaTeX parse error: Expected 'EOF', got '#' at position 18: …g; select group#̲,member from vlogfile;

SYS@ghyyk> select group#,archived,status,members from v$log;

GROUP# ARC STATUS MEMBERS
1 NO CURRENT 2
2 YES INACTIVE 2
3 YES INACTIVE 2
4 YES INACTIVE 2

在归档模式下:
1)丢失inactive redolog

1.redo log 状态是未归档
alter database clear unarchived logfile group 1;

2.已归档
alter database clear logfile group 1;
(实例在线和关闭都可以执行,都不会丢失数据)
(实例会自动在logfile路径下,重新创建logfile)

2)丢失active redolog

1.redo log 状态是未归档
a. 实例在线时损坏
alter database clear unarchived logfile group 1;
(在线执行不会丢失数据,但是千万不能关库执行)
b. 实例不正常关闭后损坏
startup nomount
alter system set “_allow_resetlogs_corruption”=true scope=spfile;
shutdown immediate
startup mount
recover database until cancel;
(会丢失数据)

2.redo log 状态是已归档
a.实例在线时损坏
alter database clear unarchived logfile group 1;
(直接在线执行,不会丢失数据)
b.实例不正常关闭后损坏
startup nomount
alter system set “_allow_resetlogs_corruption”=true scope=spfile;
shutdown immediate
startup mount
recover database until cancel;
alter database open resetlogs;
(不会丢失数据)

3)丢失current redolog

1.redo log 状态是未归档
a. 实例在线时损坏
alter system switch logfile;
alter system clear unarchived logfile group 1;
(直接在线执行,不会丢失数据)

b.redo log状态是未归档 不正常关闭数据库时 还有脏块没有写入数据文件时损坏
(会丢失数据)

丢失current redolog状态是未归档 并且已经不正常关闭数据库时 (不完全恢复)
具体恢复方法:

1、数据库基本信息和redo情况
SQL> show parameter db_name
NAME TYPE VALUE

db_name string leonliao
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /home/oracle/oradata/leonliao/arch
Oldest online log sequence 7
Next log sequence to archive 9
Current log sequence 9

SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
1 1 9 52428800 512 1 NO CURRENT 1250771 07-MAR-16 2.8147E+14
2 1 8 52428800 512 1 YES INACTIVE 1250768 07-MAR-16 1250771 07-MAR-16
3 1 7 52428800 512 1 YES INACTIVE 1250765 07-MAR-16 1250768 07-MAR-16

SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
3 ONLINE /home/oracle/oradata/leonliao/redo03.log NO
2 ONLINE /home/oracle/oradata/leonliao/redo02.log NO
1 ONLINE /home/oracle/oradata/leonliao/redo01.log NO

2、在t_redo表插入一条记录2,并shutdown abort关闭数据库
SQL> select * from t_redo;
ID
1

SQL> insert into t_redo values(2);
1 row created.

SQL> commit;
Commit complete.

SQL> shutdown abort
ORACLE instance shut down.

3、删掉current 的redo文件
[oracle@leon1 leonliao]$ pwd
/home/oracle/oradata/leonliao
[oracle@leon1 leonliao]$ rm -rf redo01.log

4、启动数据库到mount状态并尝试打开数据库
SQL> startup mount
ORACLE instance started.
Total System Global Area 626327552 bytes
Fixed Size 2230952 bytes
Variable Size 184550744 bytes
Database Buffers 432013312 bytes
Redo Buffers 7532544 bytes
Database mounted.

SQL> alter database open;
alter database open
ERROR at line 1:
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: ‘/home/oracle/redo3a.log’
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
ORA-00312: online log 3 thread 1: ‘/home/oracle/redo3b.log’
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

SYS@ghyyk> select group#,archived,status,members from v$log;
(检查丢失文件状态)

SQL> alter database clear logfile group 3;
alter database clear logfile group 3
*
ERROR at line 1:
ORA-01624: log 3 needed for crash recovery of instance ghyyk (thread 1)
ORA-00312: online log 3 thread 1: ‘/home/oracle/redo3b.log’
ORA-00312: online log 3 thread 1: ‘/home/oracle/redo3a.log’

SQL> alter database clear unarchived logfile group 3;
alter database clear unarchived logfile group 3
*
ERROR at line 1:
ORA-01624: log 1 needed for crash recovery of instance leonliao (thread 1)
ORA-00312: online log 1 thread 1: ‘/home/oracle/oradata/leonliao/redo01.log’

SQL> recover database until cancel;
ORA-00279: change 1250771 generated at 03/07/2016 07:35:44 needed for thread 1
ORA-00289: suggestion : /home/oracle/oradata/leonliao/arch/1_9_905840705.dbf
ORA-00280: change 1250771 for thread 1 is in sequence #9

Specify log: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 1386552 generated at 02/28/2020 14:16:32 needed for thread 1
ORA-00289: suggestion :
+FRA/ghyyk/archivelog/2020_02_28/thread_1_seq_54.298.1033568205
ORA-00280: change 1386552 for thread 1 is in sequence #54
ORA-00278: log file
‘+FRA/ghyyk/archivelog/2020_02_28/thread_1_seq_53.301.1033568193’ no longer
needed for this recovery

ORA-00279: change 1386558 generated at 02/28/2020 14:16:44 needed for thread 1
ORA-00289: suggestion : +FRA
ORA-00280: change 1386558 for thread 1 is in sequence #55
ORA-00278: log file
‘+FRA/ghyyk/archivelog/2020_02_28/thread_1_seq_54.298.1033568205’ no longer
needed for this recovery

ORA-00308: cannot open archived log ‘+FRA’
ORA-17503: ksfdopn:2 Failed to open file +FRA
ORA-15045: ASM file name ‘+FRA’ is not in reference form

ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: ‘+DATA/ghyyk/datafile/system.259.1033392089’

SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: ‘/home/oracle/oradata/leonliao/system01.dbf’
(有可能会直接打开)

sys@PROD> select file#,checkpoint_change# from vKaTeX parse error: Expected 'EOF', got '#' at position 32: …OD> select file#̲,checkpoint_cha…datafile_header;

若打不开:
5、设置隐含参数_allow_resetlogs_corruption(打开数据库时跳过一致性检查,不一致的打开数据库非紧急情况不能使用,打开数据库后一定要进行数据库重建)为true
SQL> alter system set “_allow_resetlogs_corruption”=true scope=spfile;

注意处理完毕后及时改回这个隐藏参数为false:
alter system set “_allow_resetlogs_corruption” = false scope=spfile;

SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.

SQL> startup mount
ORACLE instance started.
Total System Global Area 626327552 bytes
Fixed Size 2230952 bytes
Variable Size 184550744 bytes
Database Buffers 432013312 bytes
Redo Buffers 7532544 bytes
Database mounted.

SQL> alter database open resetlogs;
Database altered.

6、验证数据是否丢失,数据为2的记录已经丢失

常规恢复_不完全恢复_丢失redo log相关推荐

  1. mysql redo log 数据恢复_MySQL 怎么样恢复丢失的数据?redo log 写磁盘的过程

    在生活中,你一定有过类似这样的经历: 比如部门发礼品.或者说学校发课本.如果在发放的时候,大家一窝蜂的涌了过来,毕竟双拳双敌四手,渐渐你就招架不过来. 为了工作更好做,你会有几个选择,提前打印个名单, ...

  2. mysql重做日志_详解MySQL 重做日志(redo log)与回滚日志(undo logo)

    前言: 前面文章讲述了 MySQL 系统中常见的几种日志,其实还有事务相关日志 redo log 和 undo log 没有介绍.相对于其他几种日志而言, redo log 和 undo log 是更 ...

  3. InnoDB之redo log写入和恢复

    1. 前言 InnoDB使用Buffer Pool来加速数据读写,提升性能的同时也带来了一些问题,为了避免页面频繁刷盘和磁盘随机写,InnoDB引入了WAL机制,先顺序写少量的redo log,再由后 ...

  4. 浅谈Oracle Online redo log

    Oracle online redo log是Oracle数据库中核心文件之一.在数据库操作中,只要有任何的数据块变化,都会生成相应的redo entry.redo entry首先保存在log buf ...

  5. MySQL——binlog,redo log

    一.什么是binlog.redo log binlog属于逻辑日志,是逻辑操作.innodb redo属于物理日志,是物理变更.逻辑日志有个缺点是难以并行,而物理日志可以比较好的并行操作. binlo ...

  6. 说说MySQL中的Redo log Undo log都在干啥

    在数据库系统中,既有存放数据的文件,也有存放日志的文件.日志在内存中也是有缓存Log buffer,也有磁盘文件log file,本文主要描述存放日志的文件. MySQL中的日志文件,有这么两类常常讨 ...

  7. 【图文详解】MySQL事务日志 Redo log(重做) 和 Undo log(撤销)

    InnoDB Architecture https://dev.mysql.com/doc/refman/5.6/en/innodb-architecture.html 我们都知道数据库有四大属性AC ...

  8. 【MySQL】redo log --- 刷入磁盘过程

    1.redo log基本概念 redo log的相关概念这里就不再过多阐述,网上有非常多的好的资料,可以看下缥缈大神的文章:https://www.cnblogs.com/cuisi/p/652507 ...

  9. 电脑如何恢复声音_电脑文件剪切丢失如何恢复?99%数据都能恢复

    剪切文件丢失后如何找回?很多人在文件复制过程中,往往也都比较喜欢使用剪切的方式对所需要复制的文件进行剪切,因为这样操作起来一般也都是比较方便的,并且在文件剪切完成后,也都不需要对原有文件进行删除处理. ...

最新文章

  1. 深度学习必备数学知识之线性代数篇(附代码实现)
  2. Logback Pattern 日志格式配置
  3. 并发工具类(三)控制并发线程数的Semaphore
  4. Spring boot的Thymeleaf使用
  5. 全球及中国生物仿制药淋巴细胞调节剂行业需求潜力分析及及投资规划研究报告2021-2027年
  6. 牛客练习赛25 因数个数和
  7. 获得某个organization unit下面的所有sales org id list
  8. php htts cookies,Http和Https下的cookie的写入问题
  9. oracle数sqlplus,sqlplus查询oracle数据库数据容量
  10. 深入了解jquery中的ajax方法参数
  11. mysql 从备份_MySQL主从备份配置
  12. linux c解析配置文件,linux中C的配置文件
  13. 浅谈信息安全及解决方案
  14. 企业面试之LeetCode刷题心得
  15. IOS 判断设备屏幕尺寸、分辨率
  16. 趋势防毒墙网络版的安装部署(officescan)
  17. 无法连接outlook邮箱服务器,OUTlOOK最近登不上
  18. dell r730服务器开启虚拟化,r730服务器不能开启虚拟化(dell开启cpu虚拟化)
  19. Zookeeper主要应用场景
  20. 僵尸网络检测和抑制方法

热门文章

  1. 字节跳动 抖音直播支付 java实习面经
  2. Successive Refinement
  3. 基于JAVA校园绿化管理系统计算机毕业设计源码+系统+数据库+lw文档+部署
  4. 基于node和npm的命令行工具——tive-cli
  5. 用python 之turtle库(模块)画太极图、楼梯等
  6. 第四代计算机台式,第四代个人计算机:一切都由摄像头追踪 并由投影仪增强...
  7. AVFoundation Programming Guide(官方文档翻译2)Using Assets - 使用Assets
  8. 全角半角 6种空白空格的区别
  9. 七夕节快到了,教你用MATLAB绘制blingbling的大钻石
  10. 计算机打印怎么取消,如何取消打印?