获取数据库的大小
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来消除差异。