最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Oracle教程:Redowrite触发的四种情况

来源:动视网 责编:小采 时间:2020-11-09 11:28:33
文档

Oracle教程:Redowrite触发的四种情况

Oracle教程:Redowrite触发的四种情况:当DBWn需要写入一个或多个块的high RBA ,并且high rba超出了on-disk RBA时,从Oracle 8i开始DWBn将这些块放入延迟队列并且post 1、当LGWR空闲的时候,会每隔3秒检查一次是否有从redo buffer写入redelog中的数据,如果有,一个后台进程就会自动
推荐度:
导读Oracle教程:Redowrite触发的四种情况:当DBWn需要写入一个或多个块的high RBA ,并且high rba超出了on-disk RBA时,从Oracle 8i开始DWBn将这些块放入延迟队列并且post 1、当LGWR空闲的时候,会每隔3秒检查一次是否有从redo buffer写入redelog中的数据,如果有,一个后台进程就会自动


当DBWn需要写入一个或多个块的high RBA ,并且high rba超出了on-disk RBA时,从Oracle 8i开始DWBn将这些块放入延迟队列并且post

1、当LGWR空闲的时候,会每隔3秒检查一次是否有从redo buffer写入redelog中的数据,如果有,一个后台进程就会自动的执行将其写入

2、当有进程要从redo buffer中分配空间时,会先计算redo buffer中已经占用的空间,如果该空间大于_log_io_size这个参数值,并且此时的LGWR处于空闲状态,便会被激活执行后台写。_log_io_size的默认值是redo buffer大小的三分之一,从8.0开始,,_log_io_size 的上限值是1M,和其他的hidden参数一样,如果没明确的设置,在X$KSPPSV视图中查出的值为0

3、当一个事物commit时,会产生一个commit标志在redo流中,在redo buffer中的log包括commit标志写入硬盘之前,这个事物是不可恢复的,因此在给用户返回类似‘Commit complete’之前,必须等待LGWR将redo buffer中写入硬盘,在commit后会激活LGWR并且sleeps on a log file sync wait with a timeout of 1 second。为了避免等待

可以将_wait_for_sync 参数设置成false,但是这样就不能保证已经commit的的事物实例失败时可以恢复。

_log_io_size 和 _wait_for_sync 都是隐藏参数,可以通过下面的sql查看其值

需要注意的是在回调语句中的commit并不会等待LWGR写入,例如存储过程中可能会有n个commit操作,但只有当药返回给用户执行结果的时候才会等待LWGR写入,即只会sync最后一个commit操作。

一个SGA变量(kcrfshsb, according to bug 182447)是用来确定最大的需要同步的log block号,当LGWR处于激活的状态过程中即正在像disk中写时,几个不同的实例事物执行commit操作,kcrfshsb 变量记录了需要同步的最高块号,这些commit会全部写入disk中在一次redo write中,称为group commit

4、当DBWn需要写入一个或多个块的high RBA ,并且high rba超出了on-disk RBA时,从Oracle 8i开始DWBn将这些块放入延迟队列并且post LGWR来同步最高的RBA,但是不会等待,DBWn会继续执行其他的不需要延迟的写,在8i以前,DBWn会sleep发生a log file sync wait。

更多Oracle相关信息见Oracle 专题页面 ?tid=12

文档

Oracle教程:Redowrite触发的四种情况

Oracle教程:Redowrite触发的四种情况:当DBWn需要写入一个或多个块的high RBA ,并且high rba超出了on-disk RBA时,从Oracle 8i开始DWBn将这些块放入延迟队列并且post 1、当LGWR空闲的时候,会每隔3秒检查一次是否有从redo buffer写入redelog中的数据,如果有,一个后台进程就会自动
推荐度:
标签: 触发 oracle write
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top