重做日志-Redo log

首先给出参考资料:

为什么需要redo log

内存中数据修改后,不必立即更新到磁盘---效率

由日志完成数据的保护目的---效率

其他副产品

数据恢复(备份集+归档日志)

数据同步(DG,streams,goldengate)

日志挖掘

什么是Redo log

重做日志包含所有数据产生的历史改变记录。

重做日志文件通常用于

恢复

日志挖掘

数据库产生的每个改动

写入数据块缓冲之前,先写入redo log buffer --内存

写入数据文件之前先写入日志文件 --数据文件

当提交后,redo log buffer被刷入redo log files

关于v$log视图

v$log从控制文件中显示日志文件的信息。可参考官网资料v$log

Column

Datatype

Description

GROUP#

NUMBER

Log group number

THREAD#

NUMBER

Log thread number

SEQUENCE#

NUMBER

Log sequence number

BYTES

NUMBER

Size of the log (in bytes)

BLOCKSIZE

NUMBER

Block size of the logfile (512 or 4096)

MEMBERS

NUMBER

Number of members in the log group

ARCHIVED

VARCHAR2(3)

Archive status (YES) or (NO)

STATUS

VARCHAR2(16)

UNUSED,CURRENT,ACTIVE,CLEARING,CLEARING_CURRENT,INACTIVE

FIRST_CHANGE#

NUMBER

Lowest system change number (SCN) in the log

FIRST_TIME

DATE

Time of the first SCN in the log

NEXT_CHANGE#

NUMBER

Highest change number (SCN) in the log. When STATUS=CURRENT, NEXT_CHANGE#is set to the highest possible SCN, 281474976710655.

NEXT_TIME

DATE

Time of the highest SCN in the log. When STATUS=CURRENT, NEXT_TIME is set toNULL.

CON_ID

NUMBER

0,1,n三种情况

日志文件的六种状态UNUSED,CURRENT,ACTIVE,CLEARING,CLEARING_CURRENT,INACTIVE代表的意思分别如下所述:

UNUSED - Online redo log has never been written to. This is the state of a redo log that was just added, or just after a RESETLOGS, when it is not the current redo log.

CURRENT - Current redo log. This implies that the redo log is active. The redo log could be open or closed.

ACTIVE - Log is active but is not the current log. It is needed for crash recovery. It may be in use for block recovery. It may or may not be archived.

CLEARING - Log is being re-created as an empty log after an ALTER DATABASE CLEAR LOGFILE statement. After the log is cleared, the status changes to UNUSED.

CLEARING_CURRENT - Current log is being cleared of a closed thread. The log can stay in this status if there is some failure in the switch such as an I/O error writing the new log header.

INACTIVE - Log is no longer needed for instance recovery. It may be in use for media recovery. It may or may not be archived.

LGWR如何重复使用redo log files

上图就是Oracle LGWR进程向redo log files中写入redo记录的过程,可见,Oracle数据库每次只是用一个redo log file来存储redo log buffer中的redo记录。LGWR正在写入的那个redo log file就是current redo log file。

可用于实例恢复的redo log files就是active redo log files。

不再用于实例恢复的redo log files就是inactive redo log files。

如果数据库当前是Archivelog模式,那么直到有一个后台归档进程ARCn已经归档成功,数据库才能重用或者覆盖active online log file。

如果数据库当前是NoArchivelog模式,当最后一个redo log file写满的时候,LGWR会继续按顺序覆盖下一个inactive redo log file。

查询使用的日志文件的组数及每组的状态

SQL> select group#,status from v$log;

GROUP# STATUS

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

1 CURRENT

2 INACTIVE

3 INACTIVE

有代码可知当前所用的日志文件组数为3组,其中第一组是curren状态,第二三组是inactive状态。

我们也可以使用以下命令手动切换当前LGWR操作的redo log file。

SQL> alter system switch logfile;

系统已更改。

SQL> select group#,status from v$log;

