找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 249|回复: 1

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

[复制链接]
发表于 2009-3-11 02:54:10 | 显示全部楼层 |阅读模式 IP:江苏扬州
本文中通过详细步骤来讲解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会接后用户进程继续执行临时段的清理工作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 13:16 , Processed in 0.291694 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表