没有足够的页面大小 - DB2插入

Kan*_*thy 6 db2 database-administration

我有一个DB2查询(简单的插入语句),它试图插入大约27列.在这些列中,1是Clob,问题就在那里.对于我的Clob列,有时值甚至可能包含28K字符.在这种极端情况下,我得到以下错误,

 A system temporary table space with sufficient page size does not exist .. SQLCODE=-1585, SQLSTATE=54048, DRIVER=3.64.82
Run Code Online (Sandbox Code Playgroud)

当我搜索并浏览了一些页面时,有一个名为System Temporary Table Space的实体,在执行查询时将由DB使用.(我不确定,但很少有页面说它只会用于排序和加入,但我在我的查询中没有.)

在完成一些建议之后,我使用以下查询创建了一个页面大小为32K 的系统临时表空间,

CREATE SYSTEM TEMPORARY TABLESPACE STB PAGESIZE 32K MANAGED BY SYSTEM USING ( 'C:\DB2\NODE0005') BUFFERPOOL BP32K
Run Code Online (Sandbox Code Playgroud)

我的问题仍在继续.什么是执行我的查询的正确方法.我试图了解系统临时表空间,页面大小等的重要性.但是现在可以解决这个问题的任何帮助都将非常感激.

Wol*_*ahl 12

AngocA的灵魂似乎在原则上有效,它遵循 http://www-01.ibm.com/support/docview.wss?uid=swg21529563.

对于4K系统临时表空间的命令

CREATE SYSTEM TEMPORARY TABLESPACE STB_4 PAGESIZE 4K 
Run Code Online (Sandbox Code Playgroud)

如果4K是您的默认页面大小,将立即工作.避免SQL 1582N错误http://www.ibm.com/support/knowledgecenter/SSEPGG_9.5.0/com.ibm.db2.luw.messages.sql.doc/doc/msql01582n.html

您可能需要创建8K,16和32 K缓冲池:

CREATE BUFFERPOOL BP8K pagesize 8K
CREATE SYSTEM TEMPORARY TABLESPACE STB_8 PAGESIZE 8K BUFFERPOOL BP8K
CREATE BUFFERPOOL BP16K pagesize 16K
CREATE SYSTEM TEMPORARY TABLESPACE STB_16 PAGESIZE 16K BUFFERPOOL BP16K
CREATE BUFFERPOOL BP32K pagesize 32K
CREATE SYSTEM TEMPORARY TABLESPACE STB_32 PAGESIZE 32K BUFFERPOOL BP32K
Run Code Online (Sandbox Code Playgroud)


Ang*_*ocA 5

您可以为每个页面创建一个系统临时表空间作为SMS(系统管理).在这种情况下,您的查询将始终找到具有适当页面大小的表空间.

CREATE SYSTEM TEMPORARY TABLESPACE STB_4 PAGESIZE 4K 
CREATE SYSTEM TEMPORARY TABLESPACE STB_8 PAGESIZE 8K 
CREATE SYSTEM TEMPORARY TABLESPACE STB_16 PAGESIZE 16K 
CREATE SYSTEM TEMPORARY TABLESPACE STB_32 PAGESIZE 32K 
Run Code Online (Sandbox Code Playgroud)

创建SMS时,表空间不会预先分配磁盘中的空间,并且只会在使用时增长.