常规恢复_不完全恢复_丢失redo log
注意事项:
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相关推荐
- mysql redo log 数据恢复_MySQL 怎么样恢复丢失的数据?redo log 写磁盘的过程
在生活中,你一定有过类似这样的经历: 比如部门发礼品.或者说学校发课本.如果在发放的时候,大家一窝蜂的涌了过来,毕竟双拳双敌四手,渐渐你就招架不过来. 为了工作更好做,你会有几个选择,提前打印个名单, ...
- mysql重做日志_详解MySQL 重做日志(redo log)与回滚日志(undo logo)
前言: 前面文章讲述了 MySQL 系统中常见的几种日志,其实还有事务相关日志 redo log 和 undo log 没有介绍.相对于其他几种日志而言, redo log 和 undo log 是更 ...
- InnoDB之redo log写入和恢复
1. 前言 InnoDB使用Buffer Pool来加速数据读写,提升性能的同时也带来了一些问题,为了避免页面频繁刷盘和磁盘随机写,InnoDB引入了WAL机制,先顺序写少量的redo log,再由后 ...
- 浅谈Oracle Online redo log
Oracle online redo log是Oracle数据库中核心文件之一.在数据库操作中,只要有任何的数据块变化,都会生成相应的redo entry.redo entry首先保存在log buf ...
- MySQL——binlog,redo log
一.什么是binlog.redo log binlog属于逻辑日志,是逻辑操作.innodb redo属于物理日志,是物理变更.逻辑日志有个缺点是难以并行,而物理日志可以比较好的并行操作. binlo ...
- 说说MySQL中的Redo log Undo log都在干啥
在数据库系统中,既有存放数据的文件,也有存放日志的文件.日志在内存中也是有缓存Log buffer,也有磁盘文件log file,本文主要描述存放日志的文件. MySQL中的日志文件,有这么两类常常讨 ...
- 【图文详解】MySQL事务日志 Redo log(重做) 和 Undo log(撤销)
InnoDB Architecture https://dev.mysql.com/doc/refman/5.6/en/innodb-architecture.html 我们都知道数据库有四大属性AC ...
- 【MySQL】redo log --- 刷入磁盘过程
1.redo log基本概念 redo log的相关概念这里就不再过多阐述,网上有非常多的好的资料,可以看下缥缈大神的文章:https://www.cnblogs.com/cuisi/p/652507 ...
- 电脑如何恢复声音_电脑文件剪切丢失如何恢复?99%数据都能恢复
剪切文件丢失后如何找回?很多人在文件复制过程中,往往也都比较喜欢使用剪切的方式对所需要复制的文件进行剪切,因为这样操作起来一般也都是比较方便的,并且在文件剪切完成后,也都不需要对原有文件进行删除处理. ...
最新文章
- [python][jupyter notebook]之菜鸟安装[pyecharts]中Geo或Map显示问题
- Dev-C++安装和使用教程(手把手傻瓜式教学)
- 强势 图解 AC自动机(保证您一次就能学会!)
- log4j2常见配置
- android+5.0+小米手环,小米手环5和荣耀手环6哪个好-参数对比
- 笔记本关于虚拟机桥接小问题
- Iptables详解+实例
- [LeetCode]题解(python):012-Integer to Roman
- mysql 大表查询慢_mysql大表查询慢怎么优化?
- 【NLP基础】手把手带你fastText文本分类(附代码)
- 5214页PDF的进阶架构师学习笔记,阿里巴巴内部Jetpack宝典意外流出
- 在学习少儿编程中体会AI乐趣
- HEVC编码视频格式
- el-table表格横竖双表头,表头带斜线
- 2018_10_24 模拟赛
- 使用Log日志 计算带宽流量峰值
- ORA-04031: 无法分配 3840 字节的共享内存 (“shared pool“,“unknown object“,“sga heap(1,0)“,“kglsim object batch“)
- LeetCode(数据库)- 净现值查询
- Android 高质量开发之崩溃优化
- RDLC打印或导出Word的 分页设置 页边距和页面大小