2014-09-03 75 views
2

我有一个试图插入大约27列的DB2查询(简单插入语句)。在这些列中,1是Clob问题在那里。对于我的Clob柱,有时值可能甚至含有28K字符。在这种极端的情况下,我得到下面的错误,足够的页面大小不存在 - DB2插入

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

当我用Google搜索,并通过一些网页了,有一个实体,称为系统临时表空间这将是由DB执行时,可以使用查询(我不确定,但几页说它只会用于排序和加入,但我没有在我的查询中)。

通过一些建议会后,我创建了一个系统临时表空间具有32K页面大小,使用下面的查询,

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

不过我的问题仍然存在。什么是正确的方式来执行我的查询。我想了解系统临时表空间页面大小等的重要性。但是,可以解决这个问题,现在任何帮助将不胜感激。

回答

3

您可以为每个页面创建一个系统临时表空间作为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时,表空间不会预分配磁盘中的空间,并且它们只在使用时增长。

+0

该解决方案很好工作。但仍在寻找解释。我的情况有超过28K个字符,因此我的假设是一个32K的表空间将独自适合它。当我只有8K和32K的表空间时,我遇到了这个问题。有没有解释可以回答我的问题? – Kannan 2014-09-04 07:26:06

+0

CREATE SYSTEM TEMPORARY TABLESPACE STB_8 PAGESIZE 8K可能会返回SQL1582N请参阅http://www.ibm.com/support/knowledgecenter/SSEPGG_9.5.0/com.ibm.db2.luw.messages.sql.doc/doc/msql01582n.html – 2016-03-24 15:11:45

6

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和32K的缓冲池:

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