网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>数据库技术>>Oracle技术>>Oracle开发>查看文档  
  redo copy latch未命中率并不需要调整     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:34次  录入:管理员--2008-04-16  
 

【赛迪网-it技术报道】redo copy latch未命中率通常不是问题,并且通常并不需要调整,但是理解redolatches是如何使用是有必要的。

redo latches主要用在重做产生上,但是也与log file sync有关联。

重做产生

一个逻辑原子数据库改变通常有两个以上物理块改变组成。并且对于大多数改变,必须有一个相应的改变至少到一个回滚段块。在改变数据库块前,进程必须在每个包含受影响的数据库块的当前模式影像的缓冲上得到一个缓冲锁,并且准备一个change vectors集代表想要的改变。在change vectors集应用到数据库块之前,他们必须以一个重做条目被拷贝到重做流中。

必须采用redo allocation latch在日志缓冲中分配空间。该latch保护用来跟踪日志缓冲块使用和释放的sga变量。

分配的空间数量需要为组成那个逻辑数据库改变的全部change vectors,并且如果重做条目跨越一个/多个日志块,则还需要加上每个日志块头的16个字节的额外开销。

但是,在得到redo allocation latch前,进程必须先得到redo copy,因为必须使用其拷贝日志条目到日志缓冲。redo copy用来指示一个进程正在拷贝重做到日志缓冲,并且那个lgwr在写目标重做日志块到磁盘前需要等待拷贝完成。

大多数情况下使用非等待模式获得redo copy latch,因为进程可以使用它们中的任何一个保护其拷贝到日志缓冲中。其会首先尝试得到它最后保持的copy latch。如果失败,进程将会轮回得到其他的copy latch。如果使用非等待模式尝试获得其它copy latch都失败了,那么将会使用等待模式得到最后一个copy latch。

一旦得到了redo copy latch和redo allocation latch,将会在重做日志缓冲中分配空间,然后redo allocation latch 将会被释放并且change vectors将会从进程pga的临时缓冲拷贝到日志缓冲。

一旦拷贝完成,change vectors将会被应用到受影响的数据库块,重做条目被标记为有效,然后进程释放redo copy latch。如果分配的空间使用超过了_log_io_size参数的设置,或者重做流中包含了提交标记符,此时进程可能需要唤醒lgwr并通知刷新日志缓冲。为了确保lgwr不会不必要的被唤醒,进程将采用redo writing latch检查lgwr是否active或者已经被唤醒。然后释放redo writing latch。

lgwr使用redo latches的机制

获得redo latches不仅仅与重做产生和log file sync有关,同时它们也被lgwr用来写重做到日志文件上。当lgwr被唤醒的时候,其首先得到redo writing latch更新sga变量指示其active状态,以避免其他进程不必要的唤醒lgwr。如果没有被唤醒,lgwr将获得redo allocation latch确定是否有重做可写。如果没有,在启动rdbms ipc message前,将重新得到redo writing latch指示其不再active。

如果有任何重做可写,lgwr将会为redo copy latches预计latch恢复区域以确定重做缓冲中是否有任何不完整的拷贝需要写。如果有,lgwr将在lgwr wait for redo copy上沉睡,并且在需要的copy latches被释放后被唤醒。

lgwr用来得到redo writing latch,redo allocation latch和redo copy latches花费的时间的和累计在redo writer latching time统计中。

在每次写完成后,lgwr必须再次得到redo allocation latch更新饱含日志缓冲基磁盘块的sga变量。使用这种机制高效的释放日志缓冲块,并可以重用。

redo latches的调整

通常仅在redo allocation latch上的等待模式未命中率很高或者redo copy latch上的非等待模式很高时,才考虑调整redo latch。

redo allocation

在每个实例中只有一个redo allocation,并且不能并行使用。通常也没有办法减少latch保持的延迟。dba能做的通常只是减少latch上的负载。最重要的是确保lgwr不能过分活跃,并且dbwn不能过渡频率的检查点最近的改变。

在应用程序级别,主要频繁的commit,避免select for update和before行触发器,以及最小化redo的产生。

redo copy

在oracle 8.1下,lgwr自身是不会在redo copy latch上沉睡的,在这些latch上的沉睡指示并行性的程度超过了latch支持的并行度。在这种情况下, redo copy latch可以使用 _log_simultaneous_copies参数增加,但是不能超过32的限制。

总的来说,除非产生的重做最小化了并且redo allocation已经调整过了,否则不应该调整redo copy latch。同时也应该检查latch持有者的cpu短缺问题。

 
 
上一篇: 遇到ora-12535问题后应当采用哪些方法解决    下一篇: 如何在相对空闲的rac实例中强制自动切换
  相关文档
oralce数据库定时执行存储过程的设置步骤 01-31
怎样解决cpu高度消耗(100%)的数据库问题 (1) 11-23
在oracle中添加用户 赋权 修改密码 解锁 05-29
“顺序事务”与“只读事务”的实际应用 03-06
巧用bulk collect实现cursor批量fetch 03-05
排除cache影响手动强制刷新buffer cache 05-27
教你快速的解决oracle缓冲区忙等待事件 11-15
解析Oracle数据库内在索引和参数的调整 09-01
讲解oracle数据库10g新特性中的闪回查询 05-12
教你正确认识oracle数据库的结构组件 11-15
在UNIX服务器上设置Oracle8i全文检索 05-13
如何使用pl/sql读取数据库中的blob对象 03-27
循序渐进讲解oracle 9i数据库的迁移过程 05-14
细化解析Oracle 10g STATSPACK的新功能 08-05
如何用dbms_rowid获取rowid的详细信息 03-26
数据库管理员日常工作中必备的sql列表 (1) 05-05
教你在windows环境下kill掉oracle的线程 06-04
Linux平台下数据库资源使用情况分析 04-11
在不安装oracle客户端的情况下进行系统移植 07-18
Oracle数据库SPFILE文件特点及具体操作 06-03
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息