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

时间:2014-09-03 08:44:48

标签: db2 database-administration

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

 A system temporary table space with sufficient page size does not exist .. SQLCODE=-1585, SQLSTATE=54048, DRIVER=3.64.82

当我搜索并浏览了一些页面时,有一个名为系统临时表空间的实体,在执行查询时,DB将使用该实体。(我不确定,但很少有页面说它将仅用于排序和加入,但我的查询中没有。)

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

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

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

3 个答案:

答案 0 :(得分:11)

AngocA的灵魂似乎在原则上起作用 http://www-01.ibm.com/support/docview.wss?uid=swg21529563

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

CREATE SYSTEM TEMPORARY TABLESPACE STB_4 PAGESIZE 4K 
如果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

答案 1 :(得分: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 

创建SMS时,表空间不会预先分配磁盘空间,只会在使用时增长。

答案 2 :(得分:0)

首先,您需要检查现有的页面大小。您可以创建页面大小为8k,16k,32k等的缓冲池。

首先使用所需的页面大小创建缓冲池,然后使用所需的页面大小创建系统临时表空间。以下是分步过程。

sql1585n-system-temporary-tablespace-issue