Oracle的重做日志

简介:
Oracle数据库在运行当中,用户更改的数据首先会存放在数据库高速缓冲区当中,为了提升磁盘读写,oracle机制不会频繁的将缓冲区的数据写到磁盘,而是等到检查点或者数据高速缓冲区达到一定数量时才会写入数据库文件;倘若在检查点或者数据量等条件还没满足系统就挂了,那么此时用户提交的数据就会丢失,因为数据还在内存里,为了防止数据丢失,oracle提出了重做日志。
重做日志的目的是用来做数据恢复的,LGWR进程负责优先把用户更改的数据写到重做日志文件中。
LGWR的触发条件:
在事务提交的时候(COMMIT)
Redo Log Buffer 三分之一满
Redo Log Buffer 多于一兆的变化记录
在DBWn写入数据文件之前
如果数据库开启了归档(查看是否归档archive log list),那么重做日志会在写满后,关闭当前日志文件并把重做日志文件中的内容移动到归档文件中,归档完毕后轮询下一组可用重做日志组;也叫归档重做日志。
查看系统当前的重做日志文件信息
Oracle的重做日志
如上图数据库有5个日志组,每组日志组有2个日志成员;目测数据库开启了归档模式,当前正在使用的重做日志为第4组重做日志;
查看重做日志文件位置
Oracle的重做日志
重做日志组内的每一个重做日志文件称为一个成员,一个组内的每一个成员具有相同的日志序列号(log sequence number)并且成员的文件大小相同。
Oracle的重做日志
来个自画原理图
Oracle的重做日志
在实际生产中,会需要添加多个重做日志组,且每个日志组至少有一个以上的重做日志成员,并存放于不同的磁盘分区。
实战:添加重做日志组和日志成员。
alter database add logfile group 6 ('/u01/app/oracle/oradata/orcl/redo0601.log','/u01/app/oracle/oradata/orcl/redo0602.log') size 5M;
Oracle的重做日志
以上添加一个重做日志组6,重做日志成员有两个redo0601.log和redo0602.log都为5M大小。
查看刚才添加的日志组使用情况,新添加的是未使用Unused
Oracle的重做日志
实战:删除重做日志组
alter database drop logfile group 6——若active状态不可删除
重做日志组有六种状态:
UNUSED : 表示该联机重做日志文件组对应的文件还从未被写入过数据,通常是刚刚创建的联机重做日志文件或重建后的联机重做日志文件。
CURRENT : 表示当前正在使用的日志文件组。该联机重做日志组是活动的。
ACTIVE : 表示该组是活动的但不是当前组,实例恢复时需要这组日志。如果处于这一状态,表示虽然当前并未使用,文件中的数据没有全部写入数据文件,一旦需要实例恢复,必须借助该文件中保存的内容。可以是已归档或没归档。
INACTIVE: 表示实例恢复已不再需要这组联机重做日志组了,文件中的数据全部写入数据文件。该组联机重做日志当前处于空闲状态。可以是已归档或没归档。
CLEARING:在执行了 ALTER DATABASE CLEAR LOGFILE 后,表示该组重做日志文件正被重建(重建后该状态会变成UNUSED)。
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'
实战:切换日志
Oracle的重做日志
执行:alter system switch logfile
Oracle的重做日志
切换后变成当前可用状态
Oracle的重做日志
如果要重设重做日志文件大小,需要删除日志组重建重做日志组并设置新的重做成员大小;
1.alter database drop logfile group 6
2.alter database add logfile group 6 ('/u01/app/oracle/oradata/orcl/redo0603.log') size 100M
如果无法删除重做日志组,请执行alter system switch logfile(可以多次执行切换)并查看日志组状态,如果为INACTIVE则可以删除;也可以执行alter database checkpoint,此检查点的功能是LGWR进程把重做日志缓冲区数据写入重做日志文件中,同时通知DBWR进程将数据库高速缓冲区提交的数据写入数据文件中。









本文转自 rm_rf_d 51CTO博客,原文链接:http://blog.51cto.com/12185273/2054957,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
6月前
|
SQL Oracle 关系型数据库
问题出在Debezium Oracle Connector的日志解析器上
问题出在Debezium Oracle Connector的日志解析器上
56 2
|
6天前
|
运维 Oracle 关系型数据库
Oracle日志文件:数据王国的“记事本”
【4月更文挑战第19天】Oracle日志文件是数据库稳定运行的关键,记录数据变更历史,用于恢复和故障处理。它们协调并发操作,确保数据一致性和完整性。日志文件实时写入操作信息并定期刷新到磁盘,便于数据恢复。然而,日志文件需备份和归档以保证安全性,防止数据丢失。日志文件,数据王国的“记事本”,默默守护数据安全。
|
10月前
|
Oracle 关系型数据库 数据库
查询listener的日志排除不能登录的错误使用Oracle官方提供的ova文件建立Oracle 19c学习环境
Oracle官方提供了安装好的Oracle 19c虚拟机,打包成ova文件。可以使用这个文件建立一个oracle 19c的学习环境。
121 0
|
11月前
|
Oracle 关系型数据库 数据库
一个Oracle数据库,一天归档日志3T多
Oracle数据库一体机,Oracle linux7,看看归档日志大小
|
11月前
|
Oracle 关系型数据库 数据库
Oracle 的联机日志文件
Oracle 的联机日志文件
117 0
|
11月前
|
SQL Oracle 关系型数据库
Oracle 的归档日志文件
Oracle 的归档日志文件
201 0
|
Oracle 关系型数据库 数据库
Oracle中的各种日志文件默认位置
Oracle中的各种日志文件默认位置
1361 0
|
Oracle 关系型数据库
Oracle查询归档日志的产生情况
Oracle查询归档日志的产生情况
247 0
|
SQL Oracle 关系型数据库
在Oracle中,如何管理联机Redo日志组与成员?
在Oracle中,如何管理联机Redo日志组与成员?
166 0
|
Oracle 关系型数据库 数据安全/隐私保护
oracle学习25-手工删除oracle归档日志后操作步骤 和修改用户默认解锁时间
oracle学习25-手工删除oracle归档日志后操作步骤 和修改用户默认解锁时间
124 0

推荐镜像

更多