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过小的状况,能够根据建立表空间同样的方法为数据库建立临时表空间。ide