首页 > 数据库技术 > 详细

db2 表空间降高水位(v9.7及以后版本)

时间:2021-06-08 13:45:32      阅读:41      评论:0      收藏:0      [点我收藏+]

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"

db2 表空间降高水位(v9.7及以后版本)

原文:https://www.cnblogs.com/dahaoran/p/14861967.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!