设为首页 收藏本站
查看: 999|回复: 0

[经验分享] Oracle的重做日志

[复制链接]

尚未签到

发表于 2018-9-6 06:36:44 | 显示全部楼层 |阅读模式
  Oracle数据库在运行当中,用户更改的数据首先会存放在数据库高速缓冲区当中,为了提升磁盘读写,oracle机制不会频繁的将缓冲区的数据写到磁盘,而是等到检查点或者数据高速缓冲区达到一定数量时才会写入数据库文件;倘若在检查点或者数据量等条件还没满足系统就挂了,那么此时用户提交的数据就会丢失,因为数据还在内存里,为了防止数据丢失,oracle提出了重做日志。
  重做日志的目的是用来做数据恢复的,LGWR进程负责优先把用户更改的数据写到重做日志文件中。
  LGWR的触发条件:
  在事务提交的时候(COMMIT)
  Redo Log Buffer 三分之一满
  Redo Log Buffer 多于一兆的变化记录
  在DBWn写入数据文件之前
  如果数据库开启了归档(查看是否归档archive log list),那么重做日志会在写满后,关闭当前日志文件并把重做日志文件中的内容移动到归档文件中,归档完毕后轮询下一组可用重做日志组;也叫归档重做日志。
  查看系统当前的重做日志文件信息
DSC0000.jpg

  如上图数据库有5个日志组,每组日志组有2个日志成员;目测数据库开启了归档模式,当前正在使用的重做日志为第4组重做日志;
  查看重做日志文件位置
DSC0001.jpg

  重做日志组内的每一个重做日志文件称为一个成员,一个组内的每一个成员具有相同的日志序列号(log sequence number)并且成员的文件大小相同。
DSC0002.jpg

  来个自画原理图
DSC0003.jpg

  在实际生产中,会需要添加多个重做日志组,且每个日志组至少有一个以上的重做日志成员,并存放于不同的磁盘分区。
  实战:添加重做日志组和日志成员。

  alter database add logfile group 6 ('/u01/app/oracle/oradata/orcl/redo0601.log','/u01/app/oracle/oradata/orcl/redo0602.log')>
DSC0004.jpg

  以上添加一个重做日志组6,重做日志成员有两个redo0601.log和redo0602.log都为5M大小。
  查看刚才添加的日志组使用情况,新添加的是未使用Unused
DSC0005.jpg

  实战:删除重做日志组
  alter database drop logfile group 6——若active状态不可删除
  重做日志组有六种状态:
  UNUSED : 表示该联机重做日志文件组对应的文件还从未被写入过数据,通常是刚刚创建的联机重做日志文件或重建后的联机重做日志文件。
  CURRENT : 表示当前正在使用的日志文件组。该联机重做日志组是活动的。
  ACTIVE : 表示该组是活动的但不是当前组,实例恢复时需要这组日志。如果处于这一状态,表示虽然当前并未使用,文件中的数据没有全部写入数据文件,一旦需要实例恢复,必须借助该文件中保存的内容。可以是已归档或没归档。
  INACTIVE: 表示实例恢复已不再需要这组联机重做日志组了,文件中的数据全部写入数据文件。该组联机重做日志当前处于空闲状态。可以是已归档或没归档。

  CLEARING:在执行了>  CLEARING_CURRENT:表示该组重做日志重建时出现错误,如io错误。
  实战:添加重做日志成员
  alter database add logfile member '/u01/app/oracle/oradata/orcl/redo0603.log' to group 6
  实战:删除重做日志成员
  alter database drop logfile member '/u01/app/oracle/oradata/orcl/redo0603.log'
  实战:切换日志
DSC0006.jpg

  执行:alter system switch logfile
DSC0007.jpg

  切换后变成当前可用状态
DSC0008.jpg

  如果要重设重做日志文件大小,需要删除日志组重建重做日志组并设置新的重做成员大小;
  1.alter database drop logfile group 6

  2.alter database add logfile group 6 ('/u01/app/oracle/oradata/orcl/redo0603.log')>  如果无法删除重做日志组,请执行alter system switch logfile(可以多次执行切换)并查看日志组状态,如果为INACTIVE则可以删除;也可以执行alter database checkpoint,此检查点的功能是LGWR进程把重做日志缓冲区数据写入重做日志文件中,同时通知DBWR进程将数据库高速缓冲区提交的数据写入数据文件中。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-563709-1-1.html 上篇帖子: Oracle中使用optimizer_mode参数意义 下篇帖子: Oracle下服务端字符集修改
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表