DB2查看对象大小

获取数据库的大小
db2 => call get_dbsize_info(?,?,?,0)

  Value of output parameters
  --------------------------
  Parameter Name  : SNAPSHOTTIMESTAMP - 执行快照的时间戳
  Parameter Value : 2016-12-28-04.19.55.548279

  Parameter Name  : DATABASESIZE - 数据库的大小(bytes),是每个表空间的(used_pages * page_size)的和
  Parameter Value : 195665920

  Parameter Name  : DATABASECAPACITY - DMS表空间,(usable_pages * page size),对于SMS表空间,SUM(SMS container size + file system free size per container),如果多个SMS表空间在同一个文件系统上定义,那么文件系统剩余空间只计算一次。
  Parameter Value : 4299636736

  Return Status = 0

获取DMS表空间的大小
db2 => select tbsp_name,tbsp_type,tbsp_content_type,sum(tbsp_total_size_kb)/1024 as total_mb, sum(tbsp_used_size_kb)/1024 as used_mb,sum(tbsp_free_size_kb)/1024 as free_mb,tbsp_page_size as page_size from sysibmadm.tbsp_utilization where tbsp_type <> 'SMS' group by tbsp_name,tbsp_type,tbsp_content_type,tbsp_page_size order by tbsp_name

TBSP_NAME          TBSP_TYPE  TBSP_CONTENT_TYPE TOTAL_MB             USED_MB              FREE_MB              PAGE_SIZE  
------------------ ---------- ----------------- -------------------- -------------------- -------------------- -----------
IBMDB2SAMPLEREL    DMS        LARGE                               32                    7                   24        8192
IBMDB2SAMPLEXML    DMS        LARGE                               32                   11                   20        8192
SYSCATSPACE        DMS        ANY                                160                  152                    7        8192
SYSTOOLSPACE       DMS        LARGE                               32                    0                   31        8192
USERSPACE1         DMS        LARGE                               32                   14                   17        8192

  5 record(s) selected.

db2 =>
对于SMS表空间,无法通过list tablespaces或者管理视图查看使用大小,由于每个对象占用一个文件,可以考虑计算SMS表空间容器文件的总大小。
只需要确保表空间容器所属的文件系统有足够的空间即可。
对于自动存储管理的表空间,只要自动存储路径有足够的空间,当表空间满了以后,DB2就会自动扩展。


获取表的大小
db2 => select (data_object_p_size + index_object_p_size + long_object_p_size + lob_object_p_size + xml_object_p_size) as total_p_size from sysibmadm.admintabinfo where tabschema='DB2INST1' and tabname='EMPLOYEE' with ur

TOTAL_P_SIZE        
--------------------
                1024

  1 record(s) selected.

db2 =>

L_SIZE逻辑大小,是实际的数据占用大大小, P_SIZE物理大小,是分配的空间的大小
比如从一个表中删除了数据,但是表占据的空间并不会被释放,当新的数据插入时,仍然会使用这些空间。所以可能 L_SIZE < P_SIZE,可以通过reorg来消除差异。



请使用浏览器的分享功能分享到微信等