DB2数据库SQL0670N错误案例解析
Jun 07, 2016 pm 05:37 PM开发人员在修改一个表时,DB2数据库报SQL0670N错误,具体信息如下:这个错误是怎么引起的?又该怎么解决呢?首先我们看一下DB2数据库自身对这个错误的解释这里告
开发人员在修改一个表时,DB2数据库报SQL0670N错误,,具体信息如下:
这个错误是怎么引起的?又该怎么解决呢?
首先我们看一下DB2数据库自身对这个错误的解释
这里告诉我们在具有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语句或视图中所引用的最大表数
本文出自 “滴水穿石” 博客,请务必保留此出处

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment le langage Go implémente-t-il les opérations d'ajout, de suppression, de modification et de requête de la base de données ?

Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP

Comparaison des similitudes et des différences entre MySQL et PL/SQL

Comment Hibernate implémente-t-il le mappage polymorphe ?

iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées

Une analyse approfondie de la façon dont HTML lit la base de données

Analyse des principes de base du système de gestion de base de données MySQL

Conseils et pratiques pour gérer les caractères chinois tronqués dans les bases de données avec PHP
