关于Delete与表空间的问题

IT动力 2007-01-29 09:03:50
我将一个表的的100多万条记录删除后,发现表空间的利用率并没有因此而减少.查了一些资料后了解到Oracle只是将这些行标记成了UNUSED.
现在想请教一下各位:
在我下次对该表进行INSERT操作时,Oracle是否会覆盖这些已被标记为UNUSED的空间?
谢谢!!!
...全文
510 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdsnhan 2007-01-30
  • 打赏
  • 举报
回复
楼主看一下truncate和delete的区别就明白了。
zgh2003 2007-01-30
  • 打赏
  • 举报
回复
Oracle有一个最高水位标记,这个标记就是当前表最大扩展段,形象点说就像一个水桶的固定容量,所不同的是表是由多个extents组成,每增加或扩展一个extent,这个水位标记往上移动一个高位,其以下的空间就是数据空间容量.当delete操作时,只是把数据删除了,但不能使这个水位标记下降,但truncate表后,这些空间都会得到释放.也就是会让水位标记降到初始extent位.
需要注意的是truncata是删除全表数据,而不能限制条件删除几条数据.

以上只是一个形象的解释以助于理解oracle表数据的存储机制,详细了解需要参考相关文档。
tgm78 2007-01-29
  • 打赏
  • 举报
回复
不会,delete不会回收空间,truncate可以回收空间

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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