【Oracle】redo与undo
一 、redo(重做信息)
是Oracle在线(或归档)重做日志文件中记录的信息,万一出现失败时可以利用这些数据来“重放”(或重做)事务。Oracle中记录这些信息的文件叫做redo log file(重做日志文件)。
redo log file分online和archived两类,它们都用于恢复。
当实例失败时,Oracle会使用在线重做日志将系统恰好恢复到故障前的提交点;如果磁盘等介质失败时,Oracle会使用归档重做日志以及在线重做日志将该磁盘上的数据备份恢复到适当的时间点。当一张表被truncate或者表中的数据被误删除时,如果我们已经提交,此时可以利用在线和归档重做日志文件把它恢复到这个“意外”发生前的时间点。
每个Oracle数据库都至少有两个在线重做日志,每个组中至少有一个成员,这些在线重做日志组以循环方式使用,当满足如下任一条件时,数据会被LGWR进程写入到redo log file中:1. redo log buffer 满1/3;2.每3s;3.redo log buffer满1M;4.commit。
二 、undo(撤销信息)
是Oracle在undo段中记录的信息,用于取消或回滚事务。
从概念上讲,undo正好与redo相反。当我们对数据执行修改时,数据库会生成undo信息,以便回到更改前的状态。Oracle也是通过这一特性实现对版本已经读一致性。当我们执行的事务或语句由于某种原因失败了,或者如果你用一条rollback语句请求回滚,此时Oracle就会运用undo信息将数据放回到修改前的样子。redo用于在失败时重放事务(即恢复事务),undo则用于取消一条或一组语句。与redo不同,undo在数据库内部存储在一组特殊的段中,这个段叫做undo段(undo segment)。
rollback segment和undo segment一般认为是同义词。
值得注意的是:当运用undo信息执行恢复时并不是将数据库物理的恢复到执行语句或者事务之前的样子,而是逻辑的恢复到原来的样子,所有的修改都会被逻辑的取消。当Oracle在做回滚的时候会做与之前操作相反的操作,如执行insert,那么数据库在恢复时会相应的执行delete;当执行delete,那么数据库在恢复时会执行insert;对于每个update操作,数据库会执行一个相反的update以完成回滚。
三 、redo和undo的协作
对undo的修改也会产生redo。在Oracle中遵循“日志先行”的原则,即当被修改的数据库刷出到磁盘之前,DBWR进程会要求LGWR进程将redo信息刷新输出。我们在执行系统恢复时,redo信息会先将数据库“前滚”到故障时间点,然后再利用“前滚”产生的undo,“回滚”掉没有提交的信息。
四 、redo log file 管理
1. 增加日志组
SQL> alter database add logfile group 4 ('/u01/app/oracle/oradata/drz/redo04a.log','/u01/app/oracle/oradata/drz/redo04b.log') size 50 M;
Database altered.
2. 增加日志组成员
SQL> alter database add logfile member '/u01/app/oracle/oradata/drz/redo04c.log' to group 4;
Database altered.
3. 删除日志组成员
SQL> alter database drop logfile member '/u01/app/oracle/oradata/drz/redo04c.log';
Database altered.
SQL> !rm -rf /u01/app/oracle/oradata/drz/redo04b.log
4.重命名日志文件
重命名之前必须确保操作系统中已经存在文件。
①关闭数据库
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
②操作系统上重命名文件
[oracle@lgr ~]$ mv /u01/app/oracle/oradata/drz/redo04b.log /u01/app/oracle/oradata/drz/redo04d.log
③启动数据库到mount状态,重命名控制文件中的日志组成员
SQL> 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.
SQL> alter database rename file '/u01/app/oracle/oradata/drz/redo04b.log' to '/u01/app/oracle/oradata/drz/redo04d.log';
Database altered.
④重启数据库
SQL> alter database open;
Database altered.
SQL> select group#,member from v$logfile order by 1;
GROUP# MEMBER
---------- --------------------------------------------------
1 /u01/app/oracle/oradata/drz/redo01.log
2 /u01/app/oracle/oradata/drz/redo02.log
3 /u01/app/oracle/oradata/drz/redo03.log
4 /u01/app/oracle/oradata/drz/redo04d.log
4 /u01/app/oracle/oradata/drz/redo04a.log
⑤.最后,不要忘记备份控制文件
SQL> alter database backup controlfile to trace;
Database altered.
【Oracle】redo与undo相关推荐
- Oracle redo 与 undo
Oracle数据库中最重要的两部分数据:redo与undo.redo(重做信息)是oracle 在线(或归档)重做日志文件中记录的信息,万一出现失效时可以利用这些数据来"重放"(或 ...
- Oracle——redo+undo总结
<Oracle------redo> 重做日志文件(redo log file)对数据库来说至关重要,他们是数据库的事务日志: Oracle数据库维护着两类重做日志文件:在线重做日志文件( ...
- Oracle 9 - redo和undo
1.redo redo 有在线redo日志和归档redo日志, 从Oracle 10g开始还新增加了flashback技术. 每个Oracle数据库至少有2个在线重做日志组,循环写. 只有INSERT ...
- Oracle的REDO和UNDO
在这里会介绍UNDO,REDO是如何产生的,对TRANSACTIONS的影响,以及他们之间如何协同工作的. 什么是REDO REDO记录transaction logs,分为online和archi ...
- 大讲堂专访丨连接Oracle DBA与开发的桥梁:Oracle的redo与undo
云和恩墨大讲堂每周都会邀请业内外大咖进行一小时的线上主题分享,本期我们邀请到了云和恩墨技术专家李元鹏,带来题为<浅谈Oracle的redo与undo>的分享,敬请期待. 在开课前,大讲堂对 ...
- 【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行速度的比较...
[知识点整理]Oracle中NOLOGGING.APPEND.ARCHIVE和PARALLEL下,REDO.UNDO和执行速度的比较 [知识点整理]Oracle中NOLOGGING.APPEND.AR ...
- Oracle redo/undo 原理理解
Oracle redo/undo 原理理解 undefined 参考:https://www.iteye.com/blog/liwenshui322-1488949 https://blog.csdn ...
- oracle的redolog停止,Oracle Redo Log日志故障处理一则
Oracle Redo Log日志故障处理一则 某日oracle服务器异常重启,当重启oracle数据时,发现redo log文件被损坏, 且这个日志文件是current状态的,导致数据库无法打开; ...
- mininet编程实现交换机规则的插入、删除与修改。_Mysql闲聊之从Redo、Undo日志到MVCC实现原理
文章大纲 Undo日志 Redo日志 MVCC Undo 日志 关系型数据需要实现事务的 ACID 特性,其中一点就是事务的原子性,Mysql 就是通过 Undo 日志就来实现的. 数据库处理数据都是 ...
最新文章
- 第十天2017/04/21(3、泛型编程:STL)
- 通过ADB命令获取Android手机的分辨率(升级版)
- SQLite | Where 子句
- 8X53 VS 6763
- 解读设计模式----迭代器模式(Iterator Pattern),谁才是迭代高手
- 【java】编写一个圆柱体类Cylinder,它继承于Circle类
- Windows的拖放操作使用方法
- Xilinx平台SRIO介绍(四)SRIO IP核配置
- android 刷新界面布局,Android输入法弹出刷新界面布局导致性卡顿
- lvds输入悬空_LVDS技术原理及详细介绍
- 计算机桌面文字重影,为什么电脑屏幕上的字老是重影,该怎么调?
- html中图片旋转木马,css3的图片3D旋转图片旋转木马
- 大数据解决方案:解决T+0问题
- 华为nova6se怎么升级鸿蒙,华为EMUI11支持哪些手机
- 蓝彩影视V73-安卓/苹果/网页/TV端/有教程
- 批量正则化Batch Normalization
- 解决IDEA输入ctrl+空格,和输入法冲突的问题
- 你绝对不知道的head标签
- LIMS实验室信息管理系统帮助实验室解决实验室管理的问题
- Day14 Date 包装类 Character
热门文章
- python pandas教程pdf_学习python中的pandas有没有好的教程推荐?
- vmware快速搭建OpenStack云计算平台
- 某大型银行深化系统技术方案之十二:服务层之服务分类
- Linux内核协议栈分析之tcp/ip初始化——tcp/ip通信并不神秘(2)
- 用python计算准确率_Pytorch 计算误判率,计算准确率,计算召回率的例子
- javascript 实现单击和双击并存
- Bootstrap3基础 glyphicon 设置图标的颜色与大小
- windows AD自动化-OU-group-user (二)
- MongoDB高级设计模式:数据即服务
- 老男孩高端linux培训2014业务服务范围