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;
分享到:
相关推荐
这是某银行 DB2 系统发生的一次真实案例,SQL 语句执行时间变长,最后发现“罪魁祸首”竟是 DB2 系统临时表空间过大。本文将介绍这个性能问题的分析处理过程,如何逐步定位问题根本原因,并提供了解决方法。这其中...
NC6.5 数据库参考脚本及临时表空间配置,SQLServer参考脚本 Oracle参考脚本 DB2参考脚本
临时表空间页面大小与其他表空间页面大小的设置,临时表空间与缓冲池的设置。 example:db2icrt db2 -s ese -p d:\db2 -u Administrator 注意:在UNIX 上产生实例时需要产生一个和实例名称相同的用户名,和fencedid...
目录 SQL Server参考脚本 Oracle参考脚本 DB2参考脚本 数据库临时表空间要求 SQLServer参考脚本 下面脚本是用户使用SQLServer数据库时,建立数据库的演示脚本,参考使用,注意调整参数。
2.2 DB2 Express-C所不具备的功能...................................................................................23 2.2.1数据库分区......................................................................
对于执行随机行读写操作的OLTP(联机事务处理)应用程序,通常最好使用较小的页大小,这样不需要的行浪费的缓冲池空间就会较少。对于一次访问大量连续的OLAP(联机分析处理)应用程序,页大小大一些比较好,这样就能减少...
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式" (3) 删除数据记录: sql="delete from 数据表 where 条件表达式" sql="delete from 数据表" (将数据表所有记录删除) (4) 添加...
火龙果软件工程技术中心 本文内容包括:动机普通SQL过程使用临时表条件处理程序调优存在谓词CALL回避PVM中的SQLPL调优结束语致谢下载参考资料您想学习调优SQLPL的一些技巧吗?如果是这样的话,本文将描述一些调优IBM...
2.2 DB2 Express-C所不具备的功能...................................................................................23 2.2.1数据库分区......................................................................
交换空间大小:3.25GB 硬盘空间:10GB 安装 1. 安装程序成功下载,将会得到如下2个文件: 解压文件将得到database文件夹,文件组织如下: 点击setup.exe执行安装程序,开始安装。 2. 点击安装程序将会出现...
可按任意字段排序的分页存储过程(不用临时表的方法,不看全文会后悔) 常用sql存储过程集锦 存储过程中实现类似split功能(charindex) 通过查询系统表得到纵向的表结构 将数据库表中的数据生成Insert脚本的存储过程!!! ...
临时支持(Provisional support)DB2、Oracle、ODBC和Netezza。如果不支持你的数据库,联系作者。 处理“编译”重复查询任务的SQL语句。 通过对象类型的属性支持“外”对象,数据库中只存储外对象的id。 基本...
1、 临时表空间 create temporary tablespace apollo_temp tempfile ‘/opt/app/oracle/oradata/orcl_apollo/Apollo_temp.dbf’ size 200m autoextend on next 50m maxsize 2048m extent management local; 2、 ...
作为重量级桌面系统KDE多年的坚实基础,Qt应该是经受了足够的考验。当我们准备编写自己的应用软件时,却发现图书市场上没有一本关于Qt 4的书籍,仅有的只是一些关于Qt 3的资料。由于Qt 3到Qt 4的变化很大,甚至源...
作为重量级桌面系统KDE多年的坚实基础,Qt应该是经受了足够的考验。当我们准备编写自己的应用软件时,却发现图书市场上没有一本关于Qt 4的书籍,仅有的只是一些关于Qt 3的资料。由于Qt 3到Qt 4的变化很大,甚至源...
24 在下载和上载Office文档时不会产生临时文件 使用流数据作为Office文档的数据源,控件本身不会产生临时文件。 25 能够禁止用户从文档拷贝数据 IsNoCopy属性可以禁止用户从Office文档中拷贝数据。 26 支持简洁...