一、什么是REDO LOG REDOLOG文件是十分重要的文件,它记录了Oracle的所有变化,是数据库实例恢复机制中最为关键的组成部分。
sys@OCM> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------- ------------ --------------
1 1 49 52428800 512 1 YES INACTIVE 2701394 09-3ÔÂ -13 2711001 09-3ÔÂ -13
2 1 50 52428800 512 1 YES INACTIVE 2711001 09-3ÔÂ -13 2732482 10-3ÔÂ -13
3 1 51 52428800 512 1 NO CURRENT 2732482 10-3ÔÂ -13 2.8147E+14
sys@OCM> col member for a50
sys@OCM> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- -------------------------------------------------- ---
3 ONLINE /u01/app/oracle/oradata/ocm/redo03.log NO
2 ONLINE /u01/app/oracle/oradata/ocm/redo02.log NO
1 ONLINE /u01/app/oracle/oradata/ocm/redo01.log NO
二、REDO LOG的作用 1、记录ORACLE数据库的变化
2、可以避免数据提交后直接写入数据文件
3、实例恢复和介质恢复三、REDO LOG的块1、块的大小 (1)dbfsize redo01.log
(2)SELECT DISTINCT BLOCK_SIZE FROM V$ARCHIVED_LOG;
(3)SELECT MAX(LEBSZ) FROM X$KCCLE;
(4)日志文件头的内容
ALTER SESSION SET EVENTS 'immediate trace name redohdr level 10';
2、REDO的内容 (1)改变矢量(Change Vector)
(2)重做记录(Redo Record)
(3)一条插入的产生的日志
create table t5(id int,name varchar2(100));
select max(ktuxescnw * power(2,32)+ktuxescnb) from x$ktuxe;--[K]ernel [T]ransaction [U]ndo Transa[x]tion Entry
insert into t5 values(1,'AAAAAA');
commit;
select max(ktuxescnw * power(2,32)+ktuxescnb) from x$ktuxe;
alter system dump logfile '/u01/app/oracle/oradata/ocp/redo02.log' scn min 1694394 scn max 1693357;
四、和REDO LOG性能相关的组件 1、记录实例中的数据库变化
2、顺序存取
3、环状的缓冲区
4、LOG_BUFFER定义了缓冲区的大小
(1)9i以前,一般是3M
(2)在10g中ORACLE会自动调整它的值,他遵循这样一个原则,'Fixed SGA Size'+ 'Redo Buffers'是granule size 的整数倍
select * from v$sgainfo where name in ('Fixed SGA Size','Redo Buffers','Granule Size');
--在10.2.0.3 中Log Buffer 默认值是14M,在10.2.0.4中,默认值是15M
select * from v$version where rownum<2;
5、LGWR
(1)、LGWR写的具体过程:
①先尝试获取redo writing latch,确保其他process不会继续触发lgwr(这里可能会产生log file sync等待事件)
②获取redo allocation latch(public redo allocation latch),防止有新的change vector继续写入log buffer,造成LGWR无法确定应该写多少redo
③LGWR确定写的范围(从上次lgwr启动所写的最后一个日志块到这个时间点时的最后一个被使用的所有写满or未写满的日志块)此时前台process仍可以向这个范围内的redo block(buffer)写内容(从PGA写)所以lgwr不阻碍其它进程获得redo copy latch(即:不阻止其它进程向log buffer 中可用块中写change vector)
④确定redo block(buffer)后生成新SCN号
⑤LGWR释放redo allocation latch与redo writing latch
⑥LGWR需要等待 其它进程对要写入日志文件的block的更新操作完成(pga-log buffer的操作),通过判断日志block(buffer)上的redo copy latch是否都释放
⑦将第4步scn号copy到要写入logfile的log buffer的块头里,然后触发物理的写操作,将这些待写日志块写入redo file
(2)LGWR触发写日志的条件:
①LGWR每3秒钟
②commit;
③LOG_BUFFER写入的数量超过LOG BUFFER的1/3
④LOG BUFFER中有超过1M的数据
⑤DBWR写入数据文件之前,DBWR需要写入的数据的SCN大于LGWR记录的SCN,DBWR触LGWR写入(日志优先)
6、REDO LOG组 (1)Oracle循环使用REDO LOG组
(2)REDO LOG组的数量对数据库的影响
①日志切换等待
②系统由于等待日志切换而HANG住
(3)REDO LOG组的数量
①缺省3组(10g)
②根据实际需要设置
③增加日志组的数量对数据库性能无直接影响
④可在线添加日志组
alter database add logfile group 4 '/opt/oracle/oradata/dbtest/redo04_1.log' SIZE 100M
alter database drop logfile group 1;
alter system siwtch logfile;
7、REDO LOG组的镜像 (1)REDO LOG镜像的主要目的是加强REDO LOG的安全性
(2)镜像设置的原则
①同一个数据库中设置镜像的规则应该一致 --不同的日志组设相同的成员
②多个镜像文件应该存放在不同的VG或者文件系统上 --坏一个vg不影响数据库
③不同镜像最好能够分布在不同的磁盘上 --IO
④镜像的数量以一个为宜 --IO
(3)镜像对数据库性能的影响
①REDO LOG镜像会消耗较多的IO资源
②IO性能不佳的系统慎用
③小型写性能不佳的系统慎用
alter database add logfile member '/opt/oracle/oradata/dbtest/redo04_3.log' to group 4
alter database drop logfile member '/u01/app/oracle/oradata/ocp/redo01_2.log';
8、日志切换
(1)日志切换的场景
①当前日志文件满后
②ALTER SYSTEM SWITCH LOGFILE;
③ALTER SYSTEM ARCHIVE LOG CURRENT;--所有实例的当前日志
(2)日志切换的过程
①读控制文件,选择下一个日志文件,并清除控制文件中的相关记录。如果DBW进程正在进行日志切换检查点,或者ARCHn进程正在归档日志内容,那么LGWR会等待这些操作完成才进行日志切换工作。
②把当前没有存盘的所有LOG BUFFER都写入磁盘,然后把最后一个REDO记录的SCN写入LOG文件的头块中。完成这些操作后,LGWR关闭当前的日志文件。
③进行第二次读控制文件,把下一个日志文件的状态设置为CURRENT,老的日志文件修改为ACTIVE。当DBW完成日志切换检查点和归档操作后,这个日志文件的状态会被改为INACTIVE。
④打开新日志文件的所有成员(如果组中有超过1个成员),并在文件头中写入一个新的日志序列号和low SCN。然后修改SGA控制变量,允许生成REDO信息。要注意的是,因为写入文件头的信息包括文件编号,因此写文件头的操作不是并行操作,对于同组的不同成员,写入的数据不是完全一致的。
五、性能相关 1、REDO LOG文件的大小与日志切换
(1)日志切换对系统性能的影响
①日志文件切换时,系统将处于完全的等待状态
②日志文件切换过于频繁,会影响系统的性能
③日志文件切换时间过长,会严重影响系统的性能
(2)日志切换与日志文件的大小
①日志文件越小,日志切换越频繁
②日志文件越大,每个日志文件中包含的变化越多
③日志文件切换以10-30分钟为宜
④日志文件大小一般在100M-2000M之间
(3)问题场景
Thread 1 cannot allocate new log,sequence 69
Checkpoint not complete
current log#2 seq# 68 mem# 0:/oradata/bxdb/redo02.log
等待事件:
log file switch(checkpoint incomplete)
log file switch(archiving needed)
2、等待事件:log file sync
(1)问题场景
发出commit:
开始commit-->logfile sync等待开始--->lgwr开始-->lgwr完成(IO)-->logfile sync等待结束--commit完成
(2)解决方法:
①IO性能来解决这个问题:RAID 5--->RAID 1+0
②加大LOG BUFFER
③减少提交的次数
④把部分经常提交的事务设置为异步提交:ALTER SESSION SET COMMIT_WRITE = NOWAIT;
(3)nologging使用
表空间:1.nologgin,2.force logging
alter tablespace test3 nologging;
create table a(id int) tablespace test3; //test3-->nologging
alter tablespace test3 no force logging;
表:1.no force logging start 2.表本身no logging(alter table a nologging;) 3.使用append插入
insert /*+ append */ into test3 select * from t3;
*************supplemental
select supplemental_log_data_min,supplemental_log_data_pk from v$databae;
alter database add supplemental log data; --rowid
alter database add supplemental log data(primary key) columns; --primary
六、开启归档模式
SELECT log_mode FROM v$database;
ARCHIVE LOG LIST;
alter system set log_archive_dest_1 = 'LOCATION=/u01/app/oracle/archivelog3';
shutdown immediate;
startup mount;
alter database archivelog;
select dest_name,status,archiver,destination,log_sequence,reopen_secs,transmit_mode,process
from v$archive_dest; --归档路径及状态
select name,sequence#,registrar,standby_dest,archived,status from v$archived_log;--从控制文件中获得归档的相关信息
v$log_history --控制文件中日志的历史信息
v$archive_processes --归档相关的后台进程信息
select member,bytes/1024/1024 from v$log a,v$logfile b where a.group#=b.group#;
**********本博客所有内容均为原创,如有转载请注明作者和出处!!!**********
Name: guoyJoe
QQ: 252803295
Email: oracledba_cn@hotmail.com
Blog:http://blog.csdn.net/guoyJoe
ITPUB:http://www.itpub.net/space-uid-28460966.html
OCM:http://education.oracle.com/education/otn/YGuo.HTM
_____________________________________________________________
加群验证问题:哪些SGA结构是必需的,哪些是可选的?否则拒绝申请!!!
答案在:http://blog.csdn.net/guoyjoe/article/details/8624392
Oracle@Paradise 总群:127149411
Oracle@Paradise No.1群:177089463(已满)
Oracle@Paradise No.2群:121341761
Oracle@Paradise No.3群:140856036
分享到:
相关推荐
RAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和...
第七章:Redo Log Files的維護 第八章:Tablespaces and Data Files的管理 第九章:管理Rollback Segments 第十章:Tables 的管理 第十一章:Indexes的管理 第十二章:資料的載入 第十三章:Export and Import的...
1.5.1存储管理软件 1.5.2集群管理软件 1.5.3数据库管理软件 1.6本章小结 第2章 搭建类似生产环境的RAC 2.1搭建环境 2.1.1 RAC的物理结构 2.1.硬件环境 2.1.3软件环境 2.2搭建存储服务器 2.2.1安装...
·编辑控件支持中文整字删除、Undo、Redo ·编辑控件的滚动功能幅度变大,和VC一样 ·编辑控件支持文本拖拽 ·增加了Welcome页面,避免没有打开文件时编辑区的大面积灰色 ·支持多种“语法高亮”显示,目前支持C...
{支持各类数据库格式的查询,支持Undo 及 Redo 操作,可以保存任意中间结果 ,支持对任意结果的n次查询 支持查询结果导入excel表 支持多表查询操作} 需要 BDEskynet.exe 电子邮件系统(采用 HTTP DLL )WebSearch.exe ...
针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识...
针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识...
针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识...
第一章:日志管理 1.forcing log switches sql> alter system switch logfile; 2.forcing checkpoints sql> alter system checkpoint; 3.adding online redo log groups sql> alter database add logfile [group 4...
3. (选做)参考附件中的程序界面,完成一个具有上述功能的MFC程序(程序名自定,界面操作参考“资源管理器”);为复制、移动/换名、删除、新建这几个操作增加Undo/Redo功能(可参考实验1程序的图元命令类的设计) ...
实验内容 1、根据用户操作形成日志,包括两种日志 (1)REDO日志 (2)UNDO/REDO日志 2、设置系统故障,使用即时更新技术进行数据库恢复。 3、设置系统故障,使用推迟更新技术进行数据库恢复。 说明:2和3选作一个...
(七) 文件管理(STANDBY_FILE_MANAGEMENT) 6 当STANDBY_FILE_MANAGEMENT=AUTO时 6 当STANDBY_FILE_MANAGEMENT=MANUAL时 8 3,重命名数据文件 11 二、 物理Standby 11 (一) 创建物理Standby数据库 11 ...
1. 检查介绍 1.1 检查系统 1.2 检查范围 2. 硬件配置 2.1 主机配置 3. 系统配置 3.1 操作系统数据库相关要求补丁 3.2 硬盘可用空间 3.3 CPU 利用率 4. 数据库配置 ...4.13 回滚段管理 .....
第一章:日志管理 1.forcing log switches sql> alter system switch logfile; 2.forcing checkpoints sql> alter system checkpoint; 3.adding online redo log groups sql> alter database add logfile ...
目录 1 数据库的优化 2 概述 2 监控数据库的性能: 2 优化数据库磁盘I/O 2 建立和优化数据库文件的方针: 6 监控磁盘I/O的方法: 6 ...管理表的动态分配。 14 避免链接行。 错误!未定义书签。 优化索引存储参数。 14
oracle数据库的优化 数据库的优化 2 概述 2 监控数据库的性能: 2 优化数据库磁盘I/O 2 建立和优化数据库文件的方针: 6 ...管理表的动态分配。 15 避免链接行。 错误!未定义书签。 优化索引存储参数。
第四章:redo日志 1 第五章:归档日志 archivelog 第六章:日志挖掘 logminer 第七章:管理undo 第八章: 检查点 checkpoint 第九章:实例恢复机制 第二部分:Oracle存储架构 第十章: 数据字典和动态视图 第十一章...
对于数据库管理员来说不能仅寄希望于计算机操作系统的安全运行,而是要建立一整套的数据库备份与恢复机制。当数据库发生故障后,希望能重新建立一个完整的数据库,该处理称为数据库恢复。 Oracle数据库使用几种...
TODOS: 部署到AWS 按钮禁用效果 用于登录的自定义电子邮件模板 自定义电子邮件重定向检查您的... 进行新表演(通过管理员) 编辑效果信息(通过管理员) 提供绩效反馈(由法官决定) 编辑效果反馈(由法官决定)
第6章 Redo Buffer与Java池 第7章 SGA管理 第8章 PGA与排序 第9章 SQL调优 第10章 资料收集 第11章 存储空间管理 第12章 聚簇 第13章 索引组织表 第14章 重要的ORACLE特性 第15章 分区 第16章 实体化视图