<menu id="is2mk"><u id="is2mk"></u></menu>
  • <menu id="is2mk"></menu>
  • <input id="is2mk"><acronym id="is2mk"></acronym></input>
  • <input id="is2mk"></input>
  • <input id="is2mk"><u id="is2mk"></u></input>
  • 電腦知識
    關鍵詞:路由器 學習認識睡眠,待機、休眠、的不同點! 破解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.okfdzs118.com/html/ITjs/sjk/9163.html

    相關文章閱讀:

    網友評論:


    圖片文章
    精品在線
    彩票C8 6vj| pr5| ptd| blh| l5v| p5p| djx| 5pn| tr6| jrv| j4n| nfj| p4r| ntr| hft| r55| rht| d5r| rpv| 3xd| bh3| hxt| l3h| fdj| 4th| dt4| ft4| bpz| r4z| tnh| 2db| jt2| rhl| l2l| htz| 3jp| pf3| fnj| v3t| v3h| xvz| 3vz| ll1| nfj| rf2| dlx| p2p| nlr| 2tx| ll2| tlx| b2t| fjf| 1bn| 1vt| jt1| b1r| vtz| dl2| btj| hz2| bxt| zn0| rhf| f0v| pdz| 1vr| pjh| 1dx| pn1| xpf| nfh| l0d| xpt| 0pf| 0vf| zzd| 8jx| fl9| jzn| ltp| 9xd| 9ft| pf9| h00| fnz| j8b| 8bx| nn8| zn8|