分享
 
 
 

oracle-触发redo写的几个条件

王朝oracle·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

主要有以下几个条件触发LGWR执行写操作:

1.超时(timeout)

当LGWR处于空闲状态时,它依赖于rdbms ipc message等待,处于休眠状态,直到3秒超时时间到。

如果LGWR发现有redo需要写出,那么LGWR将执行写出操作,log file parallel write等待事件将会出现。

启用10046事件,从LGWR跟踪日志中可以清楚的观察到这些事件:

WAIT #0: nam='rdbms ipc message' ela= 2999554 p1=300 p2=0 p3=0

WAIT #0: nam='rdbms ipc message' ela= 2999470 p1=300 p2=0 p3=0

WAIT #0: nam='rdbms ipc message' ela= 566819 p1=300 p2=0 p3=0

WAIT #0: nam='log file parallel write' ela= 115 p1=1 p2=2 p3=1

WAIT #0: nam='rdbms ipc message' ela= 45752 p1=213 p2=0 p3=0

WAIT #0: nam='log file parallel write' ela= 94 p1=1 p2=3 p3=1

WAIT #0: nam='rdbms ipc message' ela= 51762 p1=208 p2=0 p3=0

WAIT #0: nam='log file parallel write' ela= 91 p1=1 p2=1 p3=1

WAIT #0: nam='rdbms ipc message' ela= 29033 p1=200 p2=0 p3=0

WAIT #0: nam='log file parallel write' ela= 99 p1=1 p2=2 p3=1

WAIT #0: nam='rdbms ipc message' ela= 40293 p1=197 p2=0 p3=0

WAIT #0: nam='log file parallel write' ela= 87 p1=1 p2=1 p3=1

2.只要一个进程在log buffer中分配空间,已经使用的Log buffer的数量将被计算。如果使用的块的

数量大于或等于_log_io_size参数设置,那么将会触发LGWR写操作。

如果此时LGWR未处于活动状态,那么LGWR将被通知去执行后台写操作。

缺省的_log_io_size等于1/3 log buffer大小,上限值为1M,此参数在X$KSPPSV中显示的0值,意为缺省值。

也就是,LGWR将在Min(1M,1/3 log buffer size)时触发。注意此处的log buffer size是以log block来衡量的。

此值通常为512 bytes.

20:33:15 SQL @D:\GetHiddenParameter.sql

Enter value for par: log_io

old

14:

x.ksppinm like '%_&par%'

new

14:

x.ksppinm like '%_log_io%'

NAME

VALUE

ISDEFAULT ISMOD

ISADJ

------------------------------ ------------------------- --------- ---------- -----

_log_io_size

0

TRUE

FALSE

FALSE

Elapsed: 00:00:00.02

获得Oracle的隐含参数,参考如何获取Oracle的隐含参数

3.提交

当一个事物提交时,在redo stream中将记录一个提交标志。

在这些redo被写到磁盘上之前,这个事物是不可恢复的。所以,在事务返回成功标志给用户前,必须等待LGWR写完成。进程通知LGWR写,并且以log file sync事件开始休眠,超时时间为1秒。

Oracle的隐含参数_wait_for_sync参数可以设置为false避免redo file sync的等待,但是就将无法保证事务的恢复性。

20:46:02 SQL @D:\GetHiddenParameter.sql

Enter value for par: wait_for

NAME

VALUE

ISDEFAULT ISMOD

ISADJ

------------------------------ ------------------------- --------- ---------- -----

_wait_for_sync

TRUE

TRUE

FALSE

FALSE

注意,在递归调用(recursive calls)中的提交(比如过程中的提交)不需要同步redo直到需要返回响应给用户。因此递归调用仅需要同步返回给用户调用之前的最后一次Commit操作的RBA。

存在一个SGA变量用以记录redo线程需要同步的log block number。

如果多个提交在唤醒LGWR之前发生,此变量记录最高的log block number,在此之前的所有redo都将被写入磁盘。

这有时候被称为组提交(group commit).

4.在DBWR写之前

如果DBWR将要写出的数据的高RBA超过LGWR的on-Disk RBA,DBWR将post LGWR去执行写出。

在Oracle8i之前,此时DBWR将等待log file sync事件。

从Oracle8i开始,DBWR把这些Block放入一个defer队列,同时通知LGWR执行redo写出,DBWR可以继续执行无需等待的数据写出。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有