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的表,有两个方法可以选择,
1. 更新表空间的 BUFFERPOOL类型为页面更大的BUFFERPOOL类型
ALTER TABLESPACE USERSPACE1 BUFFERPOOL NEWBP1
2. 新建一个表空间,直接用大的BUFFERPOOL类型
在这里我们要创建一个新的表空间,首先必须要新建一个BUFFERPOOL类型,大小为16K,
CREATE BUFFERPOOL NEWBP1
SIZE 2000
PAGESIZE 16K
创建成功之后,我们可以用新的BUFFERPOOL定义新的表空间了,
CREATE LARGE TABLESPACE USERSPACE2
PAGESIZE 16 K
MANAGED BY DATABASE
USING (FILE '/home/db2data/NODE0000/WB/T0000004/C0000000.LRG' 500M)
EXTENTSIZE 16
PREFETCHSIZE 16
BUFFERPOOL NEWBP1
OVERHEAD 12.67
TRANSFERRATE 0.18
上面的SQL命令中,FILE 必须是一个新的文件,表空间创建成功后,数据库会多一个容器指向该文件,BUFFERPOOL 类型为新建的 NEWBP1,创建成功后,用命令查看结果,
DB2 LIST DATASPACES SHOW DETAIL
新建的表空间如下:
表空间标识 = 4
名称 = USERSPACE2
类型 = 数据库管理空间
内容 = 所有持久数据。大型表空间。
状态 = 0x0000
详细解释:
正常
总计页数 = 32000
可用页数 = 31984
已用页数 = 368
可用页数 = 31616
高水位标记(页) = 368
页大小(以字节计) = 16384
扩展数据块大小(页) = 16
预取大小(页) = 16
容器数 = 1
上面的表空间页面大小为16K。
OK, 我们现在可以创建一个记录长度大于4K的新表了。
分享到:
相关推荐
DB2的表空间和缓冲池
IBM DB2 表空间与缓冲池IBM DB2 表空间与缓冲池IBM DB2 表空间与缓冲池IBM DB2 表空间与缓冲池IBM DB2 表空间与缓冲池
[IBM]DB2_基础__表空间和缓冲池
网上很不错的,DB2缓冲池和索引调优的方法
db2表空间不足及处理
DB2缓冲池和索引调优的方法.doc
DB2的表空间 DB2的表空间 DB2的表空间 DB2的表空间
检查db2表空间是否不足已经处理的方法,具体怎么查看表空间是否已经被占满已经具体的解决方法在文档中都有说明。。
DB2表空间详解
DB2表和表空间状态详解 摘自IBM官网 状态说明很全
对于DB2数据库管理(DMS)表空间的高水位标记(HWM)是指该表空间曾经使用到的最大数据页数。如果使用:db2 list tablespaces show detail,看到某个DMS表空间的已用页数低于高水位标记,则有可能通过如下方法降低高...
DB2表空间检查与调优 附录1-DB2表空间状态列表
DB2表空间管理方式分为两种:系统管理空间(System Management Space,SMS)和数据库管理空间(Database Management Space,DMS)
记录db2 裸设备扩容归档 (文件系统)和表空间(裸设备)的过程。aix上操作截图
DB2表空间管理及查看脚本,用于对表空间中的分表规则明确的表进行删除!以保证有足够的表空间预留!
这是某银行 DB2 系统发生的一次真实案例,SQL 语句执行时间变长,最后发现“罪魁祸首”竟是 DB2 系统临时表空间过大。本文将介绍这个性能问题的分析处理过程,如何逐步定位问题根本原因,并提供了解决方法。这其中...
db2清空表数据
DB2导出数据库表结构和数据.pdf
db2系统表、视图说明,sysibm.systables,sysibm.syscolumns,syscat.tables,syscat.columns,我们可以通过 LIST TABLES FOR SYSTEM 或 LIST TABLES FOR SCHEMA schemaname 命令查看所有的系统表和相关的视图信息。...