关于单独存放BLOB文件表空间的问题

rexyudl 2009-03-10 02:37:16
为什么无论删除或者上传之后并且已经COMMIT,表空间的大小还没有变呢?
跟ORACLE的回收机制有关系吗?
...全文
360 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
rexyudl 2009-03-12
  • 打赏
  • 举报
回复
顶起来
rexyudl 2009-03-11
  • 打赏
  • 举报
回复
一楼和三楼的兄弟说的东西,我都明白.
BLOB的表空间已经分配好了.假如说是2G.
每次上传BLOB文件,ORACLE都会分配SEGMENT存储文件.这个时候2G空间的实际使用量变化了.但是你删除了这个BLOB文件,分配的空间不会被回收!使用的空间还是那么大,下次上传文件只要没有超过已经分配的这个量,它老是不变。只有超过这个SEGMENT的最大值,表空间使用量才会跟着增加!

那位达人能给我讲讲,这块的东西我了解的比较少!这个是和ORACLE的回收机制有关吗?
zcs_1 2009-03-10
  • 打赏
  • 举报
回复
BLOB在数据库中单独存放于一个segment中,其segment_name可以从表user_lobs中对应表名和列名得到

select segment_name from user_lobs where table_name = yourtable and column_name = blobname;

删除blob不会使段收缩,所以segment不会有变化,但是插入数据会使segment增大,具体的segment大小可以从视图
user_segments中得到

SELECT bytes/1024/1024 FROM USER_SEGMENTS WHERE segment_name=blobsegmentname;

表空间包含了一个个的segment,如果其中所有的segment大小之和达到了表空间的大小,表空间没有多余的空间容纳数据了,这时就到扩大表空间,
可以增加数据文件,也可以扩大文件的大小。另外表空间也可以认为自动扩展的,在有空间需要时它会自动扩展,不用手工修改。
rexyudl 2009-03-10
  • 打赏
  • 举报
回复
表空间的大小已经设置好了,比如说是2G,每次上传或者删除之后.已经应用的大小是应该会变的,但是它竟然不变化!
sleepzzzzz 2009-03-10
  • 打赏
  • 举报
回复
你想表达什么意思呢?

如果不对表空间进行扩展或增加数据文件,其大小是不会改因为插入入数据或delete数据而改变的.
dba_free_space查看空闲空间.

3,494

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