免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4553 | 回复: 1
打印 上一主题 下一主题

[数据库] oracle 11g用户向表中插入数据,所在表空间文件大小不变???为什么 [复制链接]

论坛徽章:
1
天蝎座
日期:2014-10-18 18:48:57
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-22 20:15 |只看该作者 |倒序浏览
实验环境说明:
版本:oracle 11gR2。
1.用户HR创建表T, 并向T中插入数据。
2.hr所在表空间为TEST,文件为/u01/oracle/oradata/test01.dbf. TEST表空间创建时文件大小设为20M。autoextented off。

数据如下图:




可以看到,hr用户的segment大小为16.5M。但是表空间中文件大小仍然是19M可用。(dba_data_files.user_bytes)。

一下来自11g联机文档:
USER_BYTES        NUMBER                 The size of the file available for user data. The actual size of the file minus the USER_BYTES
                                               value is used to store file related metadata.

user_bytes是可用大小。bytes是文件总大小。那么hr的segment为16.5M。此时user_bytes应给是3.5M左右才对啊,为什么仍然是19M


问题2:
还有个问题想请高手解答一下:当用户insert不commit时。oracle为用户分配segment对吗??我试验时是这样的结论。但是有个问题,当insert时不是先将数据存到buffer cache中吗,等DBWR进程写入到磁盘时才需要磁盘空间吗,为什么insert之后马上就分配了磁盘空间????

亲高手指点小弟一下,感激不尽。。

论坛徽章:
0
2 [报告]
发表于 2014-04-23 13:38 |只看该作者
segment 是由扩展出来的许多extents组成的,这些extents又是有块组成的,所有块中不一定都有数据(未插入的空闲块、已经删除了数据的块等等),所以这样计算出来的bytes大小不一定准确
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP