日期:2014-05-16  浏览次数:20455 次

DB2新增表空间和缓冲池

DB2新增表空间和缓冲池

?

在DB2中新建一个记录长度超过4K表时,如果系统报如下的错误,

???????? “找不到页大小至少为 "16384" 且许可其使用授权标识 "DCARD" 的缺省表空间。”

?

则说明当前数据库的数据表空间的页面大小定义小于16k,需要修改表空间的页面大小,或者为数据库增加新的数据表空间,新的表空间页面大小必须大于16K。

?

关于DB2的表空间和缓冲池的基础知识,可以参考文章:http://www.ibm.com/developerworks/cn/data/library/techarticles/0212wieser/0212wieser.html?

?

从上文中,我们知道了DB2有两种类型的表空间, SMS 和 DMS, 即系统管理和数据库管理的表空间,我们现在要增加的是DMS表空间。

?

一般来说,在创建DB2数据库的时候,每个数据库包括4个缺省的表空间,用命令可以查看,

?

DB2 LIST TABLESPACES SHOW DETAIL

?

当前数据库的表空间

?表空间标识??????????????????????? = 0
?名称?????????????????????? = SYSCATSPACE
?类型?????????????????????????????????????? = 数据库管理空间
?内容??????????????????????????????? = 所有持久数据。常规表空间。
?状态?????????????????? = 0x0000
?? 详细解释:
???? 正常
?总计页数??????????????????????????? = 24576
?可用页数??????????????????????????? = 24572
?已用页数??????????????????????????? = 19780
?可用页数??????????????????????????? = 4792
?高水位标记(页)??????????????????? = 19780
?页大小(以字节计)????????????????? = 4096
?扩展数据块大小(页)??????????????? = 4
?预取大小(页)????????????????????? = 4
?容器数????????????????????????????????? = 1

?

?表空间标识??????????????????????? = 1
?名称?????????????????????? = TEMPSPACE1
?类型?????????????????????????????????????? = 系统管理空间
?内容??????????????????????????????? = 系统临时数据
?状态?????????????????? = 0x0000
?? 详细解释:
???? 正常
?总计页数??????????????????????????? = 1
?可用页数??????????????????????????? = 1
?已用页数??????????????????????????? = 1
?可用页数??????????????????????????? = 不适用
?高水位标记(页)??????????????????? = 不适用
?页大小(以字节计)????????????????? = 4096
?扩展数据块大小(页)??????????????? = 32
?预取大小(页)????????????????????? = 32
?容器数????????????????????????????????? = 1

?

?表空间标识??????????????????????? = 2
?名称?????????????????????? = USERSPACE1
?类型?????????????????????????????????????? = 数据库管理空间
?内容??????????????????????????????? = 所有持久数据。大型表空间。
?状态?????????????????? = 0x0000
?? 详细解释:
???? 正常
?总计页数??????????????????????????? = 16384
?可用页数??????????????????????????? = 16352
?已用页数??????????????????????????? = 8512
?可用页数??????????????????????????? = 7840
?高水位标记(页)??????????????????? = 8512
?页大小(以字节计)????????????????? = 4096
?扩展数据块大小(页)??????????????? = 32
?预取大小(页)????????????????????? = 32
?容器数????????????????????????????????? = 1

?

?表空间标识??????????????????????? = 3
?名称?????????????????????? = SYSTOOLSPACE
?类型?????????????????????????????????????? = 数据库管理空间
?内容??????????????????????????????? = 所有持久数据。大型表空间。
?状态?????????????????? = 0x0000
?? 详细解释:
???? 正常
?总计页数??????????????????????????? = 8192
?可用页数??????????????????????????? = 8188
?已用页数??????????????????????????? = 152
?可用页数??????????????????????????? = 8036
?高水位标记(页)??????????????????? = 152
?页大小(以字节计)????????????????? = 4096
?扩展数据块大小(页)??????????????? = 4
?预取大小(页)????????????????????? = 4
?容器数????????????????????????????????? = 1

?

可以看出,现有的表空间页面的小确实为4K,

???????? 页大小(以字节计)????????????????? = 4096


这是因为DB2系统在创建表空间的时候,必须有一个相应的缓冲池,而DB2在创建数据库的时候,会自动创建一个缺省的缓冲池? IBMDEFAULTBP, 这个BUFFERPOOL的大小为 4K.? 显示缓冲池的命令如下:

???????? SELECT * FROM SYSCAT.BUFFERPOOLS

?

为了新建记录长达大于4K的表,有两个方法可以选择,