123
返回列表 发新帖
楼主: kunlunzhiying

[讨论] oracle 删除分区表 大表 100G

[复制链接]
论坛徽章:
0
21#
发表于 2012-10-17 16:15 | 只看该作者
看你的分区方案了,如果你采用的是按月范围分区,比如200901,200902....200911,20912, 201001,201002.... 依次递增
可以一次删掉一个月的分区的,两年的1月份数据不在同一个分区的。
删除一个月的分区       alter table table_name drop partition 200901
清除一个月的分区数据 ALTER TABLE table_name TRUNCATE PARTITION 200901;

如果你采用某个规则列表分区(按月列表分区) ,这就永远固定了就只有12个分区(1.2,3 ...11,12)
如果是这样建的分区,那已经不能按时间的先后顺序来删除分区了,也许只能采用delete了

使用道具 举报

回复
论坛徽章:
1
ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
22#
发表于 2012-10-17 16:43 | 只看该作者
楼主应该出来澄清一下,浪费大伙时间。

使用道具 举报

回复
论坛徽章:
22
ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:00马上加薪
日期:2014-10-21 18:48:25马上加薪
日期:2014-10-21 18:48:312015年新春福章
日期:2015-03-04 14:53:162015年新春福章
日期:2015-03-06 11:58:39沸羊羊
日期:2015-06-11 17:08:14巨蟹座
日期:2015-07-10 09:11:44天枰座
日期:2016-01-18 10:58:39秀才
日期:2016-02-18 10:08:14秀才
日期:2016-06-23 14:15:06
23#
发表于 2012-10-18 14:21 | 只看该作者
这么大量数据的delete是不行的。
1. 新建一张表,新建一个分区,把表设置为nologging;
2. 把需要的数据以create table as select * from ,或insert/*+append+*/ into select * from  ..(这样做生成的undo最少,楼主可以考虑一下每次insert 的数量生成的redohttp://blog.csdn.net/guogang83/article/details/7848974
3. 在新表上建索引(这一步一定要在操作2以后做,要不然还是会生成大量redo)
4. 将新表属性改为logging,drop table 原表名 purge
5. 将新表名改为为原表名。
http://blog.csdn.net/guogang83/article/details/8075367

使用道具 举报

回复
论坛徽章:
6
奥运纪念徽章
日期:2013-07-18 13:55:122014年新春福章
日期:2014-02-18 16:49:31马上有钱
日期:2014-02-18 16:49:31目光如炬
日期:2016-12-12 01:27:58目光如炬
日期:2016-12-25 22:00:00火眼金睛
日期:2017-01-03 01:13:18
24#
 楼主| 发表于 2012-10-21 22:46 | 只看该作者
sundog315 发表于 2012-10-15 09:13
如果是按照纯月份分区(1月、2月。。。12月)的话,删除分区的方式就不可行了。

删除2010年前的数据的话, ...

嗯 好 谢谢斑竹  问题差不多已解决。 方式与斑竹所说有些类似

使用道具 举报

回复
论坛徽章:
6
奥运纪念徽章
日期:2013-07-18 13:55:122014年新春福章
日期:2014-02-18 16:49:31马上有钱
日期:2014-02-18 16:49:31目光如炬
日期:2016-12-12 01:27:58目光如炬
日期:2016-12-25 22:00:00火眼金睛
日期:2017-01-03 01:13:18
25#
 楼主| 发表于 2012-10-21 22:47 | 只看该作者
chwp 发表于 2012-10-15 10:10
批量删除数据再提交,效率不高,是没有办法的办法
类似于
open cursor as select rowid from table whe ...

嗯 是个办法

使用道具 举报

回复
论坛徽章:
6
奥运纪念徽章
日期:2013-07-18 13:55:122014年新春福章
日期:2014-02-18 16:49:31马上有钱
日期:2014-02-18 16:49:31目光如炬
日期:2016-12-12 01:27:58目光如炬
日期:2016-12-25 22:00:00火眼金睛
日期:2017-01-03 01:13:18
26#
 楼主| 发表于 2012-10-21 22:48 | 只看该作者
meridian-line 发表于 2012-10-16 10:44
可以使用在线重定义,把需要的内容重建为中间表,在空闲时段做个同步就好了。

嗯 是个办法

使用道具 举报

回复
论坛徽章:
5
2011新春纪念徽章
日期:2011-02-18 11:43:33ITPUB官方微博粉丝徽章
日期:2011-06-29 13:52:50紫蛋头
日期:2011-07-11 13:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28茶鸡蛋
日期:2013-03-12 13:17:50
27#
发表于 2012-10-22 15:32 | 只看该作者
delete 会生成大量的归档文件,对性能来说不是特别好
对索引来说,频繁delete会造成很多空洞,查询性能也不好

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表