我正在尝试插入大约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
我的问题仍在继续。什么是执行我的查询的正确方法。我想了解 系统临时表空间 , 页面大小 等的重要性。但是任何帮助现在可以解决这个问题将非常感激。
答案 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等的缓冲池。
首先使用所需的页面大小创建缓冲池,然后使用所需的页面大小创建系统临时表空间。以下是分步过程。