关于DB2表空间高水位线居高不下的问题解决

       最近数据库size猛增,不是用户数据大,而是IBM commerce电子商务系统的某个自带表的大小已经达到了26G,reorg都能搞出active log full的错误来,面对“虚高”的数据库,有必要清理下没用的数据。
       1,系统表的数据清理,已经有亿万级的数据,所以采取import清空表,在这之前先把需要的数据export出来。注意表间的依赖关系。
       2,表清理完毕后,db2pd -d db -tablespace 2去看看,果然usable page增多,但HWM还是原来的居高不下,大家都知道,高水位线导致备份和恢复需要的表空间增多,所以有必要lower HWM。
       3,reorg table可能是最快的方法,但是一开始不管reorg几次都没有用。没办法,用dart看下。
          db2dart mall /dhwm /tsi 2 
         发现中间有很多的empty extent,但最后的extent却被占了,是表的LOB数据。
      4,reorg不能降低水位线有两个原因:IBM官方的说法是
         This operation may not be successful in lowering the high water mark, however, if the high water mark is being held by a Space Map Pages (SMP) extent that cannot be moved by REORG commands.
       还有种情况就是像现在的case,是被lob数据占了最后的extent,但一般的reorg是不会对lob操作的。所以在reorg的时候要加option  LONGLOBDATA
        LONGLOBDATA
    Long field and LOB data are to be reorganized.
    This is not required even if the table contains long or LOB columns. The default is to avoid reorganizing these objects because it is time consuming and does not improve clustering. However, running a reorganization with the LONGLOBDATA option on tables with XML columns will reclaim unused space and thereby reduce the size of the XML storage object.
        5,又重新跑了遍reorg,果然水位线急速下降,接近used page。(记得要用list tablespaces show detail激活,让DB2自己重新计算)期间会出现pendfreepage,那是reorg借用的,最后会还给系统的。
        6,备份了下数据库,果然瘦身了。

你可能感兴趣的:(db2,表空间高水位)