日期:2014-05-16  浏览次数:20868 次

oracle 执行truncate操作后,block块中数据有没有被清空
oracle执行truncate语句后,高水位线与索引重置,不触发任务delete触发器,想问一下:原来存储该表数据的block块中数据有没有被清除?
------解决方案--------------------
truncate 后不需要处理hwm,块清空了
------解决方案--------------------
DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

若使用了DROP STORAGE(缺省), 除了已指定的MINEXTENTS,其它EXTENT 重新分配NEXT_EXTENT 设置MINEXTENTS 之后的EXTENT,High-Water Mark 复位指向表中的第一个BLOCK。 使用REUSE STORAGE 保留表的使用空间 ,保留原来的扩展,但不合并; HWM(高水位)的位置RESET 到第一个BLOCK。 当使DROP STORAGE时将缩短表和表索引,将表收缩到最小范围,并重新设置NEXT 参数。 REUSESTORAGE 不会缩短表或者调整NEXT 参数。另外一个区别是,用reuse storage可以减少对表及数据字典的锁定时间,特别是大表常这样做,余下和DEALLOCATEUNUSED 来逐步回收空间。Truncate 语句缺省情况(缺省情况为drop storage)下空间释放到 minextents个 extent, 除非使用reuse storage (如果使用reuse storage,那么这些删除之后留下的空间会被保持);Truncate 会将高水线复位(回到最开始)。 
------解决方案--------------------
http://hi.baidu.com/bjn_wuming/item/6e2e59e1422b01b42e140b63 具体详见这个网址,有你想要知道的