免费注册 查看新帖 |

Chinaunix

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

有关drop的讨论 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-31 13:22 |只看该作者 |倒序浏览
drop table tablename命令用来删一个表的,但数据并不一下子删除,只是在数据字典中将其标记为删除状态

做个实验

1。将要drop表的表空间设置成只读
2。执行truncate或delete都会提示,表空间只读。而drop表空间中的某个表则操作正常

这说明做drop操作的时候,只是将表从数据字典中删除而已,并未删除真正数据

我的疑问是:drop 是否删除数据?如果有删除数据,是什么时候清理?

论坛徽章:
0
2 [报告]
发表于 2006-07-31 13:53 |只看该作者
不删除数据,但是空间可被其他object覆盖使用

论坛徽章:
0
3 [报告]
发表于 2006-07-31 13:54 |只看该作者
drop只是打标记。通过recycle bin,可以恢复被删除的表。若要真正删除数据,最好用truncate table

论坛徽章:
0
4 [报告]
发表于 2006-07-31 15:24 |只看该作者
不好意思,对truncate 与 drop 是否可以这样理解:
drop 将表删除,对应的extent全部变为可用.但对文件不进行操作.
而truncate 则是将所有的extent 除 init extent全部变为可用.即将高水位变为0.
但我不理解的是如果表空间是local manage,那么drop table 也应该会对表空间进行修改,为何在表空间改为
只读时还可以操作,回去做个实验看看,

论坛徽章:
0
5 [报告]
发表于 2006-07-31 15:45 |只看该作者
drop .. 只是對 data dictionary 元數據進行操作﹐從 seg$,tab$,idx$ 等中刪除相應的數據。而這些數據是在是存放在 system tablespace 的﹐所以即使是 table data 所屬的 tablespace 是 read only ﹐因為這些數據的更新是在 system tablespace 上面的﹐所以能夠操作..

當 drop table 時﹐這個表原來所占用的 extent 也會通過 uet$ 和 fet$ 中相應資料的更新來完成空間的釋放。從而達到能被重復使用..

truncate table 不能操作﹐其實 truncate table 本身也不會對表中內部數據進行更新﹐但它會更新塊頭中的
信息﹐如 hwm 等。所以在 read only 不能進行這個操作..

论坛徽章:
0
6 [报告]
发表于 2006-07-31 23:47 |只看该作者
drop table/truncate table都是进行一些数据字典的操作, truncate 还会修改segment header..

实际的数据block都不会进行清理,, 愿意与文件系统类似, 使得我们无法通过数据字典信息定位以前的数据就可以了, 将那些需要释放的资源重新放置到free pool中, 重新被分配使用,, 在下一次使用到对应block的时候对该block进行格式化处理..

论坛徽章:
0
7 [报告]
发表于 2006-08-02 13:05 |只看该作者
原帖由 dtsjs 于 2006-7-31 15:24 发表
不好意思,对truncate 与 drop 是否可以这样理解:
drop 将表删除,对应的extent全部变为可用.但对文件不进行操作.
而truncate 则是将所有的extent 除 init extent全部变为可用.即将高水位变为0.
但我不理解的是如 ...


实验很简单的。如

tt1 在表空间   tt_sapce中

alter tabelspace  tt_sapce  read only

drop table tt1 ;

执行成功没任何问题

而truncate table tt1 和 delete from tt1 就不行了

truncate 不占用回滚段,直接清理
delete   占用回滚段,比较也慢


通常清理大表的时候,我都是

truncate table tt1;  --查询数据字典,那部分占用的空间已收回了
drop table tt1;

论坛徽章:
0
8 [报告]
发表于 2006-08-02 13:08 |只看该作者
原帖由 zhang_yong88 于 2006-7-31 15:45 发表
drop .. 只是對 data dictionary 元數據進行操作﹐從 seg$,tab$,idx$ 等中刪除相應的數據。而這些數據是在是存放在 system tablespace 的﹐所以即使是 table data 所屬的 tablespace 是 read only ﹐因為這些數據 ...

hwm 是干嘛的?  

论坛徽章:
0
9 [报告]
发表于 2006-08-02 13:09 |只看该作者
原帖由 lzhome 于 2006-7-31 13:54 发表
drop只是打标记。通过recycle bin,可以恢复被删除的表。若要真正删除数据,最好用truncate table


recycle bin 怎么用,可否告知

是个好工具哦

论坛徽章:
0
10 [报告]
发表于 2006-08-02 13:24 |只看该作者
回7楼:不用先truncate再drop,直接drop即可,效果是一样的
回8楼:hwm high water marker
回9楼:Recycle Bin,10g才有

[ 本帖最后由 doni 于 2006-8-2 13:25 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP