注意事项:

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. [python][jupyter notebook]之菜鸟安装[pyecharts]中Geo或Map显示问题
  2. Dev-C++安装和使用教程(手把手傻瓜式教学)
  3. 强势 图解 AC自动机(保证您一次就能学会!)
  4. log4j2常见配置
  5. android+5.0+小米手环,小米手环5和荣耀手环6哪个好-参数对比
  6. 笔记本关于虚拟机桥接小问题
  7. Iptables详解+实例
  8. [LeetCode]题解(python):012-Integer to Roman
  9. mysql 大表查询慢_mysql大表查询慢怎么优化?
  10. 【NLP基础】手把手带你fastText文本分类(附代码)
  11. 5214页PDF的进阶架构师学习笔记,阿里巴巴内部Jetpack宝典意外流出
  12. 在学习少儿编程中体会AI乐趣
  13. HEVC编码视频格式
  14. el-table表格横竖双表头,表头带斜线
  15. 2018_10_24 模拟赛
  16. 使用Log日志 计算带宽流量峰值
  17. ORA-04031: 无法分配 3840 字节的共享内存 (“shared pool“,“unknown object“,“sga heap(1,0)“,“kglsim object batch“)
  18. LeetCode(数据库)- 净现值查询
  19. Android 高质量开发之崩溃优化
  20. RDLC打印或导出Word的 分页设置 页边距和页面大小

热门文章

  1. 【C语言】free函数如何知道要释放多大空间
  2. 切蛋糕4 likes in 二分答案,剪枝优化
  3. 堡垒前线破坏与创造怎么在电脑上玩 堡垒前线破坏与创造模拟器教程
  4. iphone6s计算机驱动,将iphone6s连接到计算机时如果出现驱动程序问题该怎么办
  5. 淘宝客 PK 直通车 ,孰更胜一筹?
  6. 基于SpringBoot+微信小程序的失物招领小程序
  7. 用css画三角形、爱心、钻石
  8. NX CAM 区域轮廓铣的切削步长
  9. 赛事 | 百度AI Studio人工智能竞赛火热报名中
  10. php应该学什么,php先学什么 0基础php好学吗