如何确定一个已经创建好的DB2数据库表空间是否启用了自动存储器呢?本文将为您介绍三种常用的检查方法,供您参考,希望对您有所帮助。
方法一:
使用 DB2 的快照工具对表空间进行快照,如:
$ db2 get snapshot for tablespaces on sample
......
Tablespace name = SYSCATSPACE
Tablespace ID = 0
Tablespace Type = Database managed space
Tablespace Content Type = All permanent data. Regular table space.
Tablespace Page size (bytes) = 4096
Tablespace Extent size (pages) = 4
Automatic Prefetch size enabled = Yes
Buffer pool ID currently in use = 1
Buffer pool ID next startup = 1
Using automatic storage = Yes
......
通过快照输出的“Using automatic storage”为“Yes”的信息,便可确定该表空间启用了自动存储器。
方法二:
使用 DB2 提供的如下快照表函数:
$ db2 "select char((TBSP_NAME),30) as
TBSP_NAME,TBSP_ID,TBSP_USING_AUTO_STORAGE from
table(snap_get_tbsp('sample',-1)) as tbsp"
其中 TBSP_USING_AUTO_STORAGE 为“1”的表空间启用了自动存储器,如有为“0”的,则未启用。#p#
方法三:
如果是 DB2 V8.1 安装了 FixPak 10 或更新的补丁,则可使用 db2pd 工具操作,例如:
$ db2pd -db sample -tablespaces
在命令输出的“Tablespace Autoresize
Statistics”段中,“AS”字段表明表空间是否启用了自动存储器,“Yes”即为启用,“No”为未启用。
如果要从一份数据库备份映象文件中确定表空间是否启用了自动存储器,可使用 db2ckbkp 的命令加上选项
T。如果输出中“flags”的值与“0x1000”执行按位与操作,如果结果不为零,则说明该表空间启用了自动存储器。例如如果执行下面的命令:
db2ckbkp -T <backup_image>
从命令输出中,可以找到类似这样的一段输出:
......
TEMPSPACE1
tbspInImage: T
ID: 1
flags: 1111
flags2: 400
extent_size: 32
prefetch_size: 32
version: 23
flavour: 5
state: 0
statechangeobjectid: 0
statechangepoolid: 0
......
将 0x1111 和 0x1000 进行按位与操作:
0x1111 AND
0x1000 =
----------
0x1000
其结果为 0x1000 而非零,当该值非零时则说明表空间 USERSPACE1 启用了自动存储器功能。