【Oracle】恢复重做日志组
我们在Oracle的日常运维中,有可能会遇到重做日志组丢失的情况。下面我将模拟丢失不同状态的日志组,并分别给出解决办法:
重做日志有以下几种状态,如下:
- CURRENT:此状态表示正在被 LGWR 使用的日志组;
- ACTIVE:重做日志组中仍含有实例恢复所需的重做数据;
- INACTIVE:表示实例恢复不再需要此日志组,可以覆盖;
- UNUSED:未使用;
- CLEARING:对已存在的日志组执行 clear 操作的后的状态;
- CLEARING_CURRENT:日志正在清空。当清空出错时,该日志组被置于这种状态。
1. 丢失INACTIVE状态下的日志组
1)查看当前日志组的状态
SYS@lgr> select group#,members,status from v$log;
GROUP# MEMBERS STATUS
---------- ---------- ----------------
1 1 CURRENT
2 1 INACTIVE
3 1 INACTIVE
SYS@lgr> select group#,member from v$logfile order by 1;
GROUP# MEMBER
---------- --------------------------------------------------
1 /u01/app/oracle/oradata/lgr/redo01.log
2 /u01/app/oracle/oradata/lgr/redo02.log
3 /u01/app/oracle/oradata/lgr/redo03.log
2)在操作系统层面删除GROUP2日志组,模拟丢失了INACTIVE状态的日志组
SYS@lgr> !rm /u01/app/oracle/oradata/lgr/redo02.log
SYS@lgr> !ls /u01/app/oracle/oradata/lgr/redo02.log
ls: /u01/app/oracle/oradata/lgr/redo02.log: No such file or directory
3)前两步已经完成了实验环境的准备,重启数据库会报错
SYS@lgr> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@lgr> startup
ORACLE instance started.
Total System Global Area 830930944 bytes
Fixed Size 2257800 bytes
Variable Size 536874104 bytes
Database Buffers 285212672 bytes
Redo Buffers 6586368 bytes
Database mounted.
ORA-03113: end-of-file on communication channel
Process ID: 17099
Session ID: 125 Serial number: 5
4)在报错中不能分析出出错的原因,我们查看alert日志可以看出是丢失了GROUP2日志组
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/lgr/redo02.log'
ORA-27037: unable to obtain file status
5)启动数据库到MOUNT状态
SYS@lgr> startup mount;
ORACLE instance started.
Total System Global Area 830930944 bytes
Fixed Size 2257800 bytes
Variable Size 536874104 bytes
Database Buffers 285212672 bytes
Redo Buffers 6586368 bytes
Database mounted.
6)CLEAR一下GROUP2日志组,并OPEN数据库
SYS@lgr> alter database clear logfile group 2;
Database altered.
SYS@lgr> alter database open;
Database altered.
7)查看日志组状态及物理文件,发现均已正常,至此完成日志组恢复
SYS@lgr> select group#,members,status from v$log;
GROUP# MEMBERS STATUS
---------- ---------- ----------------
1 1 CURRENT
2 1 UNUSED
3 1 INACTIVE
SYS@lgr> select group#,member from v$logfile order by 1;
GROUP# MEMBER
---------- --------------------------------------------------
1 /u01/app/oracle/oradata/lgr/redo01.log
2 /u01/app/oracle/oradata/lgr/redo02.log
3 /u01/app/oracle/oradata/lgr/redo03.log
总结:丢失INACTIVE状态的日志组,恢复时需要:①启动数据库到MOUNT状态;②对丢失的日志组执行CLEAR命令;③打开数据库。
2.丢失CURRENT状态下的日志组
1)查看当前日志组的状态
SYS@lgr> select group#,members,status from v$log;
GROUP# MEMBERS STATUS
---------- ---------- ----------------
1 1 INACTIVE
2 1 CURRENT
3 1 INACTIVE
SYS@lgr> select group#,member from v$logfile;
GROUP# MEMBER
---------- --------------------------------------------------
3 /u01/app/oracle/oradata/lgr/redo03.log
2 /u01/app/oracle/oradata/lgr/redo02.log
1 /u01/app/oracle/oradata/lgr/redo01.log
2)在操作系统层面删除GROUP3日志组,模拟丢失了INACTIVE状态的日志组
SYS@lgr> !rm /u01/app/oracle/oradata/lgr/redo03.log
SYS@lgr> !ls /u01/app/oracle/oradata/lgr/redo03.log
ls: /u01/app/oracle/oradata/lgr/redo03.log: No such file or directory
3)重启数据库到MOUNT状态
SYS@lgr> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@lgr> startup mount;
ORACLE instance started.
Total System Global Area 830930944 bytes
Fixed Size 2257800 bytes
Variable Size 536874104 bytes
Database Buffers 285212672 bytes
Redo Buffers 6586368 bytes
Database mounted.
4)采用 recover 的方式完成重做日志恢复
SYS@lgr> recover database until cancel;
Media recovery complete.
5)resetlogs方式打开数据库
SYS@lgr> alter database open resetlogs;
Database altered.
6)检查日志组状态及物理文件,都已正常,至此完成恢复
SYS@lgr> select group#,members,status from v$log;
GROUP# MEMBERS STATUS
---------- ---------- ----------------
1 1 CURRENT
2 1 UNUSED
3 1 UNUSED
SYS@lgr> col member for a50
SYS@lgr> select group#,member from v$logfile;
GROUP# MEMBER
---------- --------------------------------------------------
3 /u01/app/oracle/oradata/lgr/redo03.log
2 /u01/app/oracle/oradata/lgr/redo02.log
1 /u01/app/oracle/oradata/lgr/redo01.log
总结:丢失CURRENT状态下的日志组,我们需要如下操作:①重启数据库到MOUNT状态;②recover方式完成恢复;③resetlogs方式打开数据库。
【Oracle】恢复重做日志组的更多相关文章
- oracle如何重做日志组
1.查询数据库中的重做日志组 SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STA ...
- Oracle丢失重做日志的几种场景恢复
实验环境:RHEL6.4 + Oracle 11.2.0.4 一.丢失重做日志组中成员 1.1 故障模拟 1.2 处理方法 1.3 实际处理过程 二.丢失重做日志组 2.1 丢失INACTIVE重做日 ...
- Oracle RACDB 增加、删除 在线重做日志组
Oracle RACDB 增加.删除 在线重做日志组 select * from v$log;select * from v$logfile ; ----删除日志组:alter database dr ...
- Oracle 联机重做日志文件(ONLINE LOG FILE)
--========================================= -- Oracle 联机重做日志文件(ONLINE LOG FILE) --================== ...
- (Les16 执行数据库恢复)-重做日志文件恢复
丢失重做日志文件 丢失了重做日志文件组中的某个成员,并且组中至少还有一个成员: -不会影响实例的正常操作. -预警日志中会收到一条信息, ...
- oracle redo 重做日志文件
以下易容翻译自oracle dba官方文档,不足之处还望指出. 管理重做日志文件 学习目标:1.解释重做日志文件的目的2.描述重做日志文件的结构3.学会控制日志切换与检查点4.多元化管理重做日志文件5 ...
- Oracle数据库重做日志及归档日志的工作原理说明
Oracle数据库重做日志及归档日志的工作原理: lgwr进程将redo log buffer中的重做数据写入到redo log中,此时的redo log分组,每当一个redo log group写满 ...
- 数据库实例: STOREBOOK > 数据文件/退回字段/重做日志组|管理员
ylbtech-Oracle:数据库实例: STOREBOOK > 数据文件/退回字段/重做日志组|管理员 数据文件/退回字段/重做日志组|管理员 1. 数据库实例: STOREBOOK & ...
- ORACLE - 管理重做日志文件
ORACLE重做日志文件用于在数据库崩溃等情况下用于恢复数据,默认情况下为三个文件redo01.log/redo02.log/redo03.log,文件组循环使用,在录入与更新操作比较多的应用中,日志 ...
随机推荐
- linux下的vi的使用方法
vi的使用: 一般指令模式: vi打开一个文件就直接进入一般指令模式,可以进行删除.复制.粘贴.但是不可以对文件的内容进行修改. 常用命令: ctrl + f 向下移动一页 ctrl + b 向上移动 ...
- PAT 1108 Finding Average
The basic task is simple: given N real numbers, you are supposed to calculate their average. But wha ...
- 【Codeforces 1114C】Trailing Loves (or L'oeufs?)
[链接] 我是链接,点我呀:) [题意] 问你n!的b进制下末尾的0的个数 [题解] 证明:https://blog.csdn.net/qq_40679299/article/details/8116 ...
- Android音乐、视频类APP常用控件:DraggablePanel(1)
Android音乐.视频类APP常用控件:DraggablePanel(1) Android的音乐视频类APP开发中,常涉及到用户拖曳视频.音乐播放器产生一定交互响应的设计需求,最典型的以You ...
- hdu 1220组合数学
两个立方体相交的点数有0 1 2 4 不考虑相交点数的话有C(n,2)个立方对. 而求不超过两个交点的对数,即为用总的减去有四个交点的对数,而四个交点即为同面 四个交点的对数为相同的面的个数为(所有的 ...
- ZooKeeper配置文件常用配置项一览表(转)
配置参数详解(主要是$ZOOKEEPER_HOME/conf/zoo.cfg文件) 参数名 说明 clientPort 客户端连接server的端口,即对外服务端口,一般设置为2181吧. data ...
- 找出二叉查找树中指定结点的”下一个"结点(也即中序后继)
设计一个算法.找出二叉查找树中指定结点的"下一个"结点(也即中序后继).能够假定每一个结点都含有指向父结点的连接. watermark/2/text/aHR0cDovL2Jsb2c ...
- [Cypress] Create True end-to-end Tests with Cypress (Smoke test)
Integration tests let us keep our tests fast and reliable. They also allow us to test scenarios that ...
- Android学习之6.0系统执行时权限设置
今天讲讲工作中遇见的6.0运行时权限处理问题.起因就是设置版本号更新时,在6.0系统会报错,起因就是6.0动态权限设置,由于在google为了安全考虑,对于一些特定权限会征询客户授权,这当然会大大添加 ...
- NJUPT JAVA语言 流处理程序设计
一. 实验目的和要求 实验目的和要求:要求学生能在学习和理解课堂学习内容中JAVA流编程理论的基础上,学习并逐步掌握JAVA流程序的编写和调试,学习依据处理需求对不同流的正确选择使用和组合用法. 实验 ...