楼主: kunlunzhiying

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

[复制链接]
论坛徽章:
5
茶鸡蛋
日期:2012-11-29 09:39:30蜘蛛蛋
日期:2012-12-21 13:30:352013年新春福章
日期:2013-02-25 14:51:24茶鸡蛋
日期:2013-02-27 13:45:02优秀写手
日期:2013-12-18 09:29:16
11#
发表于 2012-9-30 22:17 | 只看该作者
digdeep126 发表于 2012-9-30 21:15
按月分区:那么不管哪一年的1月份的数据都是在同一个区的,同理其它月份的数据也一样。这样的话,肯定不能 ...

我们这边都是一个月就是一个分区啊,比如201101、201102 ... 201201、201202,理解的不一样啊,看LZ的具体分区方法吧

使用道具 举报

回复
论坛徽章:
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
12#
 楼主| 发表于 2012-10-10 10:35 | 只看该作者
digdeep126 发表于 2012-9-30 21:19
至于undo的问题:1)可以分为12次来删除,一次删除2010年以前的一个月的数据。甚至可以再细分成更多的次数 ...

除过delete 还有更好的办法吗 ? 数据量比较大,我那100G 是举个例子,实际上远不止,我是在担心 delete时对系统资源消耗过大  undo回滚段 等
  求赐教

使用道具 举报

回复
论坛徽章:
74
双鱼座
日期:2015-11-07 19:09:58奥运会纪念徽章:皮划艇静水
日期:2016-09-06 18:21:46乌索普
日期:2016-10-27 18:36:03蒙奇·D·路飞
日期:2016-11-18 18:51:29
13#
发表于 2012-10-10 11:47 | 只看该作者
用plsql删,论坛有的

使用道具 举报

回复
论坛徽章:
2
ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19蜘蛛蛋
日期:2013-01-10 11:08:12
14#
发表于 2012-10-10 14:31 | 只看该作者
空间允许的话,建新表,改表名,改表名时业务需要停了。或者在线继续分区,每个分区表的数据按照月份分区,再drop掉。主意大家想,仅供参考。

使用道具 举报

回复
论坛徽章:
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
15#
 楼主| 发表于 2012-10-13 20:24 | 只看该作者
kunlunzhiying 发表于 2012-10-10 10:35
除过delete 还有更好的办法吗 ? 数据量比较大,我那100G 是举个例子,实际上远不止,我是在担心 delete时 ...

我没找着  能给说说吗  大师

使用道具 举报

回复
论坛徽章:
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
16#
 楼主| 发表于 2012-10-13 20:31 | 只看该作者
chwp 发表于 2012-10-10 11:47
用plsql删,论坛有的

你指的建新表  是将我需要的数据导出来 到新表里面,  然删除其他的吗?   没太明白 望赐教

使用道具 举报

回复
论坛徽章:
86
2015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11优秀写手
日期:2013-12-18 09:29:11日产
日期:2013-10-17 08:44:39马自达
日期:2013-08-26 16:28:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-23 16:55:51马上有房
日期:2014-02-19 11:55:14
17#
发表于 2012-10-15 09:13 | 只看该作者
如果是按照纯月份分区(1月、2月。。。12月)的话,删除分区的方式就不可行了。

删除2010年前的数据的话,应该是要删除的数据远大于要保留的数据吧?如果是这样,建议
CTAS一个新表,考虑到以后可能会有这样的需求,建议重新考虑分区规则,改为按月或按季度(带年份)分区,以便以后删除分区
RENAME表

如果觉得停机时间太长,也可以考虑使用pre built物化视图进行刷新,可以降低停机时间。

使用道具 举报

回复
论坛徽章:
74
双鱼座
日期:2015-11-07 19:09:58奥运会纪念徽章:皮划艇静水
日期:2016-09-06 18:21:46乌索普
日期:2016-10-27 18:36:03蒙奇·D·路飞
日期:2016-11-18 18:51:29
18#
发表于 2012-10-15 10:10 | 只看该作者
kunlunzhiying 发表于 2012-10-13 20:31
你指的建新表  是将我需要的数据导出来 到新表里面,  然删除其他的吗?   没太明白 望赐教

批量删除数据再提交,效率不高,是没有办法的办法
类似于
open cursor as select rowid from table where date=20120101;
while
  delete table where rowid=rowid;
  if 10000条 commit;

使用道具 举报

回复
论坛徽章:
6
双黄蛋
日期:2013-01-19 21:40:412013年新春福章
日期:2013-02-25 14:51:24双黄蛋
日期:2013-03-29 13:13:22马自达
日期:2013-07-30 12:48:55保时捷
日期:2013-09-23 22:22:27技术图书徽章
日期:2014-01-26 14:23:57
19#
发表于 2012-10-16 10:44 | 只看该作者
可以使用在线重定义,把需要的内容重建为中间表,在空闲时段做个同步就好了。

使用道具 举报

回复
论坛徽章:
11
授权会员
日期:2005-10-30 17:05:33ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44会员2007贡献徽章
日期:2007-09-26 18:42:10嫦娥
日期:2006-09-26 17:31:50生肖徽章:马
日期:2006-09-07 17:03:44生肖徽章:狗
日期:2006-09-07 10:14:30生肖徽章:鼠
日期:2006-09-06 21:17:11生肖徽章:兔
日期:2006-09-06 21:16:33ITPUB元老
日期:2006-08-24 11:59:54会员2006贡献徽章
日期:2006-04-17 13:46:34
20#
发表于 2012-10-17 14:11 | 只看该作者
一个分区一个分区的批量delete,或者不删。

使用道具 举报

回复

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

本版积分规则 发表回复

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