方法一:查询CONTAINER_UTILIZATION或SNAPCONTAINER管理视图
SELECT * FROM SYSIBMADM.CONTAINER_UTILIZATION
WHERE TBSP_ID=7
ORDER BY DBPARTITIONNUM,CONTAINER_ID;
SYSIBMADM.CONTAINER_UTILIZATION视图提供了表空间的Container和空间使用情况等信息,其实这个管理视图是LIST TABLESPACE CONTAINERS命令的SQL版本。
SELECT * FROM SYSIBMADM.SNAPCONTAINER
WHERE TBSP_ID=7
ORDER BY DBPARTITIONNUM,CONTAINER_ID;
SYSIBMADM.SNAPCONTAINER视图与CONTAINER_UTILIZATION视图提供的信息基本相同,除了表空间使用情况的单位没有从字节转换成KB之外,其他看不出啥区别。这个管理视图是GET SNAPSHOT FOR TABLESPACES ON database-alias 命令的SQL版本。实际上,IBM的官方文档上解释,CONTAINER_UTILIZATION的数据是基于SNAPCONTAINER的信息。
IBM DB2 9.5与该视图相关的官方文档请看这里。
方法二:执行list tablespace containers或get snapshot for tablespaces命令
$db2 list tablespace containers for 5
Tablespace Containers for Tablespace 5
Container ID = 0
Name = /dev/rlvtmp_n00_01
Type = Disk
$db2 list tablespace containers for 5 show detail
Tablespace Containers for Tablespace 5
Container ID = 0
Name = /dev/rlvtmp_n00_01
Type = Disk
Total pages = 1064960
Useable pages = 1064928
Accessible = Yes
get snapshot for tablespaces on database-alias的信息是最丰富的,额外提供了表空间bufferpool、直接读写、table space map等信息,可以据此发现表空间可能存在的性能问题。但是需要注意的是,通过命令的方式,只能看到当前所连接节点的相关信息,如果是多节点(DPF)环境,默认为0节点。如果要看其它节点的情况,则需要指定DB2NODE来显示指定连接节点,或者通过db2_all来在所有节点上运行相关命令。
方法三:执行db2pd -tablespaces命令
$db2pd -db zjbi2 -alldbp -tablespaces 7
Database Partition 1 — Database ZJBI2 — Active — Up 5 days 18:18:32
Tablespace 7 Configuration:
Address Type Content PageSz ExtentSz Auto Prefetch BufID BufIDDisk FSC NumCntrs MaxStripe LastConsecPg Name
0x0700000039F3E1A0 DMS Large 32768 24 No 192 2 2 Off 4 0 23 TBS_CDR
Tablespace 7 Statistics:
Address TotalPgs UsablePgs UsedPgs PndFreePgs FreePgs HWM State MinRecTime NQuiescers
0x0700000039F3E1A0 63897600 63897504 25619832 0 38277672 25644504 0×00000000 0 0
Tablespace 7 Autoresize Statistics:
Address AS AR InitSize IncSize IIP MaxSize LastResize LRF
0x0700000039F3E1A0 No No 0 0 No 0 None No
Containers:
Address ContainNum Type TotalPgs UseablePgs StripeSet Container
0x0700000039F3E840 0 Disk 15974400 15974376 0 /dev/rlvcdr_n01_01
0x0700000039F3E9A0 1 Disk 15974400 15974376 0 /dev/rlvcdr_n01_02
0x0700000039F3EB00 2 Disk 15974400 15974376 0 /dev/rlvcdr_n01_03
0x0700000039F3EC60 3 Disk 15974400 15974376 0 /dev/rlvcdr_n01_04
Database Partition 2 — Database ZJBI2 — Active — Up 5 days 18:18:32
Tablespace 7 Configuration:
Address Type Content PageSz ExtentSz Auto Prefetch BufID BufIDDisk FSC NumCntrs MaxStripe LastConsecPg Name
0x0700000039F3E1A0 DMS Large 32768 24 No 192 2 2 Off 4 0 23 TBS_CDR
Tablespace 7 Statistics:
Address TotalPgs UsablePgs UsedPgs PndFreePgs FreePgs HWM State MinRecTime NQuiescers
0x0700000039F3E1A0 63897600 63897504 25694472 96 38202936 25719240 0×00000000 0 0
Tablespace 7 Autoresize Statistics:
Address AS AR InitSize IncSize IIP MaxSize LastResize LRF
0x0700000039F3E1A0 No No 0 0 No 0 None No
Containers:
Address ContainNum Type TotalPgs UseablePgs StripeSet Container
0x0700000039F3E840 0 Disk 15974400 15974376 0 /dev/rlvcdr_n02_01
0x0700000039F3E9A0 1 Disk 15974400 15974376 0 /dev/rlvcdr_n02_02
0x0700000039F3EB00 2 Disk 15974400 15974376 0 /dev/rlvcdr_n02_03
0x0700000039F3EC60 3 Disk 15974400 15974376 0 /dev/rlvcdr_n02_04
以上db2pd命令带了三个参数,第一个参数-db指定了数据库的名称是zjbi2,第二个参数-alldbp指定该命令在所有数据库分区上执行,第三个命令-tablespaces指定了该命令只查看id为7的表空间情况。
db2pd命令不需要连接数据库,但必须在该表空间物理所在的主机上执行,该命令的执行结果反映的是该主机上所有节点的情况。如本人的DB2 DPF环境,有三台主机,主机A仅有管理节点(0节点),主机B和主机C各有4个数据节点。如果我要查询应用数据表空间的使用情况,则需要在主机B和主机C上分别执行db2pd命令(考虑数据表空间一般不占用0节点的情况)。