设为首页 收藏本站
查看: 1294|回复: 0

[经验分享] DB2的长字段解决办法

[复制链接]

尚未签到

发表于 2016-11-18 10:17:28 | 显示全部楼层 |阅读模式
转自:http://blog.sinzy.net/richard/entry/6679
在DB2中,有时候需要建立如下种类的表:
T_1(id varchar(50),data varchar(8000))
因此需要执行create table T_1(id varchar(50),data varchar(8000));
通常情况下,这个语句不会执行成功的.
如下:


C:\Documents and Settings\Administrator>db2 create table T_1(id varchar(50),data varchar(8000))
DB21034E  该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0286N  找不到页大小至少为 "8192"、许可使用授权标识 "VM" 的缺省表空间。

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


create bufferpool ibmdefault8k IMMEDIATE  SIZE 5000 PAGESIZE 8 K ;

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


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

接下来执行


create table T_1(id varchar(50),data varchar(8000));

顺利通过
在DB2的CLP环境下,可以进行正常的insert,select等操作,但是在JDBC环境下就不行了.
在Eclipse的DBEdit(也是通过JDBC)下执行select操作时候报:


[IBM][CLI Driver][DB2/NT] SQL1585N  不存在具有足够页大小的系统临时表空间。  SQLSTATE=54048
  dbedit.core.DataException: Unable to retrieve result values for VM.T_1
  dbedit.core.DataException: Couldn't execute query:select "ID","DATA" from "VM"."T_1"
  COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver][DB2/NT] SQL1585N  不存在具有足够页大小的系统临时表空间。  SQLSTATE=54048

因此,需要再创建一个系统临时表空间才能让DB2 shut up.


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

终于,一切正常了.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-302028-1-1.html 上篇帖子: SQL1159 Initialization error with DB2 .NET Data Provider问题 下篇帖子: DB2由客户端连接服务端
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表