DB2 V10.5 降低表空間高水位 釋放磁盤空間

DB2表空間佔用很大磁盤空間,而數據實際並沒有那麼大,DB2刪除數據或drop表並不會釋放磁盤空間,所以要釋放磁盤空間 要降低表空間高水位

連接到數據庫:db2 connect to DB_NAME

  1. 查看DB2數據庫表空間信息:
  • db2 list tablespaces show detail
  • db2pd -tablespaces -db DB_NAME
  • db2 get snapshot for tablespaces on DB_NAME

確認表空間是系統管理(SMS),還是數據庫管理(DMS)的
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
DMS類型表空間是否爲自動存儲屬性:db2 get snapshot for tablespaces on DB_NAME ##Using automatic storage: yes/no
查看DMS表空間是否啓用了自動存儲:db2 get snapshot for tablespaces on DCDWDMZC
在這裏插入圖片描述
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。
查看文件系統磁盤空間使用情況df -hl ,可以發現磁盤空間使用率降低了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章