Truncate表,可以删除一个表里的说有数据,和delete相比,由于delete语句是DML语句,需要对表里的数据加锁,消耗undo表空间,而且如果是处于归档状态的话并且,产生重做记录,因此delete命令需要消耗较多的资源,执行较大的表来说尤其如此,这时候我们都会使用truncate截断表命令。
和delete命令不同,truncate是一个DDL命令,这样一旦执行,事务将无法回滚。将更新数据字典,将数据字典里相关的数据予以删除,然后将表的数据块全部释放,并且将表的HWM下降到最低,但是,在我们处理很大的表的时候,如果处理的表占巨大的空间,在truncate去释放表的数据块的消耗是巨大的,在这个过程中对处理的表是不能访问。
在Oracle提供一种方案,尽量来减小truncate大表是对系统的影响,我们可以加上 reuse storage, 这样通知处理表的时候,在更新完数据字典以后,并不马上释放所有的数据块,HWM也进行更新,下降到低水位,然后用 deallocate unused keep xxM在系统比较空闲的时候,来释放数据块。
例如:
SQL>truncate table testuser.all_datas reuse storage;
SQL>truncate table testuser.all_datas deallocate unused keep 300M
SQL>truncate table testuser.all_datas deallocate unused keep 200M
SQL>truncate table testuser.all_datas deallocate unused keep 100M
SQL>truncate table testuser.all_datas deallocate unused keep 0M
当最后到0M的时候,并不会真的把所有的表的数据块释放,而命令里所说的释放的是没有使用到的数据块。
分享到:
相关推荐
Oracle_授权审计表Truncate权限
SQL语句中----删除表数据drop、truncate和delete的用法,对你爱不完
truncate表恢复,包含了相应的操作步骤以及脚本。遇到紧急情况,很实用哦!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
PRM DUL for oracle恢复被truncate截断掉的表 Oracle DBA神器:PRM灾难恢复工具,Schema级别数据恢复。PRM For Oracle Database – schema级别oracle数据库数据恢复特性 ,PRM即ParnassusData Recovery Manager是...
Oracle_审计表_sys.aud$_授权给用户Truncate权限
【表恢复】无备份情况下,truncate表恢复 2012-11-19 13:15:29 分类: Linux 1、 表是否能成功恢复,取决于被truncate了的表所占用的数据块是不是被新的段(表、索引等)所重用,如果被重用就无法完成这样的恢复了,看...
Truncate 不会逐个清除用户数据块上的数据,而仅仅重置数据字典和元数据块上的...也就是说,此时,基本数据表并未破坏,而是被系统回收,等待被重新分配—因此,要恢复被truncate的数据,需要及时备份所在的数据文件。
因自己前段时间因truncate一张表无法找回,且数据超过60W,平常的企业软件超过1W收费,故整理此内容,希望和我遇到同样问题的新手有帮助
truncate误操作恢复方法集合truncate误操作恢复方法集合truncate误操作恢复方法集合
TRUNCATE与 DELETE区别,比较两个的不同的特点
truncate,delete,drop的异同点
gdul 工具恢复被truncate 表 示例
NULL 博文链接:https://steve-111.iteye.com/blog/750326
Laravel开发-crawl-truncate 当twitter或facebook crawl bot访问时截断页面源
sql中 truncate 和 delete 有什么区别
实现在oracle使用truncate吴删数据的恢复
sql之truncate、delete与drop区别
主要介绍了Oracle给用户授权truncatetable的实现方案,非常不错,具有参考借鉴价值,需要的朋友可以参考下
PostgreSQL 中 TRUNCATE TABLE 用于删除表的数据,但不删除表结构。 也可以用 DROP TABLE 删除表,但是这个命令会连表的结构一起删除,如果想插入数据,需要重新建立这张表。 TRUNCATE TABLE 与 DELETE 具有相同的...