什么是重做?

  • 重做日志包含所有数据产生的历史改变记录.
  • 重做日志目的是保证数据的安全,如果数据因特殊原因没有写到磁盘上,可以通过重做日志来恢复.
  • 重做日志文件通常用于
    • 恢复(实例恢复和介质恢复)
    • 日志挖掘:可以通过oracle工具分析日志里面的内容
    • 流:通过分析redo,从redo获取实时数据,应用到远程数据库.
  • 数据库产生的每个改动:
    • 写入数据库缓存之前,先写入重做日志--内存
    • 写入数据文件之前先写入日志文件 ----数据文件
  • 内存里操作,重做日志的内存区叫Redo buffer
  • 当提交后,日志缓冲被刷入重做文件里.还有其他触发条件.

redo有2种

  • undo产生的redo
  • 数据块本身产生的redo

REDO写入过程

轮询

从上到下写,第一个写完后就写第二个,第二个写完后就写第三个,第三个写满后就写第一个.如果第一个还没有写入到磁盘,此时会报错,不允许覆盖.

REDO-- 日志组

DISK A DISK B

GROUP1里面有2个redo log,作用是冗余.

LGWR同时写入一个组的log文件中..

REDO 和归档

LGWR写第一个组,第一个组写完后,就会写第二个组,然后ARCH会将第一个组归档成一个归档文件.

REDO 的内容 ---改变向量

redo的内容并不是sql语句,他是放的一些改变,叫改变向量.

数据库恢复的时候并不是执行sql语句,而是一个物理的过程,是一个数据块的覆盖.是改变数据块的大小.

创建2个表

SQL> create table t1(x char(1));

SQL> create table t2(x char(2000));

获取当前会话的sid:

SQL> select distinct sid from v$mystat;

开三个会话

SQL> select a.sid,b.name,a.value from v$sesstat a,v$statname b where a.statistic#=b.statistic# and b.name='redo size' and sid in(475,241);

表1中字符长度为1,表2长度为2000,所以他产生的redo更多一些.

所以redo里面保存的不是sql语句,也不是插入的数据值,只是和数据块改变的大小/多少有关系.

SQL> create table t1(x char(1));

Table created.

SQL> create table t2(x char(2000));

Table created.

SQL> select distinct sid from v$mystat;

SID

----------

475

SQL> select a.sid,b.name,a.value from v$sesstat a,v$statname b where a.statistic#=b.statistic# and b.name='redo size' and sid in(475,241);

SID NAME

---------- ----------------------------------------------------------------

VALUE

----------

241 redo size

0

475 redo size

27280

SQL> col name for a10;

SQL> select a.sid,b.name,a.value from v$sesstat a,v$statname b where a.statistic#=b.statistic# and b.name='redo size' and sid in(475,241);

SID NAME            VALUE

---------- ---------- ----------

241 redo size           0

475 redo size       27280

这两个会哈的redo size不一样大,我们quit退出,重新进一下

SQL> select a.sid,b.name,a.value from v$sesstat a,v$statname b where a.statistic#=b.statistic# and b.name='redo size' and sid in(475,241);

SID NAME            VALUE

---------- ---------- ----------

241 redo size           0

475 redo size           0

同时向2张表插入数据

SQL> select a.sid,b.name,a.value from v$sesstat a,v$statname b where a.statistic#=b.statistic# and b.name='redo size' and sid in(475,241);

SID NAME            VALUE

---------- ---------- ----------

241 redo size        2668

475 redo size         672

REDO --undo 的redo

