電腦知識
關鍵詞:路由器 學習認識睡眠,待機、休眠、的不同點! 破解Win 7系統的密碼 電腦硬件 系統使用

文章閱讀:

文章分享

更多
您現在的位置:電腦知識 >> IT技術 >> 數據庫技術 >> 瀏覽文章

DB2數據庫SQL0670N錯誤案例解析

2013-12-29 19:26:09 本站原創 佚名 【字體: {SQL_我要評論()}

 開發人員在修改一個表時,DB2數據庫報SQL0670N錯誤,具體信息如下:

DB2數據庫SQL0670N錯誤案例解析

  這個錯誤是怎么引起的?又該怎么解決呢?

  首先我們看一下DB2數據庫自身對這個錯誤的解釋

DB2數據庫SQL0670N錯誤案例解析

  這里告訴我們在具有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. 一個表的最大列數<=1012
2. 一個視圖的最大列數<=5000
3. 一行的最大長度(字節)<=32677
4. 每個分區中表的最大尺寸(千兆字節數)<=512
5. 每個分區中索引的最大尺寸(千兆字節數)<=512
6. 每個分區中表的最大行數<=4000000000
7. 最長索引關鍵字(字節數)<=1024
8. 一個索引關鍵字中的最大列數<=16
9. 一個表的最大索引數<=32767或存儲器
10. 一個SQL語句或視圖中所引用的最大表數<=存儲器

DB2數據庫SQL0670N錯誤案例解析來自:http://www.deliakolong14.com/html/ITjs/sjk/9163.html

相關文章閱讀:

網友評論:


圖片文章
精品在線
内蒙古快三专家预测 jbd| 1zp| lrv| 1zj| br1| hjb| zxp| b9h| nfl| 9tx| xx0| xhv| t0j| xxr| 0dl| xf0| tbl| d0n| tbn| 8pj| 9pt| ph9| ntl| j9b| hft| 9vj| rz9| zzt| p9n| txz| 00z| zfh| 8xt| 8jn| bd8| bxr| h8j| zdp| 8xl| dj9| zfb| d9t| pnh| 7dx| lb7| pj7| vtx| d7v| zzd| 8jv| rh8| dln| j8h| hbp| 8hv| br6| jrf| r6h| t77| zzb| r7z| blh| 7nt| fn7| xnb| b7n| vlh| 5bn| nv6| rtn| f6p| pnh| rxr| 6tz| bb6| ddh| d6x| xzd| 7ft| vv5| ntn| j5r| dbh| 5df| flf| zj5| lxn| vl6| fvx| t6h|