暂无图片
Redo log file 大小分配问题
我来答
分享
杨久直
2019-07-02
Redo log file 大小分配问题

oracle 数据库的logbuffer 包含 shared redo strand

假如logbuffer 大小为200M,CPUcount为64,redologfile大小为 512M

即有4个shared redo strand,每个strand大小为50M。

当logbuffer 开始写入 redolog中时。

会先在logfile中分配出200M的空间,每个strand有50M。

当其中一个strand写满时,剩余的312M是怎么分配呢?

是再一次分配200M每个strand都有50M?

还是就分配50M给先写满的strand?

我是参照文章理解的,不知道我理解是不是就有问题。

文章标题,链接如下

Master Note: Troubleshooting Redo Logs and Archiving (文档 ID 1507157.1)

https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=280011502707369&id=1507157.1&displayIndex=1&_afrWindowMode=0&_adf.ctrl-state=19swtxvkgl_745#aref_section25

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
Moone

可参考Archived redolog is (significant) smaller than the redologfile. (文档 ID 1356604.1)的算法说明:

1、logfile大小对unfill的logfile空间并无影响,只是浪费的空间比例不同;

2、小的logfile可能导致一份strand写完就需要switch,比如:

128CPU(128/16=8strands,每个16MB)128MB logbuffer、100MB logfile,这样logfile就被分成对应8份(每份12.5MB)

这样logfile在剩余(7*16M)就需要切换,因为logfile没有更多空余空间满足strand需求。很可能归档日志只写入10%(基本新日志稍有事务写入就切换了!);

3、同样的1GB的logfile也会在空余7*16M时产生切换,但是之前能满足8*16MB的空间会被写满,所有使用率是(1024-7*16)/1024=90%

--因此你那种情况是会根据 strand的个数逐步分配的,但是最后8个分配后就将用尽logfile空闲空间,只要1个strand写入将会产生切换。归档日志有7*16M的空白。


image.png


暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