首页 数据库 mysql教程 DB2数据库SQL0670N错误案例解析

DB2数据库SQL0670N错误案例解析

Jun 07, 2016 pm 05:37 PM
db2 数据库

开发人员在修改一个表时,DB2数据库报SQL0670N错误,具体信息如下:这个错误是怎么引起的?又该怎么解决呢?首先我们看一下DB2数据库自身对这个错误的解释这里告

  开发人员在修改一个表时,DB2数据库报SQL0670N错误,,具体信息如下:

164703641.jpg

  这个错误是怎么引起的?又该怎么解决呢?

  首先我们看一下DB2数据库自身对这个错误的解释

165220662.jpg

  这里告诉我们在具有32K页大小的表空间中,行长度不能超过32677字节。

  解决这个问题,我们自然会想到增大行长度限制的表空间的大小或设置较大的pagesize ,当然也可以考虑降低一列或多列的长度来降低行长度。

  先查看表空间的具体信息:


$ db2  list  tablespaces  show detail


表空间标识                          = 9

名称                                = TPMS

类型                                = 系统管理空间

内容                                = 任何数据

状态                                = 0x0000

  详细解释:

    正常

总计页数                            = 2084

可用页数                            = 2084

已用页数                            = 2084

未用页数                            = 不适用

高水位标记(页)                    = 不适用

页大小(以字节计)                  = 32768

扩展数据块大小(页)                = 32

预取大小(页)                      = 32

容器数                              = 1


pagesize的值已经比较大了,可以考虑增大表空间。

DB2现有表空间扩容的方法
1)直接添加一个容器的例子:

db2 " ALTER TABLESPACE TPMS ADD (DEVICE '/dev/rhdisk9' 10000) "
加容器之后DB2会有一个自动balance的过程,可能会持续几个小时!!!  在线做有一定风险!

2)改变现有容器的大小(该方法不会触发balance,但如果表空间建立在裸设备上,则要扩冲裸设备空间):

db2 " ALTER TABLESPACE TPMS RESIZE (FILE '/conts/cont0' 2000, DEVICE '/dev/rcont1' 2000, FILE 'cont2' 2000) "

注意这种方式就是将原有的相应容器都改成大小是2000页


或者考虑降低一列或多列的长度来降低行长度。

例如:执行的SQL语句为

alter table tpms.tpms_target alter column "target_value_by" set data type varchar(4000);

如果报错,可以设一个小点的值varchar(2000),这样就执行成功了。如果2000还放不下,可以分成两个表,主键、字段;主键、其他字段


varchar类型的最大长度为8000,如果有更大的数据,还可以考虑long varchar或clob类型。


最后本例中的报错是通过设置CLOB类型解决的。

alter table tpms.tpms_target alter column "target_value_by" set data type clob(4000);


补充:varchar的最大长度是由DB2的表空间决定,在DB2中一行数据的大小不能超过表空间的pagesize。而clob,dbclob和blob大小为2GB。


一般来说,为了提高性能,数据库需要专门创建一个用于存放大字段的表空间,数据表的大字段列应该将数据存放于对应的表空间中,这是因为不经过内存(缓冲池)直接读取的。


DB2的限制
1. 一个表的最大列数
2. 一个视图的最大列数
3. 一行的最大长度(字节)
4. 每个分区中表的最大尺寸(千兆字节数)
5. 每个分区中索引的最大尺寸(千兆字节数)
6. 每个分区中表的最大行数
7. 最长索引关键字(字节数)
8. 一个索引关键字中的最大列数
9. 一个表的最大索引数
10. 一个SQL语句或视图中所引用的最大表数



本文出自 “滴水穿石” 博客,请务必保留此出处

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Go语言如何实现数据库的增删改查操作? Go语言如何实现数据库的增删改查操作? Mar 27, 2024 pm 09:39 PM

Go语言如何实现数据库的增删改查操作?

在PHP中使用MySQLi建立数据库连接的详尽教程 在PHP中使用MySQLi建立数据库连接的详尽教程 Jun 04, 2024 pm 01:42 PM

在PHP中使用MySQLi建立数据库连接的详尽教程

MySQL与PL/SQL的异同比较 MySQL与PL/SQL的异同比较 Mar 16, 2024 am 11:15 AM

MySQL与PL/SQL的异同比较

Hibernate 如何实现多态映射? Hibernate 如何实现多态映射? Apr 17, 2024 pm 12:09 PM

Hibernate 如何实现多态映射?

iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片 iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片 Jul 18, 2024 am 05:48 AM

iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片

深入解析HTML如何读取数据库 深入解析HTML如何读取数据库 Apr 09, 2024 pm 12:36 PM

深入解析HTML如何读取数据库

MySQL数据库管理系统的基本原理解析 MySQL数据库管理系统的基本原理解析 Mar 25, 2024 pm 12:42 PM

MySQL数据库管理系统的基本原理解析

PHP处理数据库中文乱码的技巧与实践 PHP处理数据库中文乱码的技巧与实践 Mar 27, 2024 pm 05:21 PM

PHP处理数据库中文乱码的技巧与实践

See all articles