【问题标题】:sufficient page size does not exist - DB2 insert不存在足够的页面大小 - DB2 插入
【发布时间】:2014-09-03 08:44:47
【问题描述】:

我有一个尝试插入大约 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

当我用谷歌搜索并浏览了一些页面时,有一个名为 System Temporary Table Space 的实体将在执行查询时被数据库使用。(我不确定,但很少有页面说它将仅用于排序和加入,但我的查询中没有)。

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

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

我的问题还在继续。执行我的查询的正确方法是什么。我试图了解 System Temporary Table SpacePage Size 等的重要性。但是任何帮助可以暂时解决此问题将不胜感激。

【问题讨论】:

    标签: db2 database-administration


    【解决方案1】:

    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
    

    【讨论】:

    • 非常感谢。我花了一整天的时间试图弄清楚如何解决这个问题。点赞。
    【解决方案2】:

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

    【讨论】:

    • 解决方案效果很好。但仍在寻找解释。我的案例有超过 28K 个字符,因此我的假设是 32K 表空间就适合它。当我只有 8K 和 32K 表空间时,我遇到了问题。有什么解释可以回答我的问题吗?
    • CREATE SYSTEM TEMPORARY TABLESPACE STB_8 PAGESIZE 8K 可能返回 SQL1582N 请参阅ibm.com/support/knowledgecenter/SSEPGG_9.5.0/…
    【解决方案3】:

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

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

    sql1585n-system-temporary-tablespace-issue

    【讨论】:

      猜你喜欢
      • 2011-01-13
      • 2015-02-12
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 2014-08-02
      • 1970-01-01
      • 2021-09-24
      • 2013-04-08
      相关资源
      最近更新 更多