DB2 sql報錯後查證原因與解決問題的方法

來源:互聯網
上載者:User

標籤:bat   not   cal   man   alter   狀態   date   connect   大小   

1.對於執行中的報錯,可以在db2命令列下運行命令 : db2=>? SQLxxx 查看對應的報錯原因及解決方案。

2.錯誤SQL0206N SQLSTATE=42703  檢測到一個未定義的列、屬性或參數名。
  SQL0206N  "SQL_COU_ALL" is not valid in the context where it is used.  SQLSTATE=42703
      db2 => ? "42703"    
      db2 => ? SQL0206N
   
3.錯誤SQL0668N code "7" SQLSTATE=57016   表處於pending state,需要重組該表。
  SQL0668N  Operation not allowed for reason code "7" on table "xxx.Z_BP_TMPBATCH_TB_HIS".  SQLSTATE=57016
     db2 => ? SQL0668N code 7  
     SQL0668N  Operation not allowed for reason code "<reason-code>" on table "<table-name>".
     Explanation:說明
       Access to table "<table-name>" is restricted. The cause is based on the following reason codes "<reason-code>":
       7   The table is in the reorg pending state. This can occur after an ALTER TABLE statement containing a REORG-recommended operation.
     User response:使用者響應  
       7   Reorganize the table using the REORG TABLE command.
    For a table in the reorg pending state, note that the following clauses are not allowed when reorganizing the table:
    *  The INPLACE REORG TABLE clause
    *  The ON DATA PARTITION clause for a partitioned table when table has nonpartitioned indexes defined on the table

4.錯誤SQL20054N code="23" SQLSTATE=55019 對錶的修改次數達到3次,必須重組表
  ALTER TABLE xxx.FM_BORRO ALTER COLUMN DOCUMENT_TYPE_1 SET NOT NULL
  報錯:SQL20054N  The table "xxx.FM_BORROW" is in an invalid state for the operation. Reason code="23".  SQLSTATE=55019
  db2 => ? SQL20054N
    SQL20054N  The table "<table-name>" is in an invalid state for the operation. Reason code="<reason-code>".
  Explanation:
    The table is in a state that does not allow the operation. The "<reason-code>" indicates the state of the table that prevents the operation.
    23   The maximum number of REORG-recommended alters have been
         performed. Up to three REORG-recommended operations are allowed
         on a table before a reorg must be performed, to update the
         tables rows to match the current schema.
  User response:
    23        Reorg the table using the reorg table command.
    說明:當對錶結構變更時,也可能導致表狀態異常。比如,以下操作可能會導致表處於reorg-pending狀態。
 (1)        alter table <tablename> alter <colname> set data type <new data type>
 (2)        alter table <tablename> alter <colname> set not null
 (3)        alter table <tablename> drop column <colname>
 (4)        ……   
 出現reorg pending的根源是當表結構變化後影響了資料行中的資料格式,這時需要對錶做reorg。可能的錯誤號碼是:
 01.SQL0668N  Operation not allowed for reason code "7" on table "SDD.ST_INCRE008".  SQLSTATE=57016
 03.SQL20054N  The table "<table-name>" is in an invalid state for the operation. Reason code="7".
 複製代碼每一個表在不進行重組(Reorg)的前提下,只允許進行3次結構上的修改。三次更改後必須對錶進行重組。
 REORG TABLE "xx"."FM_BORROW" ALLOW NO ACCESS KEEPDICTIONARY;

5.報錯 SQL0670N  SQLSTATE=54010 該表所有欄位長度之和大於當前資料庫頁大小(8K)
  ALTER TABLE xxx.FAQ ALTER COLUMN FAQ_UNIT_NAME SET DATA TYPE VARCHAR(800)
  報錯 SQL0670N  The row length of the table exceeded a limit of "8101" bytes. (Table space "SHJD_DATA".)  SQLSTATE=54010
  db2 => ? SQL0670N
    SQL0670N  The row length of the table exceeded a limit of "<length>" bytes. (Table space "<tablespace-name>".)
  Explanation:
    The row length of a table in the database manager cannot exceed:
 *  4005 bytes in a table space with a 4K page size
 *  8101 bytes in a table space with an 8K page size
 *  16293 bytes in a table space with an 16K page size
 *  32677 bytes in a table space with an 32K page size
    The length is calculated by adding the internal lengths of the columns.Details of internal column lengths can be found under CREATE TABLE in the SQL Reference.
  User response:
    指定頁大小更大的資料表空間;消除表中的一列或多列

6.報錯 SQL0190N  SQLSTATE=42837 不能改變該列,因為它的屬性與當前的列屬性不相容
  ALTER TABLE xxx.BP_TMPDATA_1_TB_1903 ALTER COLUMN RATE SET DATA TYPE DECIMAL(6,4) 
  報錯 SQL0190N  ALTER TABLE "BP_TMPDATA_1_TB_1903" specified attributes for column "RATE" that are not compatible with the existing column.  SQLSTATE=42837
  說明: BP_TMPDATA_1_TB_1903 現有資料的精度超過了 DECIMAL(6,4)  ,比如100.00

7.報錯 SQL30081N SQLSTATE=08001   檢測到通訊錯誤  無法與應用程式伺服器或其他伺服器建立串連
  SQL30081N  A communication error has been detected. 
    Communication protocol being used: "TCP/IP". Communication API being used: "SOCKETS".  
    Location where the error was detected: "10.0.0.200".  Communication function detecting the error: "selectForConnectTimeout".  
    Protocol specific error code(s): "0", "*", "*".  SQLSTATE=08001
    檢查伺服器的配置情況如下:
      驗證存在的DB2資料庫
 db2 list db directory
 db2 list db directory show detail
      驗證執行個體使用的通訊協議,查看DB2COMM變數
 db2set -all
      查看資料庫管理員的配置,查看SVCENAME(特指tcpip協議)
 db2 get dbm cfg
      查看/etc/services中,有無與上面對應SVCENAME的連接埠,例如:
 db2cDB2 50000/tcp
      驗證遠程伺服器執行個體配置
        db2 list node directory
        db2 list node directory show detail
      ping hostname來驗證通訊
      使用telnet hostname port來驗證是否能連到執行個體
      用DB2提供的PCT工具來檢測一下

DB2 sql報錯後查證原因與解決問題的方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.