Oracle delete truncate drop 的区别

1.delete/truncate只删除数据不删除表,索引的结构。drop将删除表的结构依赖的index/constrain/trigger,依赖于该表的procedure/function将保留,但是变为invalid状态;

2.delete是dml,写rollbacksegement,可回滚,速度慢,事务提交之后才生效。在9i满足undo_retention条件下可使用flashback。一次性大批量数据的delete可能导致回滚段急剧扩展从而影响到数据库,慎用,触发triggertruncate/dropddl,隐式提交,不写rollbacksegment,不能回滚,速度快。9i不能使用flashback,不触发trigger

3.delete不影响表所占用的extentHWM保持原位置不动,即使删除的是最靠近HWM的数据。delete其实也可以释放空间,但是不降低HWMdeleteblock的空闲空间达到pct_used,就可以重用。truncate缺省情况下将空间(表和索引)释放到minextentsextent,除非使用reusestoragetruncate会将高水线复位(回到最开始)drop将表所占用的空间全部释放,segment不存在,无所谓HWM的概念;

Oracle高水位(HWM)

http://blog.youkuaiyun.com/tianlesoftware/archive/2009/10/22/4707900.aspx

4.truncate/drop的对象必须是本模式下的,或者被授予dropanytable的权限,但dropanytable权限不能truncate/dropsys的表。delete的对象必须是本模式下的,或者被授予deleteonSCHEMA.tabledeleteanytable的权限,但deleteanytable权限不能deletesys的表;

5.不能truncate一个带有enable外键的表,不管表里有没有数据,如果要truncate,首先要disable外键或者删除外键(drop外键的表肯定是删除了外键)。不能drop一个带有enable外键的表,不管表里有没有数据,如果要drop,首先要删除外键,或者直接用droptableTABLE_NAMEcascadeconstraints;级联删除外键。delete可以。

转载自网络

------------------------------------------------------------------------------

Blog:http://blog.youkuaiyun.com/tianlesoftware

网上资源:http://tianlesoftware.download.youkuaiyun.com

相关视频:http://blog.youkuaiyun.com/tianlesoftware/archive/2009/11/27/4886500.aspx

DBA1群:62697716();DBA2群:62697977

<!--EndFragment-->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值