IBM Support

[Db2] 表データの挿入や更新が SQL0659N で失敗する

Troubleshooting


Problem

大きな表へのデータの挿入や更新が SQL0659N (表オブジェクトの最大サイズを超えました) で失敗するようになることがあります。

Cause

表の各オブジェクトは仕様上の最大値 (制限値) があります。これに達するとそのオブジェクトにはデータを追加できません。
LOB の更新は削除と挿入に変換されるため、LOB オブジェクトが最大値に達すると更新もできなくなります。
オブジェクトの制限値は以下のページを参照してください。

SQL および XML の制限値

たとえば、4KB ページ・サイズの REGULAR 表スペースの表 (データ) オブジェクトや索引オブジェクトの制限値は 64GB です。
また、ページ・サイズにかかわらず、LOB オブジェクトの制限値は 4TB です。

Diagnosing The Problem

オブジェクトが制限値に達した場合、db2diag.log に以下のような SQLD_RC_MAX_OBJ_SIZE のログが記録されます。
表や索引オブジェクトが制限値に達した場合
2022-05-22-02.38.42.011021-180 E331759E650          LEVEL: Error
PID     : 28277               TID  : 140698535880   PROC : db2sysc 0
INSTANCE: db2inst1            NODE : 000            DB   : SAMPLE
APPHDL  : 0-33757             APPID: *LOCAL.db2inst1.220529202027
AUTHID  : APPUSER             HOSTNAME: db2serv
EDUID   : 7646                EDUNAME : db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, data management, sqldCreateNewAppendCache, probe:1
MESSAGE : ADM5511E The object "DATA" with id "320" in tablespace "3" for table
          "DB2INST1.T1" has reached the maximum possible size.
 
2022-05-22-02.38.42.012212-180 I332410E1474         LEVEL: Error
PID     : 28277               TID  : 140698535880   PROC : db2sysc 0
INSTANCE: db2inst1            NODE : 000            DB   : SAMPLE
APPHDL  : 0-33757             APPID: *LOCAL.db2inst1.220529202027
AUTHID  : APPUSER             HOSTNAME: db2serv
EDUID   : 7646                EDUNAME : db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, buffer pool services, sqlbExtendObject, probe:444
MESSAGE : ZRC=0x8404000A=-2080112630=SQLD_RC_MAX_OBJ_SIZE
         "ARCHITECTURAL PAGE LIMIT REACHED"
         DIA8710E Maximum table size was reached.
LOB オブジェクトが 4TB の制限値に達した場合
2021-07-08-10.40.06.137289-240 I1117916E687           LEVEL: Error
PID     : 18346                TID : 13981569770240   PROC : db2sysc 0
INSTANCE: db2inst1             NODE : 000             DB   : SAMPLE
APPHDL  : 0-9131               APPID: *LOCAL.db2inst1.210708103128
AUTHID  : APPUSER              HOSTNAME: db2serv
EDUID   : 7471                 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, lob manager, sqldx_expand_bspace, probe:289
MESSAGE : ZRC=0x8404000A=-2080112630=SQLD_RC_MAX_OBJ_SIZE
"ARCHITECTURAL PAGE LIMIT REACHED"
DIA8710E Maximum table size was reached.
DATA #1 : Offset into LOB object (in 1K), PD_TYPE_LOB_OBJADDR, 4 bytes
4294966528
データベースの各表に所属する各オブジェクトのサイズは以下の SQL で一覧できます。(単位 KB)
SELECT TABSCHEMA,TABNAME,DATA_PARTITION_ID,DATA_OBJECT_P_SIZE,INDEX_OBJECT_P_SIZE,LONG_OBJECT_P_SIZE,LOB_OBJECT_P_SIZE,XML_OBJECT_P_SIZE,COL_OBJECT_P_SIZE FROM SYSIBMADM.ADMINTABINFO

Resolving The Problem

いずれの場合でも表から不要なデータを削除して問題を一時的に回避できます。
表から十分な量のデータを削除できない場合、以下のいずれかの対策を検討してください。
  1. より大きいページ・サイズの表スペースに表を移動 (ページ・サイズの制限値に達した場合のみ)
    たとえば、4KB ページ・サイズの制限値に抵触した場合、これより大きいページ・サイズの表スペースに表を移動することで問題を解決できます。表を移動する方法は以下のページを参照してください。
    [Db2] 表をコピーする方法
     
  2. 表をパーティションに分割
    制限値はオブジェクトごとなので、複数のオブジェクトからなるパーティション表へ表を分割することで制限値を緩和できます。ADMIN_MOVE_TABLE プロシージャーを使って、既存の表をパーティション表に分割できます。
    db2 "CALL SYSPROC.ADMIN_MOVE_TABLE ('<tabschema>', '<tabname>', '', '', '', '', '', '(<part_key>) (<range_clause>)', '', '', 'MOVE')"
  3. 索引のドロップ (ADM5511E で索引オブジェクトが制限値に達した場合のみ)
    ADM5511E でオブジェクト・タイプが INDEX の場合、表から不要な索引をドロップして問題を解消できます。
運用上の考慮点
  • 表スペースに対して極端に小さいエクステント・サイズを指定している場合、オブジェクトの制限値に達する前にエクステント数の制限値に達して SQL0659N が返る場合があります。エクステントの制限に達した場合は以下のようなエラーが記録されます。
    2020-10-13-13.51.41.888680+540 I278070A567          LEVEL: Severe 
    PID     : 25886756             TID : 6719           PROC : db2sysc 0 
    INSTANCE: db2inst1             NODE : 000 
    HOSTNAME: db2serv 
    EDUID   : 6719                 EDUNAME: db2pfchr (SAMPLE) 0 
    FUNCTION: DB2 UDB, buffer pool services, sqlbDMScheckObjAlloc, 
    probe:4943 
    MESSAGE : ZRC=0x8404000A=-2080112630=SQLD_RC_MAX_OBJ_SIZE 
              "ARCHITECTURAL PAGE LIMIT REACHED" 
              DIA8710E Maximum table size was reached. 
    DATA #1 : <preformatted> 
    Table space 3 cannot address extent 429399184 in an object 
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

Document Location

Worldwide

[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PlWAAU","label":"Database Objects-\u003ELOBS"},{"code":"a8m500000008PlYAAU","label":"Database Objects-\u003ETables"},{"code":"a8m500000008PlZAAU","label":"Database Objects-\u003ETablespaces"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Document Information

Modified date:
16 November 2023

UID

ibm17077377