Oracle重做日志REDO
什么是重做?
- 重做日志包含所有数据产生的历史改变记录.
- 重做日志目的是保证数据的安全,如果数据因特殊原因没有写到磁盘上,可以通过重做日志来恢复.
- 重做日志文件通常用于
- 恢复(实例恢复和介质恢复)
- 日志挖掘:可以通过oracle工具分析日志里面的内容
- 流:通过分析redo,从redo获取实时数据,应用到远程数据库.
- 数据库产生的每个改动:
- 写入数据库缓存之前,先写入重做日志--内存
- 写入数据文件之前先写入日志文件 ----数据文件
- 内存里操作,重做日志的内存区叫Redo buffer
- 当提交后,日志缓冲被刷入重做文件里.还有其他触发条件.
redo有2种
- undo产生的redo
- 数据块本身产生的redo
REDO写入过程 轮询 从上到下写,第一个写完后就写第二个,第二个写完后就写第三个,第三个写满后就写第一个.如果第一个还没有写入到磁盘,此时会报错,不允许覆盖. |
REDO-- 日志组 DISK A DISK B GROUP1里面有2个redo log,作用是冗余. LGWR同时写入一个组的log文件中.. |
REDO 和归档 LGWR写第一个组,第一个组写完后,就会写第二个组,然后ARCH会将第一个组归档成一个归档文件. |
REDO 的内容 ---改变向量 redo的内容并不是sql语句,他是放的一些改变,叫改变向量. 数据库恢复的时候并不是执行sql语句,而是一个物理的过程,是一个数据块的覆盖.是改变数据块的大小. 创建2个表 SQL> create table t1(x char(1)); SQL> create table t2(x char(2000)); 获取当前会话的sid: SQL> select distinct sid from v$mystat; 开三个会话 SQL> select a.sid,b.name,a.value from v$sesstat a,v$statname b where a.statistic#=b.statistic# and b.name='redo size' and sid in(475,241); 表1中字符长度为1,表2长度为2000,所以他产生的redo更多一些. 所以redo里面保存的不是sql语句,也不是插入的数据值,只是和数据块改变的大小/多少有关系. SQL> create table t1(x char(1)); Table created. SQL> create table t2(x char(2000)); Table created. SQL> select distinct sid from v$mystat; SID ---------- 475 SQL> select a.sid,b.name,a.value from v$sesstat a,v$statname b where a.statistic#=b.statistic# and b.name='redo size' and sid in(475,241); SID NAME ---------- ---------------------------------------------------------------- VALUE ---------- 241 redo size 0 475 redo size 27280 SQL> col name for a10; SQL> select a.sid,b.name,a.value from v$sesstat a,v$statname b where a.statistic#=b.statistic# and b.name='redo size' and sid in(475,241); SID NAME VALUE ---------- ---------- ---------- 241 redo size 0 475 redo size 27280 这两个会哈的redo size不一样大,我们quit退出,重新进一下 SQL> select a.sid,b.name,a.value from v$sesstat a,v$statname b where a.statistic#=b.statistic# and b.name='redo size' and sid in(475,241); SID NAME VALUE ---------- ---------- ---------- 241 redo size 0 475 redo size 0 同时向2张表插入数据 SQL> select a.sid,b.name,a.value from v$sesstat a,v$statname b where a.statistic#=b.statistic# and b.name='redo size' and sid in(475,241); SID NAME VALUE ---------- ---------- ---------- 241 redo size 2668 475 redo size 672 |
REDO --undo 的redo |
Oracle重做日志REDO的更多相关文章
- Oracle重做日志恢复数据模拟实验
一 系统环境: 1.操作系统:oracle Linux 5.6 2.数据库: Oracle 11g 二 Oracle 重做日志的作用: [模拟介质恢复] 1. 关闭数据库归档模式: [oracle@t ...
- Oracle重做日志和日志挖掘
重做日志-Redo log 首先给出参考资料: 1.Oracle官网-Managing the Redo Log 为什么需要redo log 内存中数据修改后,不必立即更新到磁盘---效率 由日志完成 ...
- Oracle重做日志文件
一.联机重做日志的规划管理 1.联机重做日志 记录了数据的所有变化(DML,DDL或管理员对数据所作的结构性更改等) 提供恢复机制(对于意外删除或宕机利用日志文件实现数据恢复) 可以被分组管理 11 ...
- 初识oracle重做日志文件
转自 http://blog.csdn.net/indexman/article/details/7746948 以下易容翻译自oracle dba官方文档,不足之处还望指出. 管理重做日志文件 学习 ...
- ORACLE重做日志小结
1.Redo log特点 重做日志以磁盘I/O为主,将数据库操作记录到日志文件.(磁盘I\O性能有可能成为瓶颈) 每个实例只有一个活动的LGWR(log writer)进程,至少有两个日志组(logf ...
- oracle重做日志文件硬盘坏掉解决方法
rman target/ list backup; list backup summary; 删除数据库数据文件夹下的log日志,例如/u01/app/oracle/oradata/ORCL下的所有后 ...
- oracle 重做日志
原创转载请注明出处 重做日志:记录数据库数据的变化(DDL,DML) 重做日志组:由一个或者多个完全一样的重做日志文件组成,如果一个日志组有多个日志文件,后台进程LGWR会把事务变化写到同一个日志组的 ...
- 修改oracle重做日志文件大小
创建3个新的日志组 SQL> ALTER DATABASE ADD LOGFILE GROUP 4 ('/u01/app/oracle/oradata/orcl/redo06.log') SIZ ...
- ORACLE - 管理重做日志文件
ORACLE重做日志文件用于在数据库崩溃等情况下用于恢复数据,默认情况下为三个文件redo01.log/redo02.log/redo03.log,文件组循环使用,在录入与更新操作比较多的应用中,日志 ...
随机推荐
- self.navigationItem.titleView 不居中显示的问题
自定义一个AUIView, AUIView * v=[AUIView new]; self.navigationItem.titleView = v; 在AUIView类内重写 setFrame - ...
- Memcache应用场景介绍,说明[zz]
转于:http://www.cnblogs.com/literoad/archive/2012/12/23/2830178.html 面临的问题 对于高并发高访问的 Web应用程序来说,数据库存取瓶颈 ...
- PHP下用Memcache 实现消息队列
Memcache 一般用于缓存服务.但是很多时候,比如一个消息广播系统,需要一个消息队列.直接从数据库取消息,负载往往不行.如果将整个消息队列用一个key缓存到memcache里面, 对于一个很大的消 ...
- 设计模式_CallBack
一.基本概念 if you call me, i will call back 什么是回调函数 回调函数(callback Function),顾名思义,用于回调的函数. 回调函数只是一个功能片段, ...
- 反射学习1、反射机制的介绍和基本的API的使用
关于动态语言: 一般而言,开发者社群说到动态语言,大致认同的一个定义是:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”.从这个观点看,Perl,Python,Ruby是动态语言,C+ ...
- wordpress之备份与恢复数据
备份:mysqldump -u root -p wordpress > "d:/wordpress.sql" 恢复:mysql -u root -p < "c ...
- CSRF学习笔记之CSRF的防御【00x4】
referer 验证 根据HTTP协议,在http请求头中包含一个referer的字段,这个字段记录了该http请求的原地址.通常情况下,执行转账操作的post请求www.bank.com/trans ...
- centos 6.5 安装mysql 5.7.21 community
Step1: 检测系统是否自带安装mysql # yum list installed | grep mysql Step2: 删除系统自带的mysql及其依赖命令: # yum -y remove ...
- CI框架整合微信公共平台接口
#CI框架控制器 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /*** CI框架整合微信 ...
- SpringBoot启动过程原理
最近这两年springboot突然火起来了,那么我们就来看看springboot的运行原理. 一.springboot的三种启动方式: 1.运行带有main方法的2.通过命令 Java -jar命令3 ...