最近想将仓库里面的表大小进行统计下,使用 select * from sysibmadm.admintabinfo 来统计发现非常慢,这个表经常被锁,基本上是运行不出来。后面改用db2pd -d xxx -tcb 命令来取,发现该命令只能取出部分数据。但是如果将该表进行访问后,再使用db2pd -d xxx -tcb 命令就可以取出该表数据信息。目前判断db2pd -d xxx -tcb 取出的数据应该是数据库最后一次重启到当前,所有被访问过表的数据。
1.字典表有该表数据
/db2home/db2inst1#db2 "select tabname,tableid,tbspaceid
> from syscat.tables where tabname ='CCC_576_5'"
TABNAME TABLEID TBSPACEID
--------------------------------------------------------------
CCC_576_5 3698 17
1 record(s) selected.
2.使用 db2pd -ddw -tcb |egrep "Address|3698" 查不出该表。
/db2home/db2inst1#db2pd -d dw-tcb |egrep "Address|3698"
Address TbspaceID TableID PartID MasterTbs MasterTab TableName SchemaNm ObjClass DataSize LfSize LobSize XMLSize
0x0A000301F3369858 13 1327 n/a 13 1327 ODS_DR_XX_2015 DW Perm 1 0 0 0
0x0A000301E5369858 11 6325 n/a 11 6325 DW_ENT_XX_T DW Perm 1 0 0 0
0x0A0003029B065AD8 6 3698 n/a 6 3698 DIM_XXX_201 DW Perm 6 0 0 0
0x0A0003020E1BDDD8 15 3698 n/a 15 3698 ODS_XXXINFO_2 DW Perm 1 0 0 0
0x0A000301E5347ED8 9 13698 n/a 9 13698 ODS_XXXX_5 DW Perm 131 0 0 0
3.对CCC_576_5该表进行访问 select count(1) from CCC_576_5 。
/db2home/db2inst1#db2 "select count(1) from ccc_576_5"
1
-----------
709201
1 record(s) selected.
4.再执行db2pd -d dw-tcb |egrep "Address|3698" CCC_576_5 表信息出现
/db2home/db2inst1#db2pd -d dw -tcb |egrep "Address|3698"
Address TbspaceID TableID PartID MasterTbs MasterTab TableName SchemaNm ObjClass DataSize LfSize LobSize XMLSize
0x0A000301F3369858 13 1327 n/a 13 1327 ODS_DR_XX_2015 DW Perm 1 0 0 0
0x0A000301E5893BD8 17 3698 n/a 17 3698 CCC_576_5 DW Perm 99 0 0 0
0x0A000301E5369858 11 6325 n/a 11 6325 DW_XX_T DW Perm 1 0 0 0
0x0A0003029B065AD8 6 3698 n/a 6 3698 DIM_XX_201 DW Perm 6 0 0 0
0x0A0003020E1BDDD8 15 3698 n/a 15 3698 ODS_XXX_2 DW Perm 1 0 0 0
0x0A000301E5347ED8 9 13698 n/a 9 13698 ODS_XXXX_5 DW Perm 131 0 0 0
收起