`
hain
  • 浏览: 455431 次
  • 来自: ...
社区版块
存档分类
最新评论

(DB2)SQL1585N 不存在具有足够页大小的系统临时表空间

阅读更多
SQL1585N不存在具有足够页大小的系统临时表空间。

解释:

可能发生了下列其中一种情况:

1.    系统临时表的行长度超过了数据库中最大系统临时表空间中可接受的限
    制。

2.    系统临时表中所需的列数超过了数据库中最大系统临时表空间中可接受
    的限制。

系统临时表空间限制取决于其页大小。这些值是:


  最大         最大   临时
  记录         列数   表空间的
  长度                页大小
  -----------  ----  ------------
  1957  字节   244   2K
  4005  字节   500   4K
  8101  字节   1012  8K
  16293 字节   1012  16K
  32677 字节   1012  32K


The view being compiled is based on other view which contain a function that has the return parameter VARCHAR(32672).

SQLLIB\BIN> db2 list tablespaces show detail表空间标识                        = 1名称                              = TEMPSPACE1类型                              = 系统管理空间内容                              = 系统临时数据......页大小(以字节计)                = 4096......I tried to reduce the return parameter length down to 4005 in the function, but the error continues to happen as compiling the view. Finally it works for VARCHAR(3600) as maximum.

Please see following test case.


The function.CREATE FUNCTION zytst.fun1RETURNS VARCHAR(32672)LANGUAGE SQLDETERMINISTICNO EXTERNAL ACTIONREADS SQL DATARETURN 'abc'@
The inner view.
CREATE VIEW zytst.v1 ASVALUES zytst.fun1() AS c1@
The view occurring error.
CREATE VIEW zytst.v2 ASSELECT c1 AS c1 FROM zytst.v1@
The function fun1 and the view v1 could be compiled successfully in the DB whose system temporary tablespace only has 4KB pagesize in bufferpool. But the v2 could Not be compiled in the same DB.
解决方法参考:
http://blog.sinzy.net/richard/entry/6679

DB2默认的页大小是4K,这样的表的字段太长,接近8K.一条记录不能跨页存储.
所以我们需要创建一个页长为8K的表空间.
首先,创建8K的缓冲池:

create bufferpool ibmdefault8k IMMEDIATE  SIZE 5000 PAGESIZE 8 K ;

再创建一个系统临时表空间才能让DB2 shut up.

CREATE TEMPORARY TABLESPACE mysystmp1
  IN DATABASE PARTITION GROUP IBMTEMPGROUP
  PAGESIZE 8K
  MANAGED BY SYSTEM
  USING
  ('D:\DB2\mysapce'
  )
  EXTENTSIZE 32
  PREFETCHSIZE 16
  BUFFERPOOL IBMDEFAULT8K
  OVERHEAD 24.10
  TRANSFERRATE 0.90
  DROPPED TABLE RECOVERY OFF;

然后,使用该缓冲池创建一个表空间

CREATE TABLESPACE mytbs
  IN DATABASE PARTITION GROUP IBMDEFAULTGROUP
  PAGESIZE 8K
  MANAGED BY SYSTEM
  USING
  ('D:\DB2\mytables'
  )
  EXTENTSIZE 32
  PREFETCHSIZE 16
  BUFFERPOOL IBMDEFAULT8K
  OVERHEAD 24.10
  TRANSFERRATE 0.90
  DROPPED TABLE RECOVERY OFF;
GRANT USE OF TABLESPACE mytbs TO PUBLIC;

分享到:
评论
1 楼 ll_3581 2010-04-23  
这个问题你是怎么解决的,我也出现了同样的问题

相关推荐

    DB2系统临时表空间过大引发的性能问题-contracted.doc

    DB2系统临时表空间过大可能引发严重的性能问题,这在实际操作中表现为SQL语句执行时间显著增加。本文以某银行的DB2数据库系统为例,深入探讨了如何诊断和解决此类问题。 首先,当遇到系统响应变慢、ACTIVE SESSION...

    1585错误解决方案.docx

    在使用IBM DB2数据库时,有时可能会遇到错误代码SQL1585N,这表示当前系统中不存在具有足够页大小的系统临时表空间,导致某些操作无法执行。SQLSTATE=54048进一步确认了这是一个与表空间管理相关的错误。针对这个...

    DB2表空间管理

    除了基本的SMS和DMS表空间之外,DB2还支持几种特殊类型的表空间,如系统临时表空间(System Temporary Table Space, STTS)和用户临时表空间(User Temporary Table Space, UTTS)。 **系统临时表空间(STTS)**: 系统...

    DB2 SQL性能调优秘笈

    3. **临时表空间优化**:合理规划临时表空间的配置和位置,可以减少I/O操作,提高临时表的创建和删除速度。 #### 五、并发控制与锁管理 在多用户环境中,合理的并发控制策略对于防止死锁和提高事务处理能力非常...

    NC6.5 数据库参考脚本及临时表空间配置.pdf

    DB2的脚本可能涉及如何利用DB2提供的命令和工具来创建数据库和调整数据库参数,例如设置临时表空间的大小和配置。 在文档的“部分内容”中,我们看到了具体的SQLServer脚本实例,包括创建数据库、添加文件组和文件...

    DB2的表空间和缓冲池

    4. **系统临时表空间**:用于存储SQL操作过程中的临时数据,例如排序、表重组、索引创建等。每个数据库必须至少包含一个系统临时表空间,默认名称为`TEMPSPACE1`。 5. **用户临时表空间**:用于存储声明的全局临时...

    DB2基础----表空间

    1. 系统表空间:这是DB2创建时自动创建的默认表空间,用于存储系统元数据,如表定义、索引定义等。 2. 用户表空间:用户自定义的表空间,用于存储用户创建的数据库对象,可以根据需求调整性能和可用性。 3. 大对象表...

    DB2 SQL-Reference

    此外,《DB2 SQL Reference》还提供了错误处理和异常情况的解决方案,以及如何正确解读和使用DB2系统表和管理命令的指南,对于日常的数据库运维工作具有重要的参考价值。 总之,DB2 SQL Reference是DB2用户不可或缺...

    主流数据库中临时表的使用

    临时表可以在不同的数据库管理系统中使用,本文将对 MS SQLSERVER、Oracle 和 DB2 中的临时表进行介绍。 MS SQL SERVER 中的临时表 在 MS SQL SERVER 中,临时表是以井号 (#) 或数学符号 (##) 开头的表名。临时表...

    DB2SQL命令大全

    在上述的"DB2SQL命令大全"中,涉及到了几个关键的DB2 SQL命令,主要包括连接数据库、创建缓冲池和创建表空间。 1. **连接数据库**: `connect to [数据库名] user [操作用户名] using [密码]` 这个命令用于连接到...

    db2 SQL优化

    ### DB2 SQL优化之散列连接技术详解 #### 一、引言 在数据库管理系统(DBMS)中,SQL查询优化是提升数据检索速度的关键技术之一。对于大型企业级数据库如IBM DB2 Universal Database (DB2 UDB),优化SQL查询不仅能够...

    DB2游标及动态SQL

    `with replace`指明如果存在同名的临时表则自动替换。 **4.2 DB2中的全局变量** - **ROW_COUNT**:表示受影响的行数。 - **RETURN_STATUS**:表示函数或存储过程的返回状态。 - **SQLSTATE**:表示SQL语句执行的...

    Db2_SQL命令大全(完整版)

    CREATE TEMPORARY TABLESPACE [临时表空间名] IN DATABASE PARTITION GROUP [分区组名] PAGESIZE [页面大小] MANAGED BY SYSTEM USING (['物理路径']) EXTENTSIZE [扩展单元大小] PREFETCHSIZE [预读大小] BUFFER...

    NC6.1 数据库参考脚本及临时表要求

    对于临时表空间的调整,脚本定义了一个动态SQL语句,用于修改tempdb数据库中某个文件的大小和增长量,这可以保证临时表空间在处理大量临时数据时有足够的空间。 Oracle数据库的参考脚本包含创建表空间、创建用户和...

    超全DB2SQL命令大全

    DB2是IBM开发的一款关系型数据库管理...这些命令涵盖了DB2数据库中基本的SQL操作,包括连接数据库、创建不同大小的缓冲池、设置表空间以及分配权限。了解并熟练掌握这些操作对于有效地管理和维护DB2数据库至关重要。

    DB2 SQL 精萃.pdf

    根据提供的信息,《DB2 SQL 精萃》一书由尚波编写,主要围绕IBM DB2数据库中的SQL语言展开深入探讨。以下是对该书中部分关键知识点的概括与解释: ### 一、DB2 SQL基础 #### 1. 连接字符串 在DB2中,连接字符串是...

    DB2表空间管理及查看脚本

    1. **子查询**:通过使用`WITH`子句定义了两个临时表`a`和`bas`,其中`a`用于计算各个表的大小和创建时间,而`bas`则用于累积计算所有表的总大小。 2. **条件过滤**:脚本中定义了一系列的过滤条件,以确保只删除...

    SQL Reference DB2

    **《SQL Reference DB2》** 是由IBM公司发布的一份详尽的文档资料,主要用于指导用户如何使用DB2数据库系统中的SQL语言。这份文档涵盖了DB2 Version 7版本的所有SQL特性及相关概念,为用户提供了一个全面的学习和...

Global site tag (gtag.js) - Google Analytics