Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2767238
  • 博文数量: 389
  • 博客积分: 4177
  • 博客等级: 上校
  • 技术积分: 4773
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-16 23:29
文章分类

全部博文(389)

分类: Oracle

2016-04-06 22:41:26

                                          Oracle Direct Path Read和Fast Object Checkpoint

       ORACLE使用Direct Path Read(以下简称DPR)的原因主要是防止物理读对buffer cache的泛
洪,所以一般情况下很少使用这种方式来读取数据,常见的原因有表大于buffer cache的5%,
并行,对temporary段的读等.第一种方式我在以前的文章中有介绍,感兴趣的朋友可以参考相关的
链接.

     ORACLE在做DPR之前会对将要执行的对像做一次对像级别的checkpoint,因为direct path read
读取的数据是直接从物理磁盘中读取的,所以需要保证物理磁盘中数据是最新的.比如磁盘中数
据块的版本是T1,而数据块在buffer cache中经过修改后的版本是T2,在T3的时候会话A发布一个DPR,
这个时候把所有在buffer cache中该对像小于T3的块都要写到磁盘上,使会话A读取到的数据是一
个最新的版本.

  当使用对像级别的checkpoint,就需要请求enqueue来进行保护,防止多个会话同时发布该会话
在ORACLE中就会出现 enq: KO - fast object checkpoint,我们做10046跟踪时可以发现该等待事件经
常位于DPR事件之前.

WAIT #139797776941200: nam='enq: KO - fast object checkpoint' ela= 6586 name|mode=1263468550 2=65596 0=1 obj#=-1 tim=511462571686
WAIT #139797776941200: nam='direct path read' ela= 172 file number=1 first dba=100049 block cnt=15 obj#=93511 tim=511462572413
WAIT #139797776941200: nam='direct path read' ela= 116 file number=1 first dba=100064 block cnt=16 obj#=93511 tim=511462572600
WAIT #139797776941200: nam='direct path read' ela= 48 file number=1 first dba=100080 block cnt=16 obj#=93511 tim=511462572767
WAIT #139797776941200: nam='direct path read' ela= 41 file number=1 first dba=101504 block cnt=16 obj#=93511 tim=511462572870

所以我们在AWR中看到DPR事件经常也会伴随着'enq: KO - fast object checkpoint'等待事件的出现.

阅读(4040) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~