Oracle重做日志REDO的更多相关文章

  1. Oracle重做日志恢复数据模拟实验

    一 系统环境: 1.操作系统:oracle Linux 5.6 2.数据库: Oracle 11g 二 Oracle 重做日志的作用: [模拟介质恢复] 1. 关闭数据库归档模式: [oracle@t ...

  2. Oracle重做日志和日志挖掘

    重做日志-Redo log 首先给出参考资料: 1.Oracle官网-Managing the Redo Log 为什么需要redo log 内存中数据修改后,不必立即更新到磁盘---效率 由日志完成 ...

  3. Oracle重做日志文件

    一.联机重做日志的规划管理 1.联机重做日志 记录了数据的所有变化(DML,DDL或管理员对数据所作的结构性更改等) 提供恢复机制(对于意外删除或宕机利用日志文件实现数据恢复) 可以被分组管理  11 ...

  4. 初识oracle重做日志文件

    转自 http://blog.csdn.net/indexman/article/details/7746948 以下易容翻译自oracle dba官方文档,不足之处还望指出. 管理重做日志文件 学习 ...

  5. ORACLE重做日志小结

    1.Redo log特点 重做日志以磁盘I/O为主,将数据库操作记录到日志文件.(磁盘I\O性能有可能成为瓶颈) 每个实例只有一个活动的LGWR(log writer)进程,至少有两个日志组(logf ...

  6. oracle重做日志文件硬盘坏掉解决方法

    rman target/ list backup; list backup summary; 删除数据库数据文件夹下的log日志,例如/u01/app/oracle/oradata/ORCL下的所有后 ...

  7. oracle 重做日志

    原创转载请注明出处 重做日志:记录数据库数据的变化(DDL,DML) 重做日志组:由一个或者多个完全一样的重做日志文件组成,如果一个日志组有多个日志文件,后台进程LGWR会把事务变化写到同一个日志组的 ...

  8. 修改oracle重做日志文件大小

    创建3个新的日志组 SQL> ALTER DATABASE ADD LOGFILE GROUP 4 ('/u01/app/oracle/oradata/orcl/redo06.log') SIZ ...

  9. ORACLE - 管理重做日志文件

    ORACLE重做日志文件用于在数据库崩溃等情况下用于恢复数据,默认情况下为三个文件redo01.log/redo02.log/redo03.log,文件组循环使用,在录入与更新操作比较多的应用中,日志 ...

随机推荐

  1. Scrapy使用问题整理(转载)

    转载自:http://blog.csdn.net/heu07111121/article/details/50832999   最近尝试使用Scrapy进行数据抓取,并尝试在windows7 64位系 ...

  2. PHPCMS模块开发相关文件

    名称 类型说明 Guestbook 模块后台控制器 index 模块前台控制器 Install 安装文件夹 ├templates ├config.inc.php ├extention.inc.php ...

  3. iOS开发多线程篇 07 —GCD的基本使用

    iOS开发多线程篇—GCD的基本使用 一.主队列介绍 主队列:是和主线程相关联的队列,主队列是GCD自带的一种特殊的串行队列,放在主队列中得任务,都会放到主线程中执行. 提示:如果把任务放到主队列中进 ...

  4. [JNA系列]Java调用Delphi编写的Dll之JNA使用

    介绍 给大家介绍一个最新的访问本机代码的 Java 框架 —JNA . JNA(Java Native Access) 框架是一个开源的 Java 框架,是 SUN 公司主导开发的,建立在经典的 JN ...

  5. UITextField/UITextView限制字数

    一,UITextFild限制字数(三步) 1,给textfild添加响应事件,类型为:UIControlEventEditingChanged [self.nickNameFild addTarget ...

  6. CentOS 7 ifconfig: command not found

    # ifcon-bash: ifconfig: command not found谷歌了一下,整理了一下解决思路 查看ifconfig命令是否存在 查看 /sbin/ifconfig是否存在 如果if ...

  7. City Destruction Kattis - city dp

    /** 题目:City Destruction Kattis - city 链接:https://vjudge.net/problem/Kattis-city 题意:有n个怪兽,排成一行.每个怪兽有一 ...

  8. Visual Studio 2017 RC使用初体验

    .NET Core新式,高效,特别适合用于大规模的Web应用:而传统的.NET Framework则非常适合用于开发Windows桌面应用程序. 一 安装 请下载Visual Studio 2017 ...

  9. Expectation Maximization(EM)算法note

    EM算法,之前上模式识别课上,推导过,在<统计学习方法>中没耐性的看过几次,个人感觉讲的过于理论,当时没怎么看懂,后来学lda,想要自己实现一下em算法,又忘记了,看来还是学的不够仔细,认 ...

  10. 对hibernate的延迟加载如何理解,在实际应用中,延迟加载与session关闭的矛盾是如何处理的?

    对hibernate的延迟加载如何理解,在实际应用中,延迟加载与session关闭的矛盾是如何处理的? 解答:延迟加载就是并不是在读取的时候就把数据加载进来,而是等到使用时再加载.那么Hibernat ...