Managing the Redo Log-6.1、What Is the Redo Log?

当前重做日志经常是在线的,所以type是online,它的类型和归档日志是不同的。所以在线重做日志简称重做日志。怎么在一个标准单实例配置和管理重做日志。

6.1、What Is the Redo Log?

恢复操作最重要的结构就是重做日志,它们保存了关于数据库所有更改。每个实例都有重做日志保护数据库,以防实例失败。

6.1.1、Redo Threads

每个数据库实例都有一个redo线程。典型配置中,只用一个数据库实例访问一个数据库,所以只有一个线程出现。在rac环境,两个或更多实例访问一个数据库,每个实例有一个redo线程。每个实例的redo线程避免重做日志单一集的竞争,由此排除一个潜在的性能瓶颈。

rac环境的重做日志,查看Oracle Database Oracle Clusterware and Oracle Real Application Clusters Administration and Deployment Guide

6.1.2、Redo Log Contents

每个重做日志保存了redo records。一条重做记录,也被称作重做条目,它是由一组change vectors(变更矢量)组成,每个变更矢量描述了每个块的改变。比如,改变employee表的salary字段的值,产生一条重做记录,其中的变更矢量描述了数据块、回滚块和回滚段中事务表的改变。重做记录中的数据被用作重建所有的变更,包括回滚段。所以,重做日志也保护回滚数据。当使用重做数据恢复数据库时,数据库读取变更矢量,把变更应用到相关的数据块。

重做记录用环形的方法缓存在sga的redo log buffer。lgwr把重做日志写入重做日志文件。当一个事务提交后,lgwr立刻把事务的重做记录从redo log buffer写入到重做日志文件,同时给这些重做记录分派一个scn(识别每个已提交事务的重做记录)。在相应的事务被提交前,重做记录也可以被写进重做日志。如果redo log buffer满了,此时另外一个事务提交,lgwr把在redo log buffer中的所有重做记录刷新到重做日志。如果需要,数据库会回滚重做日志中的异常记录。

6.1.3、How Oracle Database Writes to the Redo Log

数据库需要至少两个重做日志文件,当一个被归档时,另外一个被写入。lgwr写入重做日志使用循环的方式。当current重做日志满了,lgwr开始写入另外一个重做日志。满了的重做日志,lgwr是否可以重用,依赖于是否打开归档:

(1)未开启归档,记录到重做日志的变更都被写入数据文件,满了的重做日志立刻可以被重用

(2)开启归档,记录到重做日志的变更都被写入数据文件,同时重做日志被归档,满了的重做日志才能被使用

6.1.3.1、Active (Current) and Inactive Redo Log Files

在同一时刻,oracle只写入一个重做日志文件。lgwr正在写入的重做日志文件,称为当前重做日志文件(current)。需要用做实例恢复的重做日志文件,称为活动重做日志文件

(active)。不需要用做实例恢复的重做日志文件,称为非活动重做日志文件(inactive)。打开归档,活动重做日志文件直到被归档后,立刻状态变为inactive,才能被重用和覆盖。

6.1.3.2、Log Switches and Log Sequence Numbers

日志切换是一个点,lgwr停止写当前重做日志文件,开始写入一个新的重做日志文件。一般地,当当前重做日志文件满了,必须继续写入一个新的重做日志文件,发生日志切换。然而,你可以配置在规律的间隔内切换日志。也可以手动地强制日志切换。每次日志切换、lgwr开始写入一个新的重做日志文件时,数据库给该重做日志文件分派一个新log sequence number。当归档重做日志文件时,归档日志保存它的log sequence number。每个在线日志和归档日志是通过log sequence number被唯一识别。在崩溃恢复、实例恢复、介质恢复期间,数据库按照log
sequence number的升序应用重做日志文件。

Managing the Redo Log-6.1、What Is the Redo Log?

时间: 2024-10-10 13:30:23

Managing the Redo Log-6.1、What Is the Redo Log?的相关文章

同时丢失参数文件、控制文件及redo log file的不完全恢复(有数据文件的热备和归档)

转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/30839817 ##########恢复前的准备工作 1.做个热备 select 'alter tablespace '||tablespace_name|| ' begin backup;' ||chr(10)|| 'host cp '||file_name||' /backup' ||chr(10)|| 'alter tablespace '||tablespace_name|| '

