db2数据库一个大表45GB,如何快速清除其中一年前的数据(该表属于业务表,要尽可能的不影响业务)?

最好不要影响业务,如果非要影响业务,如何做到时间最小。显示全部

最好不要影响业务,如果非要影响业务,如何做到时间最小。

收起
参与132

查看其它 10 个回答topzgm的回答

topzgmtopzgm课题专家组软件架构设计师People's Bank of China

有一个简单有效的办法,步骤如下:
1)从45G大表导出需要的数据到del/ixf文件中: db2 "export to x1.ixf of ... select * from 大表y1 where 保留数据的过滤条件"。
2)把del/ixf文件加载到45G大表并且替换掉原来的数据:db2 "load from x1.ixf of ixf ...lobsinfile ... replace into 大表y1..."或者db2 "import from x1.ixf of ixf ...lobsinfile ... replace into 大表y1..."
该方法优点如下:
1)不影响业务。
2)不需要停应用。
3)耗用时间很短。
4)步骤很少。
5)不需要占用太多的日志磁盘空间。
6)没有table partition也能做。
7)核心业务系统都可以使用该办法。

银行 · 2018-01-10
  • 只要导出,必须停业务或者重命名原表吧? 不然导出、导入过程中产生的新数据怎么弄?
    2018-01-11
  • 一般来说,进行这样的数据清理工作都是在系统闲暇时间窗口进行的,例如银行系统的日终之后就没有写流量了。
    2018-01-11
  • hufeng719  hufeng719回复 topzgm
    我们这是钢铁生产行业,涉及钢材入库,发货等信息,生产不停,业务不能停
    2018-01-11
  • 1)根据我们的实践,"db2 load..."一亿多行记录,大概只需几分钟时间。 2)任何现实世界中的IT系统,都是存在只读不写的时间窗口的,在这个时间点上做是可行的,只是可能需要加班,比如夜深人静的时候。变通来解决问题。
    2018-01-11
  • 总会有个系统闲暇的时间
    2018-01-17

回答者

topzgm
软件架构设计师People's Bank of China
擅长领域: 数据库服务器存储

topzgm 最近回答过的问题

回答状态

  • 发布时间:2018-01-10
  • 关注会员:14 人
  • 回答浏览:8767
  • X社区推广