ホームページ データベース 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 までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

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