重做日志文件

redo log file对于oracle数据库至关重要。它们是数据库的事务日志。通常只用于恢复,也可用于以下工作。

1.1系统崩溃后的实例恢复

1.2通过备份恢复数据文件之后恢复介质

1.3备用数据库处理

1.4Input into “Streams,” a redo log mining process for information sharing (a fancy

way of saying replication)

重做日志文件的主要目的是恢复实例或者介质失败后的恢复,或者可以作为一种维护备用数据库的方法来完成故障恢复。如果数据库所在主机掉电,导致实例失败,oracle会使用在线重做日志将系统恢复到掉电前的那一刻。如果包含数据的磁盘出现故障,oracle可以使用归档的重做日志文件和在线重做日志文件将数据恢复到某一个时间点。如果你不小心删除了一个表或者一些重要的信息并且做了commit操作,你可以恢复一个备份让oracle使用在线重做日志和归档日志文件来恢复到你操作之前的时刻。

实际上,你在oracle里面的每一个操作都会被写入到online redo log里面。你在表中插入一行数据时最终的结果则会被写入online redo log。

在线重做日志

每个oracle数据库都至少有两个在线重做日志文件组。每个重做日志组包含一个或多个重做日志成员。每个日志组里面成员是相互镜像的。重做日志文件的大小是固定的并且以循环的方式进行使用。当日志组1写满时它会覆盖日志组2中的数据并且重新开始向日志组2中写数据,当2满时再重新切换至1进行覆盖重写。如果有多个日志组则以此类推。

从一个日志组切换到另外一个日志组的时候叫做日志切换。在一个设计不是很合理的数据库中日志切换的过程中会出现短暂停。因为重组日志文件是用来错误发生后来恢复数据的,所以我们要保证日志切换的时候即将覆盖的日志已经被写到磁盘中。如果oracle不能确定即将覆盖的日志是否已经写入到磁盘中,它就会停下来将日志组中的数据写入到磁盘,然后再进行覆盖。

数据库缓冲区缓存是临时存储数据块的地方。这是oracle SGA中的一个结构。读取块时,会存储在这个缓存中,这样以后就不必物理地重新读取它们。缓冲区缓存首先是一个性能调优设备,其目的是让非常慢的IO过程看上去快点。修改块时这些修改会在内存中完成。oracle并不是访问SGA中修改的所有块,并把它们写到磁盘上。相反,它只是把重做日志缓冲区中的内容写到在线重做日志文件中。只要修改的块还在缓冲区中,而不在磁盘上,数据库失败时我们就会需要该在线重做日志中的内容。如果这种情况发生,数据的操作就只存在于重做日志文件中,当数据库重新启动的时候,oracle就会重新恢复那些未提交的事务,重新修改数据块并提交。所以,如果重做日志文件中的数据没有写入磁盘之前是不能进行覆盖的。会话通常不将数据写入磁盘,会话将数据写入数据库缓冲区缓存中,由数据库写入器(DBWn)负责在随后将缓冲区写入磁盘。一个实例可能有多个数据库写入器,依次称为DBW0和DBW1等。在缓冲区缓存写入到磁盘时会建立检查点,建立检查点就是把脏块从缓冲区缓存写至磁盘。在日志切换时会建立检查点。在填满日志文件组1并切换到日志文件组2时,oracle就会启动一个检查点。此时,DBWn开始将日志文件组1所保护的所有脏块写至磁盘,在DBWn把该日志文件保护的所有块刷新输出之前,oracle不能重用这个日志文件。如果在这之前想使用日志文件,就会在alert日志中得到下面的消息:

...

Thread 1 cannot allocate new log, sequence 66

Checkpoint not complete

Current log# 2 seq# 65 mem# 0: /home/ora11gr2/app/ora11gr2/oradata/orcl/redo01.log

...

出现这个消息时,数据库中的处理会挂起,因为DBWn正忙于完成它的检查点。此时,oracle会尽可能地把处理能力都交给DBWn,希望它更快地完成。这是我们就要分配足够的在线重做日志文件,这样就不会在检查点完成之前视图重用日志。如果经常看到这个消息,说明DBA未能为应用分配足够多的在线重做日志文件,或者要对DBWn进行调优才能更高效的完成工作。

在设置在线重做日志文件的大小和数目时,应考虑下面的信息:

高峰负载:你可能希望系统不必等待对未完成的消息建立检查点,不要在高峰时遇到瓶颈,不能针对平均的小时吞吐量来确定重做日志文件大小,而要针对高峰处理来确定。例如每天生成24G的日志量,但是其中10G都是在9:00到11:00这一段时间生成的,就要把重做日志的大小调整到足以放下那两个小时高峰期间生成的日志。如果只是针对每小时1G来确定是不够的。

大量用户修改相同的块:如果大量用户都要修改相同的块,你可能希望重做日志文件很大。因为每个人都在修改同样的块,最好尽可能多地更新之后才将其写入到磁盘。每个日志切换都会导致一个检查点,所以你不可能希望频繁地切换日志。不过,这样一来又会影响恢复时间。

