您当前的位置: 首页 > 数据库教程 > Oracle教程 > 处理Oracle数据库中一张有效的Drop大表

处理Oracle数据库中一张有效的Drop大表

作者:guanchaofeng 来源:不详 发布时间: 2009-04-06 15:06 点击:
本文中通过详细步骤来讲解Oracle数据库中有效的Drop表。 一、流程简介 1、先不直接使用Drop table命令,取而带之用带有REUSE STORAGE子句的Tuncate table命令。因为没有Extents要被回收,Trunate table命令执行很快,只是段的highwater mark简单的被调整到段

处理Oracle数据库中一张有效的Drop大表

  本文中通过详细步骤来讲解Oracle数据库中有效的Drop表。
  
  一、流程简介
  
  1、先不直接使用Drop table命令,取而带之用带有REUSE STORAGE子句的Tuncate table命令。因为没有Extents要被回收,Trunate table命令执行很快,只是段的highwater mark简单的被调整到段头的block上。
  
  2、使用带有KEEP子句的alter table命令逐渐的回收表的Extents,以减轻对Cpu的压力。
  
  二、举例说明
  
  假定有一个表名字为BIGTAB,系统的cpu资源很有限,根据过去的经验drop这样的一张表要花掉数天的时间。如下的操作就可以在不大量耗用cpu的情形下很有效的Drop这张大表。
  
  1. Truncate table, 使用REUSE STORAGE子句:
  
  SQL> TRUNCATE TABLE BIGTAB REUSE STORAGE;
  
  2. 如果要花费3天(72小时) 去drop这张表,可以把时间分散到6个晚上,每个晚上drop 1/3Gb数据.
  
  Night 1:SQL> ALTER TABLE BIGTAB DEALLOCATE UNUSED KEEP 1707M; (2Gb*5/6)Night 2:SQL> ALTER TABLE BIGTAB DEALLOCATE UNUSED KEEP 1365M; (2Gb*4/6)Night 3:SQL> ALTER TABLE BIGTAB DEALLOCATE UNUSED KEEP 1024M; (2Gb*3/6)Night 4:SQL> ALTER TABLE BIGTAB DEALLOCATE UNUSED KEEP 683M; (2Gb*2/6)Night 5:SQL> ALTER TABLE BIGTAB DEALLOCATE UNUSED KEEP 341M; (2Gb*1/6)Night 6:SQL> DROP TABLE BIGTAB;
  
  同样的方法也对LOB段适用:
  
  SQL> ALTER TABLE <table_name> MODIFY LOB (<lob_column>)DEALLOCATE UNUSED KEEP <value>M;
  
  三、其它需要注意的地方
  
  1、如果你不注意的已经执行了drop操作,那这种方法就不能再使用了,因为Drop table操作会首先把表段转化成临时段,然后开始清理临时段中的extents,即使Drop操作被中断了,Smon会接后用户进程继续执行临时段的清理工作。 

分享到:
本文"处理Oracle数据库中一张有效的Drop大表"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4