GROUP# STATUS

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

1 ACTIVE

2 CURRENT

3 INACTIVE

可见当前LGWR操作的redo log file已经由之前的第一组修改为第二组了,并且第一组的redo log file变成了Active,也就是说可以用于实例恢复。

过了一会之后再次查询redo log file状态出现的结果如下:

SQL> select group#,status from v$log;

GROUP# STATUS

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

1 INACTIVE

2 CURRENT

3 INACTIVE

此时会发现后台进程会自动将第一个处于active的redo log file变成inactive。这是为什么呢?原来是后台归档进程ARCn将active redo log file归档成归档日志文件,相应的状态就由active变成了inactive。此时group1就不再用于实例恢复了。这个过程用下图来解释:

Multiplexed Redo Log Files

Oracle数据库允许多路复用重做日志,也就是说,重做日志的两个或多个相同的拷贝可以自动保持在不同的地点。为了最大效益,存储的位置应在分开的磁盘。即使重做日志的所有副本都在同一磁盘上,这种冗余措施也是可以防止I / O错误,文件损坏,等等。当使用复用重做日志时,LGWR会将相同的redo log信息同时写入多个相同的重做日志文件,从而解决重做日志的单点故障问题。

图中A_LOG1和B_LOG1是第1组的成员,A_LOG2和B_LOG2是第2组的两个成员,等等。一组中的每个成员都必须是相同的大小,并且是状态也是同步的(active or inactive)。

SCN--system change number

Oracle中的SCN(system change number)和我们的北京时间的意义是相同的,SCN是Oracle中的时间号。

为什么Oracle不用时间来界定呢?

我在北京时间8:00的时候执行一条DML语句,然后修改机器上的时间为7:00,再执行一条DML语句。如果用机器上的时间区分的话,那Oracle根本区分不出来这两条DML语句的执行顺序——而这一点对于Oracle是很重要的。所以它采用自己产生的SCN来区分所有操作的先后顺序。

日志文件

日志文件使用操作系统块大小

通常是512bytes

格式依赖于

操作系统

Oracle版本

Redo日志组成

数据头

redo record

Redo record

一个redo record记录包括

Redo记录台

一个或多个改变向量

每个redo record包含每个原子改变的undo和redo

某些改动不需要undo(临时表,直接加载...)

redo log总结

redo log是Oracle中极其重要的组件,它的目的在于保证数据的安全性

redo log的丢失可能导致数据库中数据的丢失

应该讲Oracle至于归档模式下

日志挖掘-logminer

参考:

用途

对Oracle在线redo和归档日志进行分析

目的

修正误操作

审计

dbms_logmnr

可以基于日志文件分析(一个或者多个)

可以基于时间段分析

可以基于SCN分析

