(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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值