as400上如何实现不停止对外服务进行数据清理,释放表空间

发布于 2022-08-22 19:36:37 字数 276 浏览 15 评论 9

由于生产机上的一些表空间巨大,可能有5亿多条记录。现在要求将其前2亿条记录清空,释放其硬盘空间,并且不能停止对外服务,如何实现。
并且要求编写一个定时任务,每天定时清理数据到备份库下,以防止生产库下的表空间过大,使其保持不变。
各个大哥帮帮忙,想个方案给小弟,感谢不尽。
最好有源代码的例子,我好仿照实现。呵呵

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

软糖 2022-09-05 10:09:20

如果是通用平台的db2,好像使用插入null空,还不需要回收硬盘空间。这东西有风险,得自己先考虑好。不然数据丢了,怎么办

神回复 2022-09-05 09:36:51

回复 8# insmile

    不是,就是用生产表做的,所以效率很重要

说好的呢 2022-09-05 09:32:52

结息不是用备份的表啊?

好倦 2022-09-05 08:39:13

你要和BOSS说, 再不买硬盘,我们都要被灭了.

離殇 2022-09-05 08:33:00

修改Reuse deleted records  为*YES  以后让系统自动重用。
这个会影响批量数据的写入操作的效率吧,我害怕季度结息时候,批量程序的效率会下降,boss会灭了我的

和我恋爱吧 2022-09-05 05:48:40

回复 2# digitalchina

    谢谢,这个和应用的关系很大,要冒风险的的,而且我怕影响到后面的季度结息程序的效率,你的方法我会好好考虑的,辛苦大侠了,

相权↑美人 2022-09-05 05:01:38

回复 3# tomroom

    谢谢你的答复,和ibm工程师的答案近似,但是他们也不敢随意做实施,有很大的风险

颜漓半夏 2022-09-02 22:25:18

本帖最后由 tomroom 于 2010-05-06 14:02 编辑

默认PF参数DELETE 记录不会自动释放已经删除的记录所占空间,要运行RGZPFM释放空间,

运行RGZPFM 个人建议如下:
1) 先DSPPF 查看这个表有多少可以删除的空间 比如 Total deleted records  占多少
Total number of members  . . . . . . . . . :      
Total number of members not available  . . :      
Total records  . . . . . . . . . . . . . . :      
Total deleted records  . . . . . . . . . . :      
Total of member sizes  . . . . . . . . . . :      
后面操作建议先在测试环境测试下
2) 如果deleted records 超过IBM 建议的15%,可以考虑执行RGZPFM ,具体要看你操作系统版本V5R3 之后版本有可以在线运行RGZPFM压缩数据表,所谓在线运行还是会有锁不过是*SHRUPD类型锁,你要根据自己业务情况判断,在线运行RGZPFM压缩数据表会产生大量日志数据,如果你系统有HA软件比如MINIX 会对数据同步产生影响,
参考如下图llow cancel . . . . . . . . . . > *YES; Lock state . . . . . . . . . . . > *SHRUPD  ;Rebuild access paths . . . . . .   *YES    之前轻舟有过帖子
若是老版本操作系统没有以上在线运行选项,默认参数 RGZPMF 只能在所有用户都不访问该表,才能操作。

                      Reorganize Physical File Mbr (RGZPFM)            Level: 3
                                                                                
Type choices, press Enter.                                                     
                                                                                
Label  . . . . . . . . . . . . .                                               
Data base file . . . . . . . . . > &MBFILE       Name                          
   Library  . . . . . . . . . . . >   &MBLIB      Name, *LIBL, *CURLIB         
Member . . . . . . . . . . . . . > &MBNAME       Name, *FIRST, *LAST           
Key file:                                                                     
   Logical file . . . . . . . . . > *NONE         Name, *NONE, *FILE, *RPLDLTRCD
     Library  . . . . . . . . . .                 Name, *LIBL, *CURLIB         
   Member . . . . . . . . . . . .                 Name                          
Rebuild access paths . . . . . .   *YES          *YES, *OPTIMIZE, *NO         
Allow cancel . . . . . . . . . . > *YES          *NO, *YES                     
Lock state . . . . . . . . . . . > *SHRUPD       *EXCL, *EXCLRD, *SHRUPD      
                                                                                
3) 若这个表么有批量INSERT 数据操作 可以考虑CHGPF  修改Reuse deleted records  为*YES  以后让系统自动重用DELETE记录的空间,这个操作会降低批量INSERT 数据操作性能。

不弃不离 2022-08-29 03:42:24

本帖最后由 digitalchina 于 2010-05-07 02:27 编辑

我想到两种方法:
1 从系统角度考虑, 如果有HA或者热备系统, 把作业切换到热备系统,然后切回来.
  或者把PF COPY一下,用COPY的那份做删减, 再OVRDBF切换( 这个过程可能需要停应用)

2 给PF多建几个MEMBER , 每次把要删的数据移到另一个MEMBER , 然后CLRPFM清空指定的MEMBER.
应用要做修订,访问时须指定MEMBER, 这样也可提高效率.

以上所有操作都具有高度的风险,请谨慎!!!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文