如何分析DB2数据库中pagesize和其对应寻址能力限制,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
成都创新互联公司秉承实现全网价值营销的理念,以专业定制企业官网,网站设计制作、成都网站建设,小程序开发,网页设计制作,移动网站建设,成都全网营销帮助传统企业实现“互联网+”转型升级专业定制企业官网,公司注重人才、技术和管理,汇聚了一批优秀的互联网技术人才,对客户都以感恩的心态奉献自己的专业和所长。
DB2数据库中,表和表空间的大小主要受到pagesize和其对应寻址能力限制。下面将为您详细分析DB2数据库中表和表空间的大小的限制。
在DB2 v8中,页地址为3个字节,也就是2的24次方可用,就是16,777,216页可以被寻址,基于这个限制得到如下表空间和表大小的限制:
# of pages Page size Limit of table / tablespace
16,777,216 4 K 64 GB
16,777,216 8 K 128 GB
16,777,216 16 K 256 GB
16,777,216 32 K 512 GB
在DB2 v9中,页地址扩展为4个字节,也就是寻址能力提升4倍,具体的限制如下所示:
# of pages Page size Limit of table / tablespace
536,870,912 4 K 2 TB
536,870,912 8 K 4 TB
536,870,912 16 K 8 TB
536,870,912 32 K 16 TB
注意:在DB2 v8中,large类型的表空间只是为LOB和LONG数据类型所使用,而在DB2 v9中没有类似的限制,默认的表空间类型就是large,如果从DB2 v8升级到v9就需要手动的把表空间从regular转换为large
ALTER TABLESPACE tablespace_name CONVERT TO LARGE
DB2 v8中的典型报错
多所有容器扩容
db2 " ALTER TABLESPACE tablespace-name EXTEND (ALL 1000000)"
DB21034E The command was processed as an SQL statement because it was not avalid Command Line Processor command. During SQL processing it returned:
SQL1139N The total size of the table space is too big. SQLSTATE=54047
对其中一个容器扩容
db2 " ALTER TABLESPACE tablespace-name EXTEND (FILE '/dir/filename' 3000000)"
DB21034E The command was processed as an SQL statement because it was not avalid Command Line Processor command. During SQL processing it returned:
SQL1139N The total size of the table space is too big. SQLSTATE=54047
加容器
db2 " ALTER TABLESPACE tablespace-name ADD (FILE '/dir/filename' 500000)"
DB21034E The command was processed as an SQL statement because it was not avalid Command Line Processor command. During SQL processing it returned:
SQL1139N The total size of the table space is too big. SQLSTATE=54047
通过检查可以看到
LIST TABLESPACES SHOW DETAIL
...
Tablespace ID = 8
Name = tablespace-name
Type = Database managed space
Contents = Any data
State = 0x0000
Detailed explanation:
Normal
Total pages = 16388000
Useable pages = 16387840
Used pages = 16387840
Free pages = 0
High water mark (pages) = 16387840
Page size (bytes) = 4096
Extent size (pages) = 32
Prefetch size (pages) = 128
Number of containers = 4
Minimum recovery time =2009-06-26-04.47.15.000000
...
可以明显看到页数量已经接近了最大限制
pagesize大小的解决
连接数据库
db2 create bufferpool 缓冲池名 pagesize 16384(字节)
db2 alter bufferpool 缓冲池名 size 5000
db2stop force
db2start
db2 create large tablespace 表空间名 pagesize 16k managed by automatic storage bufferpool 缓冲池名
查询语句也有可能出现pagesize太小的情况,可以根据创建表空间一样的方法为数据库创建临时表空间。
看完上述内容,你们掌握如何分析DB2数据库中pagesize和其对应寻址能力限制的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!