关于LOB Segment 中pctversion的一些问题

[复制链接]
查看11 | 回复1 | 2015-3-6 11:57:31 | 显示全部楼层 |阅读模式
看到xzh2000 写的关于pctversion 及oracle document .
-------------
http://xzh2000.itpub.net/post/96/77393
lob字段默认是pctversion等到于10,意思是表lob字段所在的表空间需要预留10%的空间给lob的前映象使用,当表空间比较小时,用pctversion应该不会有大的问题,当表空间超过100g时,就需要预留10g,可能存在浪费空间的问题,比如每小时更新lob记录的频率增长不多,还要减去(当lob的内容小于4000字节时,lob的前映象保存在undo表空间)这部分,但如果该表空间增长到300g,就有30g的空间预留下来备用,导致较多的空间被浪费.所以,当您的LOB字段所在的表空间已经很大时,要注意pctversion参数要适当的调小,否则空间的浪费是相当的严重...
关于lob的retention参数,这个与undo表空间的undo_retention是一致的,如果你的lob更新较小,就可以通过修改undo_retention来调整lob前映象的失效时间,由于lob的retention参数是与undo_retention保持一致,所以修改undo_retention来说,一定要慎重,毕竟它将会影响库中所有lob字段的retention参数...
--------------
    比如一个lob tablesapce space达到了280 G , 它的EXTENT MANAGEMENT LOCAL UNIFORM SIZE 是 200M,Table中的定义都是lob pctversion 为 10 ,这时候操作给lob的undo 空间(或者是存储前镜像的空间)应该是 28 G,但是这时候 log segment 的 free space 没有28 G,  只有10G free空间,且每次进行操作数据量不足2G,undo 空间需求也最多在2G左右 .这时候 10G - 2G = 8G ,也还有8G free 空间用于数据存储。似乎也没有造成空间严重浪费 。 

不知道我的理解对不对,还是说 280 G 中存储前镜像的空间是 28 G,那么28G 空间预留下来备用(从lob segment 的free space中扣除),就不能作为他用 ?
回复

使用道具 举报

千问 | 2015-3-6 11:57:31 | 显示全部楼层
280比如你要做update,这时候需要额外的空间,如果剩余空间比10%大,那么最老的将被使用,否则扩展,lob对空间的浪费是巨大的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行