2014-09-03 32 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