IBM Support

[Db2] データベース・バックアップのサイズを見積もる方法

Question & Answer


Question

データベース・バックアップのサイズを見積もる方法を教えてください。

Answer


確認方法1
おおよそのサイズは、表スペースのサイズや最高水準点から見積もることができます。
注:バックアップにはデータベース・メタ・データも含まれます。メタ・データが大きい場合、以下の見積もりは正確ではありません。
  • SMS 表スペースの場合: 表スペース内の合計ページ数(TBSP_TOTAL_PAGES)
  • DMS 表スペースの場合: 表スペース・ページの最高水準点(TBSP_MAX_PAGE_TOP)
これらの値は MON_GET_TABLESPACE 表関数で確認できます。
たとえば、次のようにしてデータベース・パーティションごとのバックアップ・サイズを見積もります。
  1. MON_GET_TABLESPACE 表関数によるサイズ確認
    $ db2 "select dbpartitionnum, sum(case when TBSP_TYPE='DMS' then TBSP_MAX_PAGE_TOP*TBSP_PAGE_SIZE else TBSP_TOTAL_PAGES*TBSP_PAGE_SIZE end) as size_in_bytes from table(mon_get_tablespace(null,-2)) as t group by dbpartitionnum"
    
    DBPARTITIONNUM SIZE_IN_BYTES
    -------------- --------------------
                 0           1145085952
    
      1 record(s) selected.
  2. 実際の(ファイル・システムへの)バックアップ
    $ db2 backup database sample online to /work//BKUP
    Backup successful. The timestamp for this backup image is : 20180420182028
  3. 出力サイズの確認
    ls -l や du コマンドで確認したサイズは、ステップ 1) で確認したサイズとほぼ一致しています。
    $ ls -l /work/BKUP/SAMPLE.0.db2inst1.DBPART000.20180420182028.001
    -rw-------    1 db2inst1 db2iadm1 1225068544 Apr 20 18:20 /work/BKUP/SAMPLE.0.db2inst1.DBPART000.20180420182028.001
    
    $ du /work/BKUP/SAMPLE.0.db2inst1.DBPART000.20180420182028.001
    2392720 /work/BKUP/SAMPLE.0.db2inst1.DBPART000.20180420182028.001
    
    $ echo "2392720*512" | bc
    1225072640

確認方法2

より正確なサイズを確認したい場合は、一旦 NULL デバイス (/dev/null) にバックアップを取得し、db2diag.log にメディア・コントローラーが出力した書き出しサイズの合計よりバックアップ・サイズを確認します。

  1. NULL デバイスへのバックアップ実行
    $ db2 backup database sample online to /dev/null
    Backup successful. The timestamp for this backup image is : 20180420182612
  2. db2diag.log の確認
    $ db2diag -g 'function:=sqluxLogDataStats'
    
    2018-04-20-18.26.20.774689+540 E71436A1589          LEVEL: Info
    PID     : 24117460             TID : 16253          PROC : db2sysc 0
    INSTANCE: db2inst1             NODE : 000           DB   : SAMPLE
    APPHDL  : 0-6333               APPID: *LOCAL.db2inst1.180420092610
    AUTHID  : DB2INST1             HOSTNAME: db2server
    EDUID   : 16253                EDUNAME: db2agent (SAMPLE) 0
    FUNCTION: DB2 UDB, database utilities, sqluxLogDataStats, probe:395
    MESSAGE : Performance statistics
    DATA #1 : String, 1082 bytes
    
    Parallelism       = 5
    Number of buffers = 5
    Buffer size       = 16781312 (4097 4kB pages)
    
    BM#    Total      I/O      MsgQ      WaitQ      Buffers   kBytes
    ---  --------  --------  --------  --------    --------  --------
    000      9.00      7.19      0.00      1.45          64   1004416
    001      9.00      8.85      0.00      0.11           8    112832
    002      8.99      0.03      0.00      8.96           1       608
    003      8.99      0.01      0.00      8.98           1       384
    004      8.99      0.00      0.00      8.99           0         0
    ---  --------  --------  --------  --------    --------  --------
    TOT     44.99     16.09      0.00     28.50          74   1118240
    
    MC#    Total      I/O      MsgQ      WaitQ      Buffers   kBytes
    ---  --------  --------  --------  --------    --------  --------
    000      9.00      0.00      9.00      0.00          75   1196356
    ---  --------  --------  --------  --------    --------  --------
    TOT      9.00      0.00      9.00      0.00          75  [1196356]
    上記の MC# のセクションの kBytes の TOT を確認します。
    ここでは、1196356 * 1024 = 1225068544 Bytes と分かります。
  3. 実際の (ファイル・システムへの) バックアップ
    $ db2 backup database sample online to /work/BKUP
    Backup successful. The timestamp for this backup image is : 20180420182639
  4. 出力サイズの確認
    ls -l で確認したサイズは、ステップ 2) で確認したサイズと一致しています。
    $ ls -l /work/BKUP/SAMPLE.0.db2inst1.DBPART000.20180420182639.001
    -rw-------    1 ktsuchiy db2iadm1 1225068544 Apr 20 18:27 /work/BKUP/SAMPLE.0.db2inst1.DBPART000.20180420182639.001
    
    du コマンドの出力はブロック単位のため、若干の誤差が生じます。
    $ du /work/BKUP/SAMPLE.0.db2inst1.DBPART000.20180420182639.001
    2392720 /work/BKUP/SAMPLE.0.db2inst1.DBPART000.20180420182639.001
    $ echo "2392720*512" | bc
    1225072640

※注意

上記の手法は、自動リカバリー・オブジェクト管理を有効にされている場合に、保存するデータベース・バックアップ数 (NUM_DB_BACKUPS) に指定した数より NULL デバイスにバックアップした回数だけ、実際のバックアップ数が減ることになりますのでご注意ください。(自動リカバリー・オブジェクト管理の解説についてはデータベース・リカバリー・オブジェクト管理の自動化をご参照ください)

自動リカバリー・オブジェクト管理の設定例:

$ db2 get db cfg for sample | egrep 'REC_HIS_RETENTN|NUM_DB_BACKUPS|AUTO_DEL_REC_OBJ'
 保存するデータベース・バックアップ数   (NUM_DB_BACKUPS) = 3
 リカバリー履歴保持 (日)               (REC_HIS_RETENTN) = 0
 リカバリー・オブジェクトの自動削除   (AUTO_DEL_REC_OBJ) = ON


関連情報

MON_GET_TABLESPACE 表関数 - 表スペース・メトリックの取得
データベース・リカバリー・オブジェクト管理の自動化
パスポート・アドバンテージによく寄せられる質問

お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

[{"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":"a8m3p0000006wjpAAA","label":"Backup"}],"ARM Case Number":"","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"}],"Version":"10.1.0;10.5.0;11.1.0;11.5.0"}]

Document Information

Modified date:
15 August 2023

UID

swg22015736