Oracle中truncate与delete的区别以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
区别
在功能上 truncate是清空一个表的内容 它相当于delete from table_name
delete是dml操作 truncate是ddl操作 因此 用delete删除整个表的数据时 会产生大量的roolback 占用很多的rollback segments 而truncate不会
在内存中 用delete删除数据 表空间中其被删除数据的表占用的空间还在 便于以后的使用 另外它是 假相 的删除 相当于windows中用delete删除数据是把数据放到回收站中 还可以恢复 当然如果这个时候重新启动系统(OS或者RDBMS) 它也就不能恢复了!
而用truncate清除数据 内存中表空间中其被删除数据的表占用的空间会被立即释放 相当于windows中用shift+delete删除数据 不能够恢复!
truncate 调整high water mark 而delete不 truncate之后 TABLE的HWM退回到 INITIAL和NEXT的位置(默认)delete 则不可以
truncate 只能对TABLE delete 可以是table view synonym
TRUNCATE TABLE 的对象必须是本模式下的 或者有drop any table的权限 而 DELETE 则是对象必须是本模式下的 或被授予 DELETE ON SCHEMA TABLE 或DELETE ANY TABLE的权限
在外层中 truncate或者delete后 其占用的空间都将释放 lishixinzhi/Article/program/Oracle/201311/17545
分页:123