IBM Support

[Db2] ALTER TABLESPACE によるエクステント移動の開始、停止およびモニター方法

How To


Summary

Db2 9.7 以降に作成された自動ストレージ表スペースおよび DMS 表スペースは ALTER TABLESPACE によるエクステント移動で未使用の領域を解放できます。

Objective

再利用可能 (RSE) 表スペースは ALTER TABLESPACE の REDUCE や LOWER HIGH WARTER MARK ステートメントでエクステント移動を指示して未使用の領域を解放できます。ALTER TABLE ステートメントは非同期のため、この文書ではエクステント移動をモニターする方法とエクステント移動を停止する方法を案内します。

Environment

Db2 9.7 以降で作成された再利用可能表スペースを持つデータベース
再利用可能表スペースかどうかは db2pd -tablespace -alldbs コマンドを実行し、RSE が Yes かどうかで確認できます。
また、SQL で MON_GET_TABLESPACE 表関数を使用して RECLAIMABLE_SPACE_ENABLED が 1 であることでも確認できます。
db2 "select char(TBSP_NAME,12)TBSP_NAME, TBSP_ID, TBSP_TYPE, TBSP_USING_AUTO_STORAGE, RECLAIMABLE_SPACE_ENABLED from table(MON_GET_TABLESPACE(null, null)) as t"

TBSP_NAME    TBSP_ID   TBSP_TYPE TBSP_USING_AUTO_STORAGE RECLAIMABLE_SPACE_ENABLED
------------ --------- --------- ----------------------- -------------------------
SYSCATSPACE          0 DMS                             1                         1
TEMPSPACE1           1 SMS                             1                         0
USERSPACE1           2 DMS                             1                         1
自動ストレージ表スペースと非自動ストレージの DMS 表スペースで使用可能なオプションが異なります。
db2pd -tablespace -alldbs で AS が Yes なら自動ストレージ表スペース、No なら非自動ストレージ表スペースです。
また、上記の SQL で TBSP_USING_AUTO_STORAGE が 1 なら自動ストレージ表スペース、0 なら非自動ストレージ表スペースです。

Steps

ここでは USERSPACE1 表スペースに対するエクステント移動を例として使用します。
エクステント移動の開始方法
インスタンス・オーナーでデータベースに接続し、以下のいずれかのステートメントを実行します。
いずれのステートメントも非同期で実行されるため、ステートメント自体は即座に戻ります。
  • 自動ストレージ表スペースの場合
    db2 alter tablespace USERSPACE1 reduce max
  • 非自動ストレージの DMS 表スペースの場合
    db2 alter tablespace USERSPACE1 lower high water mark
エクステント移動のモニター方法
エクステントの移動は db2pd -extentmovement または MON_GET_EXTENT_MOVEMENT_STATUS 表関数でモニターできます。
  • db2pd コマンド
    1. インスタンス・オーナーでデータベース・サーバーにログインします。
    2. 以下のコマンドを実行します。
      $ db2pd -db <db_name> -extentmovement
      以下の出力例では USERSPACE1 表スペースで 32433 エクステントが移動され、あと 9879426  残っていることを示しています。
      Extent Movement:
      Address            TbspName    Current Last Moved  Left     TotalTime
      0x00002AAB356D4BA0 USERSPACE1  1168    1169 32433  9879426  329636
      
  • MON_GET_EXTENT_MOVEMENT_STATUS 表関数
    1. データベース管理者でデータベースに接続します。
      $ db2 connect to <db_name>
    2. 以下の照会でエクステント移動をモニターします。
      $ db2 "select TBSP_NAME, NUM_EXTENTS_MOVED, NUM_EXTENTS_LEFT, TOTAL_MOVE_TIME from TABLE(SYSPROC.MON_GET_EXTENT_MOVEMENT_STATUS('', -1))"
      以下の出力例では USERSPACE1 表スペースで 32433 エクステントが移動され、あと 9879426  残っていることを示しています。
      TBSP_NAME   NUM_EXTENTS_MOVED NUM_EXTENTS_LEFT TOTAL_MOVE_TIME
      ----------- ----------------- ---------------- ---------------
      USERSPACE1              32433          9879426          329636
エクステント移動の中止方法
エクステント移動はオンライン作業のため、DDL や DML の実行を妨げません。ただし、BACKUP や RESTORE、LOAD のようなユーティリティーとは互換性がなく互いに待つ可能性があります。このような理由で、いったんエクステント移動を現時点までコミットして中止するには以下のステートメントを実行します。
  • 自動ストレージ表スペースの場合
    db2 alter tablespace USERSPACE1 reduce stop
  • 非自動ストレージの DMS 表スペースの場合
    db2 alter tablespace USERSPACE1 lower high water mark stop