ORACLE 在线移动redo log路径、删除无效的redo log

移动redo文件路径,默认的redo log文件的路径和archivelog的路径一样,在闪回区,因为闪回区有大小限制,所以redo log和archive log特别是archive log越来越多后,会撑爆闪回区.规范起见,需要将redo log以及archive log放到单独的路径区域里面去. 1,查看现有的redo文件路径 查看现有的redo文件路径,看到默认的在闪回区路径下面: SQL> select member from v$logfile; MEMBER -----------

C++、Java、JavaScript中的日志(log)

编程思想之日志记录 什么是log? 相信你一定用日记写过点滴心事,或是用空间.微信.微博刷着动态,记录你每天的喜怒哀乐!在程序中也有一种类似的东西,记录着他主人(应用程序)每天的行踪,他叫日志(log).日记--是人类生活的记事本,日志(log)--是程序运行状况的记事本. 顾名思义,日志(log,后面均以log称之)就是用来记录程序每天的运行状况的,比如程序出现异常的情况,或是某个关键点,功某个重要的数据或交易等.这里的每天不是说每天一记,可以是伴随着程序运行的始终,只要程序在运行着就一直在记

Golang中使用log(一):Golang 标准库提供的Log

Golang的标准库提供了log的机制,但是该模块的功能较为简单(看似简单,其实他有他的设计思路).不过比手写fmt. Printxxx还是强很多的.至少在输出的位置做了线程安全的保护.其官方手册见Golang log (天朝的墙大家懂的).这里给出一个简单使用的例子: package main import ( "log" ) func main(){ log.Fatal("Come with fatal,exit with 1 \n") } 编译运行后,会看到程

Log中'main', 'system', 'radio', 'events'以及android log分析

在Android中不同的log写到不同的设备中,共有/dev/log/system, /dev/log/main, /dev/log/radion, /dev/log/events四中类型.其中默认Log.v等写入/dev/log/main中.Slog写入/dev/log/system中. 我们在使用logcat 抓去日至的时候, 可以指定buffer,来请求不同的环形缓冲区 ('main', 'system', 'radio', 'events',默认为"-b main -b system&q

oracle insert、append、parallel、随后查询的redo与磁盘读写

SQL> set autotrace traceonly statistics; SQL> insert into big_table_dir_test1 select * from big_table_dir_test; 2853792 rows created. Statistics ---------------------------------------------------------- 148 recursive calls 358348 db block gets 1112

6_Oracle_Admin_Oracle的诊断文件(根据alert.log创建pfile、调整sql_trace)

后台的server(数据库,tomcat等server),通常通过文本来记录日志,对于Oracle这样重量级的数据库,日志文件非常详细,当出现了故障需要排查时,就可以分析查看日志文件.Diagnosticfiles的作用就在于此. 日志文件分为两类: 1. Alter file 和Trace File (每个进程一个,在该进程生命周期内创建)不同,AlertFile 只有一个,它随着时间的推移体积逐渐增大,它存放的地址可以通过BACKGROUND_DUMP_DEST或USER_DUMP_DEST

记录华为、魅族手机无法打印 Log 日志的问题

http://yifeng.studio/2017/02/26/android-meizu-huawei-not-log/ 实测 MEIZU PRO 6 :打开[设置]中的[开发者选项],页面底部找到[性能优化],打开[高级日志输出],勾选[全部允许]即可: 华为手机设置方式较为特殊,不是在[开发者选项]中,而是打开拨号界面的拨号盘,输入*#*#2846579#*#*,系统会自动打开[工程菜单]界面,依次打开[后台设置] -> [LOG设置],勾选[AP日志]即可: 原文地址:https://w

log 的 debug()、 error()、 info()方法

简单的说,就是配合log的等级过滤输出比如,你在开发的时候,要验证一个方法有没有被调用到,为了方便调试,通常会在这个方法开始的时候加一些system.out.但是项目真正发布的时候这些代码通常是要移除掉的,所以通常更建议用logger来记录所以你可能会加logger.debug. 为什么是debug而不是info error或者其他呢?因为通常项目发布的时候都会把日志等级设置为error 或者info之类的等级,在这两个等级下debug的内容是输出不了的,所以就可以做到不需要修改代码就不会输出你