oracle执行truncate语句后,高水位线与索引重置,不触发任务delete触发器,想问一下:原来存储该表数据的block块中数据有没有被清除?oracle

解决方案 »

  1.   

    truncate 后不需要处理hwm,块清空了
      

  2.   

    和同事讨论过,有人认为只是高水位被重置,以后添加新数据时,覆盖原来block块中数据;我个人认为truncate执行后,block块中数据也被清空,但不会把删除记录日志保存,不能恢复,大家有谁对这个了解的,帮忙确认一下,多谢!
      

  3.   

    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 会将高水线复位(回到最开始)。 
      

  4.   

    http://hi.baidu.com/bjn_wuming/item/6e2e59e1422b01b42e140b63 具体详见这个网址,有你想要知道的