DB2表空间占用很大磁盘空间,而数据实际并没有那么大,DB2删除数据或drop表并不会释放磁盘空间,所以要释放磁盘空间 要降低表空间高水位
确认表空间是系统管理(SMS),还是数据库管理(DMS)的 DMS类型表空间是否为自动存储属性:db2 get snapshot for tablespaces on DB_NAME ##Using automatic storage: yes/no 查看DMS表空间是否启用了自动存储:db2 get snapshot for tablespaces on DB_NAME 2. DB2降低表空间高水位HWM 查询表空间使用情况:db2 "select char(TBSP_NAME,20) as TBSP_NAME, TBSP_USABLE_PAGES, TBSP_USED_PAGES, rtrim(100*TBSP_USED_PAGES/TBSP_USABLE_PAGES)||‘%‘ as USED_RATE from sysibmadm.SNAPTBSP_PART where TBSP_USABLE_PAGES>0 order by TBSP_NAME,DBPARTITIONNUM" 查询筛选出所有高水位标记大于已使用页的表空间:db2 "SELECT char(TBSP_NAME,20) as TBSP_NAME, RECLAIMABLE_SPACE_ENABLED,TBSP_USED_PAGES, TBSP_FREE_PAGES, TBSP_PAGE_TOP from TABLE (MON_GET_TABLESPACE(‘‘,-2)) AS t where t.TBSP_PAGE_TOP > t.TBSP_USED_PAGES" RECLAIMABLE_SPACE_ENABLED 是表空间的 可回收存储器 属性;如果值是1,表示空间可回收。
表空间降低高水位操作 DMS自动存储表空间(DMS with AutoStorage) 直接运行 REDUSE MAX 来最多的释放空闲空间 :db2 ALTER TABLESPACE USERSPACE1 REDUCE MAX 这个语句执行后就提示成功了,但是表空间水位并没有立刻降低,有个表空间数据块移动的过程(几个小时或以上)
据说DMS非自动存储表空间(需要先运行 LOWER HIGH WATER MARK 子句降低高水位标记,再运行 REDUCE 子句释放表空间):先执行ALTER TABLESPACE USERSPACE1 LOWER HIGH WATER MARK 然后ALTER TABLESPACE USERSPACE1 REDUCE (ALL CONTAINERS 100 M) 监视表空间USERSPACE1移动情况:db2 "SELECT varchar(TBSP_NAME, 20) AS TBSP_NAME, NUM_EXTENTS_MOVED, NUM_EXTENTS_LEFT, TOTAL_MOVE_TIME from TABLE(MON_GET_EXTENT_MOVEMENT_STATUS(‘USERSPACE1‘,-2)) AS t" 表空间USERSPACE1 降低高水位标记,释放空闲空间;当前显示已经移动了 1113 个数据块,还剩下2931028个数据块,共花费 64634ms 的时间。如果在非移动状态下,所有值为 -1。 https://www.ibm.com/support/pages/lowering-high-water-mark-tablespace 查看文件系统磁盘空间使用情况df -hl ,可以发现磁盘空间使用率降低了
1、查看DB2数据库表空间信息
db2 list tablespaces show detail
db2pd -tablespaces -db DB_NAME
db2 get snapshot for tablespaces on DB_NAME
db2 "SELECT varchar(tbsp_name, 16) as tbsp_name,RECLAIMABLE_SPACE_ENABLED,TBSP_USED_PAGES,TBSP_FREE_PAGES, TBSP_PAGE_TOP
from TABLE (MON_GET_TABLESPACE(‘‘,-2)) AS t where t.TBSP_PAGE_TOP > t.TBSP_USED_PAGES"
使用查询语句筛选出了所有高水位标记大于已使用页的表空间。查看 RECLAIMABLE_SPACE_ENABLED 这一栏,这是表空间的“可回收存储器”属性。如果是 1,则表示可回收。没有“可回收存储器”属性的表空间不能使用子句来减小或者降低高水位标记。
2、分类
自动存储表空间
ALTER TABLESPACE REDUCE 10 M
DMS 非自动存储表空间
ALTER TABLESPACE LOWER HIGH WATER MARK
ALTER TABLESPACE REDUCE (ALL CONTAINERS 10 M)
3、监视表空间 TBS1 移动
db2 "SELECT varchar(tbsp_name, 20) as tbsp_name, NUM_EXTENTS_MOVED,
NUM_EXTENTS_LEFT, TOTAL_MOVE_TIME
from TABLE(MON_GET_EXTENT_MOVEMENT_STATUS(‘TBS1‘,-2)) AS t"
4、验证高水位标记的降低
db2 "SELECT varchar(tbsp_name, 16) as tbsp_name, BSP_USED_PAGES,
TBSP_FREE_PAGES,TBSP_PAGE_TOP
from TABLE (MON_GET_TABLESPACE(‘TBS1‘,-2)) AS t"
原文:https://www.cnblogs.com/dahaoran/p/14861967.html