li
  当前位置:主页 > 性能优化 > 文章内容
li
oracle性能调优:管理oracle日志之Oracle日志运行机制
来源: www.ixdba.net  作者: IXDBA.NET官方    时间:2008-04-30   阅读:63  
本文章共2111字,分2页,当前第1页,快速翻页:
 

理解Oracle的日志机制


• Oracle的日志是用来记录用户对数据库的改变,这样,当出现服务器硬件故障或者用户错误而丢失数据时,可以通过重做这些日志来恢复已提交的事务,Oracle日志机制包含以下组件:
Ø 日志缓存 SGA的一部分,用于缓存服务器进程产生的日志,包括DML和DDL;
Ø LGWR进程 这个后台进程负责将日志缓存的数据写到联机日志文件,每个实例只有一个;
Ø 数据库检查点 检查点用于同步数据文件和日志文件,一个检查点事件的完成,代表在这个事件开始之前发生的所有对数据文件的改变都已实际记录到了数据文件,数据库在这个时间点是一致的,在实例恢复的时候,只有在最后一个检查点之后的日志才需要重做;
Ø 联机日志文件 用于存放从日志缓存中写出的日志数据,每个数据库最少需要两个日志文件,当前日志文件填满以后,发生日志切换,然后才可以继续写下一个日志文件;
Ø 日志归档 LGWR写满所有组的联机日志文件以后,会回头再写第一个组的日志文件,在非归档模式下,被重用的日志文件中的日志会被丢弃,在归档模式下,日志文件被重用前会被ARC0进程复制到归档日志文件;
• 一些可选的日志机制,如归档和Standby,因为附加的I/O会降低系统的性能,同时提供了可靠的灾难恢复能力,不建议因这些性能的下降而关闭生产系统的归档功能。

调整日志缓存


• 日志缓存的管理机制可以类似理解成一个漏斗,日志数据不断地从漏斗上方加入,然后偶尔打开漏斗下方的开关将加入的数据清空,这个开关就是LGWR进程,为了日志缓存有空间容纳不断加进来的日志数据,LGWR在下面列出的任何一个条件下都会执行写出日志缓存的操作:
Ø 应用程序发出Commit命令时;
Ø 三秒间隔已到时;
Ø 日志缓存三分之一满时;
Ø 日志缓存达到1M时;
Ø 数据库检查点发生时;
• 测量日志缓存的性能 通过服务器进程放置日志条到日志缓存时发生等待的次数和时间来测量;
Ø Select Name, Value
From V$sysstat
Where Name In ('redo entries', 'redo buffer allocation retries',
'redo log space requests');
redo entries 服务器进程放进日志缓存的日志条的总数量;
redo buffer allocation retries 服务器放置日志条时必须等待然后再重试的次数;
redo log space requests LGWR进程写出日志缓存时等待日志切换的次数;

Select Retries.Value / Entries.Value "Redo log Buffer Retry Ratio"
From V$sysstat Entries, V$sysstat Retries
Where Entries.Name = 'redo entries'
And Retries.Name = 'redo buffer allocation retries'
这个查询用于计算日志缓存重试率,这个比率应该小于百分之一;
Ø Select s.Username, Sw.Wait_Time, Sw.Seconds_In_Wait, Sw.State
From V$session_Wait Sw, V$session s
Where Sw.Sid = s.Sid And Sw.Event Like '%log buffer space%';
这个查询用来显示哪些会话的LGWR正在进行写等待;
State有四个取值:WAITING(会话正在等待),WAITED UNKNOWN TIME(等待时间未知),WAITED SHORT TIME(等待时间小于百分之一秒),WAITED KNOWN TIME(等待时间已知,为wait_time栏位所示的时间);
Ø Statspack中有两个地方存有与日志缓存性能相关的数据:
实例命中率(Instance Efficiency Percentages)中的Redo NoWait%,这个值与日志缓存重试率之和等于1;
实例活动统计(Instance Activity Stats)中的redo entries, redo buffer allocation retries, redo log space requests;

• 改进日志缓存的性能


改进日志缓存的性能就是减少或者消除服务器进程读取日志缓存及放置日志条到日志缓存时发生的等待,可以从下面两个方面入手:
Ø 增大日志缓存



阅读更多内容1 · 2 · 下一页>>


  上一篇: 阿里巴巴的DBA成长之路   下一篇: oracle性能调优:管理oracle日志之...
li
 §相关评论  
 热点文章

·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 编辑推荐
·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 相关篇章
·阿里巴巴的DBA成长之路
·如何选择合适的Oracle优化器
·oracle 性能调优:调整SGA之Java池...
·oracle 性能调优:调整SGA之大池的...
·oracle 性能调优:调整SGA之改进共...
·oracle 性能调优:调整SGA之测量共...
·oracle 性能调优:调整SGA之配置共...
·oracle 性能调优:调整SGA之共享服...
·oracle 性能调优:调整SGA之共享服...
·oracle 性能调优:调整数据缓存之...
·oracle性能调优:管理oracle日志之...
·oracle性能调优:管理oracle日志之...
·成为高效能DBA的七个必须习惯
·oracle性能调优:管理oracle日志之...
·Oracle分区表及分区索引
·在AIX环境下Oracle 9i的性能调整
·系统表空间IO错误 数据损坏处理案...
·ORA-01578: ORACLE data block c...
·如何查看和清除oracle无用的连接...
·ORA-16057: DGID from server no...
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接