平均恢复时间:如果必须确保恢复尽可能快地完成,即便是大量用户要修改相同的块,也可能倾向于使用较小的重做日志文件。如果只处理一两个小的重做日志文件,而不是一个巨大的日志文件,则所需的恢复时间会比较短。由于重做日志文件小,往往会会过多的建立检查点,时间长了,整个系统会越来越慢,但是恢复所花的时间确实会更短,要减少恢复时间,除了使用小的重做日志文件外,还可以使用其他的数据库参数。

oracle redo重做,重做日志文件(redo log)相关推荐

  1. mysql数据库重做日志文件_数据库:mysql:重做日志文件(redo log file)

    一.重做日志缓冲(redo log buffer) 1. log block 在InnoDB存储引擎中,重做日志都是以512字节进行存储的.这意味着重做日志缓存.重做日志文件都是以块(block)的方 ...

  2. Oracle 联机重做日志文件(ONLINE LOG FILE)

    --========================================= -- Oracle 联机重做日志文件(ONLINE LOG FILE) --================== ...

  3. 20190829王老师发的面试题1、有一个日志文件access.log,内容如下

    1.有一个日志文件access.log,内容如下 09:28:59 404 2003356554 09:29:00 200 2003232321 09:30:00 300 2003232321 09: ...

  4. Oracle归档日志文件(Archive Log file)

    Show parameter recover     --查看归档日志文件的存放路径 Alter database archive     --修改数据库为归档模式 Archive log list  ...

  5. oracle 归档日志文件archieve log

    归档日志文件:是处于非活动(INACTIVE)的状态的重做日志文件的备份.它对ORACLE数据库的备份和恢复起至关重要的作用.是联机重做日志文件的一个副本,与被复制的成员完成一样,即重做记录相同,日志 ...

  6. oracle 安装时的日志文件,oracle10g安装的日志文件 Oracle10g怎么查看操作日志

    如何查看oracle 10g 的操作日志 归档模式下怎么查询oracle 10g归档日志存放的路径? SQL> select name from v$archived_log; NAME /u0 ...

  7. oracle impdp无法打开日志文件,Solaris 下 Oracle impdp 过程中出现的问题

    ORA-39002: invalid operation ORA-39070: Unable to open the log file. ORA-29283: invalid file operati ...

  8. oracle备份的输出日志文件,oracle导出数据,备份及恢复数据,及数据库日志文件的查看...

    以salary为例,在PLSQL Developer中操作 1.导出salary表的数据:将 salary 表的数据以 insert 语句的方式导出 tools-->Export Tables- ...

  9. ORACLE如何删除归档日志文件

    1,首先删除归档日志物理文件,归档日志一般都是位于archive目录下,AIX系统下文件格式为"1_17884_667758186.dbf",建议操作前先对数据库进行备份,删除时至 ...

最新文章

  1. 《算法的乐趣》----第二章算法设计基础(笔记一)
  2. python学习-25 函数递归
  3. MySQL基于ROW格式的数据恢复
  4. python公司大部分编码风格_Python编码风格篇:比较运算符-阿里云开发者社区
  5. Edraw Max——亿图图示设计软件基本使用教程
  6. SpringCloud 微服务网关Gateway 动态路由配置
  7. hive 两个没有null指定的表左关联的结果有null_Hive企业级调优表的优化
  8. DXUT框架剖析(11)
  9. day03_顺丰快递分拣小程序
  10. 网络视频服务器系统,网络视频直播系统,搭建直播服务器环境
  11. 天朝有一个乞丐姓洪,去天桥要钱 第一天要了1块钱 第二天要了2块钱 第三天要了4块钱 第四天要了8块钱 以此类推 问题: 洪乞丐干10天,收入是多少?
  12. html鼠标移动到文字改变样式,css实现鼠标滑过改变文字(中文变英文)
  13. 川大锦江学院吧计算机学院答辩,川大锦江学院上演跨国网上毕业论文答辩
  14. 企业如何通过企业微信玩转社群营销?
  15. android .9图片有黑线,用draw9patch.bat绘制的气泡图片用在Android程序中有黑线,怎么解决?...
  16. Egg http proxy
  17. Android gradle统一依赖版本:Composing builds
  18. fooview辅助功能 shell_FV浮动阅览器fooView——一款功能十分强大的浮动按钮
  19. 小黄车卖蜂蜜啦。。。
  20. prometheus:原理和部署

热门文章

  1. Roxel 创世 NFT 作品集
  2. 呼伦贝尔学院计算机系文权,呼伦贝尔学院教务系统
  3. php 时间获取,PHP获取当前时间的5种实现方式
  4. 转:2014年最酷的30个JavaScript库
  5. MFC工具栏资源及CToolBar类
  6. 年产2万吨山楂酒工厂的设计-包装工段及车间的设计(lunwen+任务书+cad图纸)
  7. 删除系统保留盘的方法
  8. android incide_《inside》安卓怎么下载 inside安卓版本什么时候出
  9. 用Python3批量获取街景图片
  10. 职场小故事,工作大道理(13)