首页
论坛
门户
空间
手机版
IXPUB
插件
收藏
设置
注册
登录
商店
搜索
培训
Wiki
Blog
归档
丛书
退出
ITPUB论坛
»
IBM数据库产品
» 求助:系统临时表空间的指定
史上最详细DELL网购天书 优惠信息请致电800-858-2903
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
评价
|
打印
|
推荐
|
订阅
|
收藏
标题: 求助:系统临时表空间的指定
delubii
一般会员
精华贴数 0
个人空间
0
技术积分 136 (12454)
社区积分 0 (65911)
注册日期 2002-10-23
论坛徽章:0
#1
使用道具
发表于 2007-7-16 11:29
求助:系统临时表空间的指定
在使用with temp(a,b) as (select a,b from AAA union select t1.a,t2.b from AAA t1,temp t2 where t1.a=t2.b)进行递归的时候,产生了系统临时表空间不足的错误提示:[IBM][CLI Driver][DB2/6000] SQL1585N 不存在具有足够页大小的系统临时表空间。 SQLSTATE=54048
使用的是V8,
目前两个bufferpool,buff1为pagesize 4k,npages 1000,buff2为 pagesize 8k,npages 20000
两个系统临时表空间:tempsapce1 ,pagesize 4096,使用buff1
tempspace2 ,pagesiaze 8192,使用buff2
问题:我现在不知道temp表使用的是哪个表空间,我应该怎么确定目前temp使用的表空间?
目前temp的结果应该是200条记录,每条记录的大小不超过200个字符,我查了一些文档,说当表空间使用的pagesize为4k时,支持每行4005个字符,所以,出错的原因不可能是因为超行限,列数限制是500,我只有两列,也不可能超列限,那么唯一出错的可能就是最终结果的大小(200行*200字符 = 40000)超过了临时表空间的大小了。通过使用SNAPSHOT_TBS_CFG,我查到tempspace1的total_pages=1,肯定是不够的,tempspace2的total_pages=97950,肯定够用。那么我有两个方法来解决,第一,扩展tempspace1的页数量,第二,生成temp表的时候指定使用tempspace2。
问题:1、如果使用第一个方法,我应该怎么扩展tempspace1的大小?扩展了之后会对数据库性能之类的造成什么影响?
2、如果使用第二种方法,怎么才能指定使用的系统临时表空间?查了无数手头能看到的东东,就是没找到啊
请老大们赐教一下,谢谢啦
只看该作者
askgyliu
老会员
精华贴数 0
个人空间
0
技术积分 1506 (1056)
社区积分 0 (1428819)
注册日期 2007-6-14
论坛徽章:4
#2
使用道具
发表于 2007-7-16 15:07
把整个的SQL贴出来看看吧。
只看该作者
delubii
一般会员
精华贴数 0
个人空间
0
技术积分 136 (12454)
社区积分 0 (65911)
注册日期 2002-10-23
论坛徽章:0
#3
使用道具
发表于 2007-7-16 15:32
--字段类型
--id varchar(30)
--id4 varchar(30)
--id3 varchar(30)
--id2 varchar(30)
--id1 varchar(30)
--tsx dec(10,0)
--bblb dec(2,0)
--ywlb dec(2,0)
--cc int
with tmp (id,id4,id3,id2,id1,tsx,bblb,ywlb,cc) as (
select id,sjid,space(30),space(30),space(30),tsx,bblb,ywlb,1
from table_1
where sjid is null
union all
select t1.id,t1.sjid,t2.id4,t2.id3,t2.id2,t1.tsx,t1.bblb,t1.ywlb,t2.cc+1
from table_1 t1
,tmp t2
where t1.sjid = t2.id
)
select id
,id4
,id3
,id2
,id1
,tsx
,bblb
,ywlb
,cc
from tmp
;
只看该作者
delubii
一般会员
精华贴数 0
个人空间
0
技术积分 136 (12454)
社区积分 0 (65911)
注册日期 2002-10-23
论坛徽章:0
#4
使用道具
发表于 2007-7-16 15:54
我把space(30)改成' '(30个空格),这个sql就又不报错了,真是奇怪啊,谁给解释一下啊,谢啦
只看该作者
askgyliu
老会员
精华贴数 0
个人空间
0
技术积分 1506 (1056)
社区积分 0 (1428819)
注册日期 2007-6-14
论坛徽章:4
#5
使用道具
发表于 2007-7-16 21:49
Returns a character string consisting of blanks with length specified by the second argument.
The argument can be SMALLINT or INTEGER.
The result of the function is VARCHAR(4000). The result can be null; if the argument is null, the result is the null value.
VARCHAR(4000)
只看该作者
delubii
一般会员
精华贴数 0
个人空间
0
技术积分 136 (12454)
社区积分 0 (65911)
注册日期 2002-10-23
论坛徽章:0
#6
使用道具
发表于 2007-7-18 15:08
QUOTE:
最初由 askgyliu 发布
Returns a character string consisting of blanks with length specified by the second argument.
The argument can be SMALLINT or INTEGER.
The result of the function is VARCHAR(4000). The result can be null; if the argument is null, the result is the null value.
VARCHAR(4000)
不好意思,我没看太明白,您能不能简单的用汉语解释一下?
我测了一下length(space(30)),返回是30啊
只看该作者
askgyliu
老会员
精华贴数 0
个人空间
0
技术积分 1506 (1056)
社区积分 0 (1428819)
注册日期 2007-6-14
论坛徽章:4
#7
使用道具
发表于 2007-7-18 17:13
Space(参数)会返回一个空格STRING,而STRING的空格数目是由第二个参数决定的。
参数可以是SMALLINT,或是INTEGER。
结果会是VARCHAR(4000)。结果可能是NULL,如果参数是NULL的话。
只看该作者
askgyliu
老会员
精华贴数 0
个人空间
0
技术积分 1506 (1056)
社区积分 0 (1428819)
注册日期 2007-6-14
论坛徽章:4
#8
使用道具
发表于 2007-7-18 17:17
试试下面的两个QUERIES。
with tt as(
select char(space(1),1) as f1, char(space(1),1) as f2 from sysibm.sysdummy1)
select a.f1, a.f2, b.f1, b.f2, length(space(1))
from tt a, tt b
;
with tt as(
select space(1) as f1 from sysibm.sysdummy1)
select a.f1, length(a.f1)
from tt a, tt b
;
象SPACE这种函数,返回值若是用在SORTING的话,内部空间都是VARCHAR(4000)。所以你多放几个SPACE(30)就不可以了。
真的需要用到的话,加个限制吧,CHAR(SPACE(30))。
只看该作者
Viewsys
一般会员
精华贴数 0
个人空间
0
技术积分 254 (7317)
社区积分 1 (34713)
注册日期 2004-9-22
论坛徽章:2
#9
使用道具
发表于 2007-7-19 13:34
tips
1. the optimizer chooses the temporary tablespace with larger bp size (in your case tmp2).
2. The size you got with snapshot is the actual allocation size, you can see tmp2 oversized.
只看该作者
delubii
一般会员
精华贴数 0
个人空间
0
技术积分 136 (12454)
社区积分 0 (65911)
注册日期 2002-10-23
论坛徽章:0
#10
使用道具
发表于 2007-7-20 10:38
QUOTE:
最初由 askgyliu 发布
试试下面的两个QUERIES。
with tt as(
select char(space(1),1) as f1, char(space(1),1) as f2 from sysibm.sysdummy1)
select a.f1, a.f2, b.f1, b.f2, length(space(1))
from tt a, tt b
;
with tt as(
select space(1) as f1 from sysibm.sysdummy1)
select a.f1, length(a.f1)
from tt a, tt b
;
象SPACE这种函数,返回值若是用在SORTING的话,内部空间都是VARCHAR(4000)。所以你多放几个SPACE(30)就不可以了。
真的需要用到的话,加个限制吧,CHAR(SPACE(30))。
明白啦,谢谢老大
只看该作者
投票
交易
悬赏
活动
相关内容
ITPUB论坛
≡ 数据库技术 ≡
> Oracle数据库管理
> Oracle开发
> Oracle Developer Suite
> Oracle入门与认证
> Oracle专题深入讨论
> Oracle新技术/11g
> Oracle电子文档
> Oracle Application Server套件
> IBM数据库产品
> MS SQL Server
> Sybase管理与开发
> MySQL及其它开源数据库
> 内存数据库
> 数据仓库与数据挖掘
> 移动及嵌入式数据库
≡ 企业信息化 ≡
> ERP产品与实践
> CRM产品与实践
> HR产品与实践
> 物流
> 供应链
> 供应链建模与仿真
> 物流设备与系统工程
> 企业管理咨询
> 管理协同与办公自动化
> IT服务管理
> 数据中心建设
> ERP二次开发
> Oracle ERP
> EBS相关文档
> PeopleSoft与JDE
> SAP R/3
> SAP Business One开发与快速实施
> SAP财务及CRM
> SAP后勤及HR
> mySAP ERP
> 系统开发及跨应用设置
> SAP相关文档
> 国外其它ERP产品
> 国内ERP产品
≡ 开发技术 ≡
> Java入门与认证版
> Java web开发及框架技术
> Java企业开发
> ASP.NET
> .Net企业开发与应用
> WEB程序开发
> WEB 2.0技术
> 动态语言
> 移动与游戏开发
≡ 系统设计与项目管理 ≡
> 系统分析与UML
> 系统分析与UML精华区
> 项目管理
> 项目过程
> 软件测试
> 算法讨论与研究
≡ IBM软件技术园地 ≡
> IBM数据库产品
> Lotus
> Tivoli
> Websphere
> Rational
> 与SOA相关的IBM产品与技术
> IBM软件技术精英协会
> 软件技术精英活动专版
≡ 操作系统与硬件 ≡
> AIX及IBM产品【已迁移到IXPUB】
> HP-UX及HP产品【已迁移到IXPUB】
> Solaris及SUN产品【已迁移到IXPUB】
> Linux及其应用 【已迁移到IXPUB】
> 其它UNIX系统【已迁移到IXPUB】
> windows系统及微软相关产品 【已迁移到IXPUB】
> 存储设备与容灾技术 【已迁移到IXPUB】
> 服务器 【已迁移到IXPUB】
≡ 行业纵向讨论区 ≡
> IT业界评论与展望
> 政府与教育事业
> 中国政府信息主管联盟
> 电信行业
> 金融行业
> 医卫行业
> 制造行业
> 电力行业
> 信息安全与审计
≡ 会员交流 ≡
> IT职业生涯
> 招聘求职商务信息
> 投资理财
> 体育世界
> 体育博彩专版
> 旅游,驴友
> 汽车世界
> 外语角
> 数码摄影
> 你的故事我的歌
> 音乐推荐区
> 电子图书与IT文档资料
> 软件交流
> 软件交流精华区
≡ ITPUB产品与服务 ≡
> ITPUB地面活动专版
> BLOG天地
> WIKI世界
> 授权用户区
> 站务管理
技术积分榜
社区积分榜
徽章
电子杂志
会员
团队
统计
邮箱
游乐场
帮助
TOP
CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号
联系我们
法律顾问
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
升级个人空间
基本概况
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计