oracle重做日志的信息,Oracle重做日志和日志挖掘相关推荐

  1. oracle查询收到请求信息,Oracle EBS中快速查看某个请求的Output File或log File等信息(转载)...

    项目上,经常有请求报红报黄等问题反映到技术顾问这边,但是由于某些权限的限制,有时候哪怕System Administrator职责也只能看到某个Request信息,但是不能查看它的Output Fil ...

  2. oracle按用户采集信息,oracle 11g 手动收集用户统计信息

    oracle 11g 手动收集用户统计信息 2020-07-25 编程之家收集整理的这篇文章主要介绍了oracle 11g 手动收集用户统计信息,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个 ...

  3. oracle 审计用户登录信息,Oracle预警用户登录锁定、过期及其审计信息

    文章版权所有 Jusin Hao(luckyfriends) ,支持原创,转载请注明 ----创建存储过程(预警用户登录锁定.过期及其审计信息) CREATE OR REPLACE PROCEDURE ...

  4. Oracle收集cbo统计信息,Oracle CBO 统计信息的收集与执行计划的选择

    --概要 主要总结一下Oracle是如何收集统计信息的是如何选择的,有一些好的Ref可以看看 --基本概念 首先要明确系统的自动收集机制 如果insert update delete truncate ...

  5. oracle如何清空用户信息,Oracle数据库如何创建和删除用户

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1. 创建用户: SQL> create user user01 identified by user01; User created. 但登录提示 ...

  6. 删除oracle的注册,oracle数据库账号删除oracle收集系统统计信息

    oracle收集系统统计信息 oracle 10g系统统信息为: 参数名称    描述 cpuspeedNW CPU在无负载模式下的处理速度,即每秒可以完成的机器指令数,单位是百万次,10g默认为1. ...

  7. oracle数据库频繁被锁,Oracle数据库账号频繁被锁定的原因排查

    在Oracle数据库操作中,登录Oracle账号时提示失败,而且Oracle账号频繁被锁定.造成此故障的原因是什么呢?本文就介绍了这一过程,通过逐步排查我们就能找到该故障的原因了. 下面记录下查找这个 ...

  8. 我的Oracle 9i学习日志(11)--重做日志文件及练习

    一.重做日志文件特征:   记录对数据所做的所有更改:提供恢复机制:可以划分成组:至少需要两个组(每个组至少一个成员). 二.结构 联机重做日志文件组: • 一组相同的联机重做日志文件副本称作联机重做 ...

  9. oracle重做日志详解,oracle数据文件、控制文件、重做日志文件详解

    什么是数据文件.控制文件.重做日志文件? 首先从Oracle的官方文档里摘录下面内容: The following sections explain the physical database str ...

  10. 向oracle增加两个重做日志组文件,Oracle重做日志文件

    Oracle重做日志文件 原理:重做日志记录将以循环的方式在sga区的重做日志高速缓冲区中进行缓存,并由后台进程LGWR写入到重做日志文件中. 重做日志文件记录了对数据文件的修改操作,还记录了对回滚段 ...

最新文章

  1. dpi shell命令 安卓_android 中 dumpsys 命令使用
  2. JDBC读取新插入Oracle数据库Sequence值的5种方法
  3. 服务端发post请求产生的编码问题
  4. 配置ssh_config
  5. 管理和配置客户端访问服务器
  6. ubuntu16.04 + Kdevelop + ROS开发
  7. 我从Team Leader变成了CTO,有些不适应,不过我要调整
  8. Django之models
  9. JavaScript学习(八)—属性节点和属性值的操作
  10. libvirt 创建的文件
  11. Atitit 搜索工程师的知识点体系总结 目录 1.1. 理论类 索引 与查询 1 1.2. 类库类 1 1.3. 关联知识类 1 1.4. 其他 1 2. Ref 2 2.1. Atitit 文
  12. Atitit.mysql 5.0 5.5  5.6 5.7  新特性 新功能
  13. LogMeIn Pro 试用简介!
  14. 区块链医疗平台搭建 高效的医疗管理生态服务体系
  15. 3.4输入手写数字图片输出识别结果
  16. java实现京东登陆界面_京东登陆界面的实现
  17. 怎样将腾讯视频qlv格式转换成mp3音频
  18. 记录一次利用python调用chrome爬取天眼查网址工商信息的过程
  19. 病毒分析之撒旦(Satan)勒索病毒分析解密(AES256 ECB算法)
  20. vue中获取获取当前城市地址_Vue中获取当前定位城市名

热门文章

  1. C语言中结构体赋值问题的讨论
  2. POJ1159 Palindrome(dp)
  3. JMS开发(一):基础理论认知
  4. Spring IOC源码笔记(三)
  5. Java集合相关面试题总结
  6. spark sql cache时发现的空字符串问题
  7. Linq To Sql进阶系列(三)CUD和Log
  8. Kubernetes系列——Kubernetes 组件、对象(二)
  9. 使用mpvue开发小程序需要注意和了解的知识点
  10. android 消息系统Handler、MessageQueue、Looper源代码学习