エクステント移動の完了確認方法
エクステントの移動が完了すると ADM6008I が管理通知ログと db2diag.log に記録されます。
以下のような db2diag コマンドで、直近 24 時間以内に完了したエクステント移動を一覧できます。
$ db2diag -H 1d -g msg:=ADM6008I

2020-07-07-23.59.00.343044+540 E122254A575          LEVEL: Info 
PID     : 4202                 TID : 139854637312   PROC : db2sysc 0 
INSTANCE: db2inst1             NODE : 000           DB   : SAMPLE 
APPHDL  : 0-41714              APPID: *LOCAL.DB2.200707145303
AUTHID  : DB2INST1             HOSTNAME: db2server
EDUID   : 60614                EDUNAME: db2agent (SAMPLE) 0 
FUNCTION: DB2 UDB, buffer pool services, sqlbLockAndMoveExtents, probe:4972 
MESSAGE : ADM6008I  Extents within the following table space have been updated: 
          "USERSPACE1".  Table space ID: "2". 
なお、何らかの理由でエクステント移動が完了前に中止された場合、ADM6030E が記録されます。
運用上の考慮点
  • エクステント移動の進行中にデータベースを非活動化するとエクステント移動は中止され、その時点までの状態がコミットされます。このとき、db2diag.log に以下のようなログが記録されます。
    2020-07-07-23.53.07.732323+540 I3156798E1071         LEVEL: Severe
    PID     : 4202                 TID  : 139854637312   PROC : db2sysc 0
    INSTANCE: db2inst1             NODE : 000            DB   : SAMPLE
    APPHDL  : 0-41714              APPID: *LOCAL.DB2.200707145303
    AUTHID  : DB2INST1             HOSTNAME: db2server
    EDUID   : 60614                EDUNAME: db2agent (SAMPLE)
    FUNCTION: DB2 UDB, buffer pool services, sqlbMoveHighestExtent, probe:3620
    MESSAGE : ZRC=0x80040003=-2147221501=SQLD_INTRP "USER INTERRUPT DETECTED"
              DIA8003C The interrupt  has been received.
    
    2020-07-07-23.53.07.753167+540 I3158820E788          LEVEL: Error
    PID     : 4202                 TID  : 1398854637312  PROC : db2sysc 0
    INSTANCE: db2inst1             NODE : 000            DB   : SAMPLE
    APPHDL  : 0-41714              APPID: *LOCAL.DB2.200707145303
    AUTHID  : DB2INST1             HOSTNAME: db2server
    EDUID   : 60614                EDUNAME: db2agent (SAMPLE)
    FUNCTION: DB2 UDB, buffer pool services, sqlbLockAndMoveExtents, probe:6095
    MESSAGE : ZRC=0x80040003=-2147221501=SQLD_INTRP "USER INTERRUPT DETECTED"
              DIA8003C The interrupt  has been received.
    DATA #1 : String, 67 bytes
    Internal error occurred during extent movement, please contact IBM.
    DATA #2 : String, 12 bytes
    USERSPACE1
  • エクステント移動は BACKUP DB、RESTORE DB、LOAD などのユーティリティーと互換性のないロックを取得します。エクステント移動をこのような操作と並行で実行すると、ロック・イベントモニターに以下のようなロック・タイムアウト・イベントが大量に生成されることがあります。
    ----------------------------------
    Lock Name            : 0x0200000000000000000000006D
    Lock wait start time : 2020-12-07-05.30.11.975518
    Lock wait end time   : 2020-12-07-05.30.21.975127
    Lock Type            : EXTENT_MOVEMENT
    
    Lock mode requested  : Exclusive
    Lock mode held       : Share
    Lock Status          : Waiting
    Tablespace TID       : 2
    Tablespace Name      : USERSPACE1
    
    Attributes            Requester                        Owner
    --------------------- ------------------------------   ------------------------------
    Participant No        1                                2
    Application Handle    21512                            21217
    Application ID        *LOCAL.DB2.201207133011          192.168.0.10.39102.21207133011
    Application Name      db2ExtMov                        db2bp
    Authentication ID     DB2INST1                         APPUSER
    Requesting AgentID    52889                            849972
    Coordinating AgentID  52889                            0
    Agent Status          Connect Completed                UOW Waiting
    Application Action    No action                        Performing Load
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと 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":"a8m500000008PlZAAU","label":"Database Objects-\u003ETablespaces"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"10.1.0;10.5.0;11.1.0;11.5.0;9.7.0"}]

Document Information

Modified date:
20 March 2024

UID

ibm16855579