一次完整的DB2 reorg经历

本文记录了一次针对DB2数据库的reorg操作,解决因历史图片累积导致的性能问题。通过RUNSTATS收集统计信息,发现重要表和索引未更新,进而执行REORG过程,包括对分区表的处理,监控reorg状态,以及最后的runstats检查和rebind操作,成功提升了数据库性能。
摘要由CSDN通过智能技术生成

事件:

ecmapp11的历史图片每天累积,TSM每天可以建立迁移任务,但却取不到任何数据;
与其关联的数据库rmdb11查询操作速度也超慢, 在和数据量相当的另一个数据库rmdb12上,同样的查询语句只需要花费1秒钟,但rmdb11要用十几分钟。

  • 处理办法:

重建表和索引,清除叶子页碎片,可以有效提高数据库性能。
首先查询syscat.indexes表,查看STATS_TIME列,重要的用户表的索引在最近一次runstats的时间。
这里写图片描述
这里写图片描述

从结果可以看到,几乎所有重要的用户表在创建之后,就从未做过runstats。
所以为了彻底的检查,哪些表和索引需要进行重建,需要对所有用户表做runstats检查。

一个完整的REORG表的过程应该是由下面的步骤组成的:
这里写图片描述

RUNSTATS:

  • 登陆数据库:
db2 connect to rmdb11 user rmadmin using rmadmin

对所有用户表执行runstats(reorgchk加update参数等同于runstats)

$ db2 reorgchk update statistics on table user

Doing RUNSTATS ....

REORG:

在检查结果中,所有带星号的表或分区表、以及索引都需要做reorg重建。

$ db2 reorg table RMADMIN.EXPLAIN_DIAGNOSTIC index SYSIBM.SQL120703164841960 use tempspace1
DB20000I  The REORG command completed successfully.
$ db2 reorg table RMADMIN.EXPLAIN_DIAGNOSTIC_DATA index RMADMIN.EXP_DIAG_DAT_I1 use tempspace1
DB20000I  The REORG command completed successfully.
$ db2 reorg table RMADMIN.EXPLAIN_PREDICATE index RMADMIN.PRD_I1 use tempspace1
DB20000I  The REORG command completed successfully.
$ db2 reorg table RMADMIN.RMSTGGRPCLASS index SYSIBM.SQL120321193908820 use tempspace1
DB20000I  The REORG command completed successfully.
$ db2 reorg table RMADMIN.RMOBJECTS   use tempspace1
SQL2217N  The page size of the system temporary table space used by the REORG 
utility must match the page size of the table space(s) in which the table data 
resides (including the LONG or LOB column data).  The cause is based on the 
following reason codes "1".

SQL2217N
REORG 实用程序使用的系统临时表空间的页大小必须与表数据 (包括 LONG 或 LOB
列数据)所在表空间的页大小相匹配。原因基于下列原因码 原因码。 说明

下面是原因码的列表:
1.原因与表的数据的临时表空间的选择相关。
2.原因与表的 LONG 或 LOB 数据的临时表空间的选择相关。 如果对 REORG 实用程序显式地指定了系统临时表,那么 REORG 实用程序使用的系统临时表空间的页大小必须与表数据(包括 LONG 或 LOB列数据)所在的表空间的页大小相匹配,否则必须为长数据指定适当的容器。下列其中一项违反了此限制:
表数据所在的表空间的页大小与指定的系统临时表空间的页大小不同。 该表包含 LONG 或 LOB列,这些列的数据驻留在页大小与系统临时表空间和表的规则数据的页大小不同的表空间中,但是,无法为 LONG 或 LOB数据对象找到具有正确页大小的表空间。 如果未对 REORG 实用程序指定系统临时表空间或 LONG临时表空间,那么该实用程序在内部查找系统临时表空间。在数据库中不存在使用与表数据页大小相同的页大小的系统临时表空间,或者该系统临时表空间此时不可用。

用户响应

如果数据库中不存在使用与表数据页大小相同的页大小的系统临时表空间,请创建一个系统临时表空间,它使用与该表数据的页大小相匹配的页大小。如果表数据的页大小与
LOB 或 LONG 数据的页大小不同,那么应确保使用该页大小的系统临时表空间也存在。
如果数据库中存在使用与表数据页大小相同的页大小的系统临时表空间,但是发出命令时该临时表空间不可用,请在该系统临时表空间可用时重新发出该命令。

当前使用的临时表空间页大小和该表的页大小不符合,需要新建一个页大小和该表的页大小符合的系统临时表空间。
查看各个表空间的pagesize:

SELECT tbspace, pagesize FROM SYSIBM.SYSTABLESPACES

查看当前bufferpool:

SELECT * FROM SYSCAT.BUFFERPOOLS

新建一个页大小为32K的bufferpool

$ db2 CREATE BUFFERPOOL temppool32 PAGESIZE 32768
DB20000I  The SQL command completed successfully.

新建一个临时表空间,使用刚才那个bufferpool

$ db2 "create system temporary tablespace tempspace3 pagesize 32K managed by system using ('/rmdb11data/rminst11/NODE0000/SQL00001/tmpspace3') BUFFERPOOL temppool32"
DB20000I  The SQL command completed successfully.

重新执行reorg:

$ db2 reorg table RMADMIN.RMMIGRATIONTASKS index SYSIBM.SQL120321193909130   use tempspace3
监视表重组:
select
       substr(tabname, 1, 15) as tab_name,
       substr(tabschema, 1, 15) as tab_schema,
       reorg_phase,reorg_max_phase,
       substr(reorg_type, 1, 20) as reorg_type,
       reorg_status,
       reorg_completion,
       dbpartitionnum
     from sysibmadm.snaptab_reorg
     order by dbpartitionnum

或:

db2 GET SNAPSHOT FOR TABLES on rmdb11
db2 list history reorg all for rmdb11
db2pd -db rmdb11 -reorgs index

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

或:

$ db2pd -reorgs -db rmdb11

Database Partition 0 -- Database RMDB11 -- Active -- Up 3 days 21:50:20 -- Date 10/30/2015 14:32:09

Table Reorg Information:
Address            TbspaceID TableID PartID MasterTbs MasterTab TableName          Type    IndexID    TempSpaceID
0x070000024C0D1528 5         260     n/a    n/a       n/a       EXPLAIN_PREDICATE  Offline 1          1         
0x070000024C0DEDA8 5         262     n/a    n/a       n/a       EXPLAIN_DIAGNOSTIC Offline 1          1         
0x070000024C0E6D28 5         263     n/a    n/a       n/a       EXPLAIN_DIAGNOSTIC Offline 1          1         
0x070000024B2C9628 7         5       n/a    n/a       n/a       RMMIGRATIONTASKS   Offline 1          13        
0x070000024B2A64A8 5         17      n/a    n/a       n/a       RMSTGGRPCLASS      Offline 1          1         

Table Reorg Stats:
Address            TableName          Start               End                 PhaseStart          MaxPhase   Phase      CurCount   MaxCount   Status  Completion
0x070000024C0D1528 EXPLAIN_PREDICATE  10/30/2015 10:12:38 10/30/2015 10:12:38 10/30/2015 10:12:38 4          IdxRecreat 0          0          Done    0         
0x070000024C0DEDA8 EXPLAIN_DIAGNOSTIC 10/30/2015 10:10:58 10/30/2015 10:10:59 10/30/2015 10:10:58 4          IdxRecreat 0          0          Done    0         
0x070000024C0E6D28 EXPLAIN_DIAGNOSTIC 10/30/2015 10:12:13 10/30/2015 10:12:13 10/30/2015 10:12:13 4          IdxRecreat 0          0          Done    0         
0x070000024B2C9628 RMMIGRATIONTASKS   10/30/2015 12:57:45 n/a                 10/30/2015 14:17:16 4          IdxRecreat 202794     576060     Started 0         
0x070000024B2A64A8 RMSTGGRPCLASS      10/30/2015 10:13:05 10/30/2015 10:13:05 10/30/2015 10:13:05 4          IdxRecreat 0          0          Done    0         
$ 

这里写图片描述

这里写图片描述

完成!

参考资料:
重组处理期间将发生的最大重组阶段数。此项仅适用于经典(脱机)重组。值的范围为 2 到 4(SORT, BUILD,
REPLACE,INDEX_RECREATE)。此值还可能指示执行重组时为了从多维集群 (MDC)
表中回收扩展数据块而完成的工作总量。执行这样的重组时,此值是 3(SCAN、DRAIN 和 RELEASE)。

对于分区表来说,重组是逐个数据分区进行的。对于传统表重组而言,可能的阶段如下所示(这些阶段与它们在 sqlmon.h
中的相应定义一起列示): 排序:SQLM_REORG_SORT 构建:SQLM_REORG_BUILD
替换:SQLM_REORG_REPLACE 索引重新创建:SQLM_REORG_INDEX_RECREATE
字典构建:SQLM_REORG_DICT_SAMPLE
对于分区表而言,在数据分区的“替换”阶段完成后,可以直接进入分区索引(如果有的话)的“索引重建”阶段。仅当每个数据分区上的所有先前阶段成功完成后,reorg_phase
元素才会指示“索引重新创建”阶段。

在 XDA 对象压缩期间,XML 数据重组阶段涉及识别表的 XML 存储器对象。XML 字典构建阶段涉及尝试为 XML
存储器对象创建压缩字典。对于 XDA 对象压缩而言,可能的两个阶段如下所示: XML 重组:SQLM_REORG_XML_DATA XML
字典构建:SQLM_REORG_XML_DICT_SAMPLE 对于分区表,在执行扩展数据块回收操作时,可能的阶段如下所示:
扫描:SQLM_REORG_SCAN 漏出:SQLM_REORG_DRAIN 释放:SQLM_REORG_RELEASE

$ db2 reorg indexes all for table RMADMIN.RMTRANSACTIONS ALLOW write ACCESS cleanup only
DB20000I  The REORG command completed successfully.

分区表reorg

RMADMIN.RMOBJECTS是分区表,reorg需要指定data partition number名称,
总共有62个分区,标记F1的有39个分区,2个索引分区标记F8
Index: RMADMIN.IDX_OBJ_STATUS
Data Partition: EXCEP2
Index: SYSIBM.SQL120528224438680
Data Partition: EXCEP2

参考:
查询该表分区情况:

select * from SYSCAT.DATAPARTITIONS where tabname='RMOBJECTS'

db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P13_1

这里写图片描述

db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P13_2
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P13_3
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P13_4
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P13_5
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P13_6
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P13_7
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P13_8
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P13_9
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P13_10
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P13_11
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P13_12
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P13_13
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P12_10
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P12_11
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P12_12
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P12_6
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P12_7
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P12_8
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P12_9
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P14_1
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P14_2
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P14_3
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P14_4
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P14_5
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P14_6
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P14_7
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P14_8
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P14_9
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P14_10
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P14_11
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P14_12
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P15_1
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P15_2
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P15_3
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P15_4
db2 reorg table RMADMIN.RMOBJECTS index RMADMIN.IDX_OBJ_STATUS   allow no access  ON DATA PARTITION  P15_5
监控reorg状态:
$ db2pd -db rmdb11 -reorgs index

Database Partition 0 -- Database RMDB11 -- Active -- Up 5 days 04:54:34 -- Date 10/31/2015 21:36:23

Table Reorg Information:
Address            TbspaceID TableID PartID MasterTbs MasterTab TableName          Type    IndexID    TempSpaceID
0x070000024B2DC028 3         12      6      -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B2E0E28 3         13      7      -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B65C928 3         14      8      -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B2DF328 3         15      9      -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B66BF28 3         16      10     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B66E928 3         17      11     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B6716A8 3         18      12     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B658028 3         19      13     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B4EEAA8 3         20      14     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B4E6DA8 3         21      15     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B6109A8 3         22      16     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B6305A8 3         23      17     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B5BD128 3         24      18     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B532528 3         25      19     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B519CA8 3         26      20     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024C2AAE28 3         27      21     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024C2C15A8 3         28      22     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024C2C42A8 3         29      23     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B516728 3         30      24     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B5A79A8 3         31      25     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B52A628 3         32      26     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B533A28 3         33      27     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024C2BE7A8 3         34      28     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024C2BFF28 3         35      29     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024C2C2C28 3         36      30     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B4F4FA8 3         37      31     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B4EC3A8 3         38      32     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B4ED828 3         39      33     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B306828 3         40      34     -6     -32768 RMOBJECTS          Offline 2          3         
0x07000000400101A8 3         41      35     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B670028 3         42      36     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B53DBA8 3         43      37     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024B517DA8 3         44      38     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024C0ACA28 3         45      39     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024C292028 3         46      40     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024C29ABA8 3         47      41     -6     -32768 RMOBJECTS          Offline 2          3         
0x070000024C0D1528 5         260     n/a    n/a       n/a       EXPLAIN_PREDICATE  Offline 1          1         
0x070000024C0DEDA8 5         262     n/a    n/a       n/a       EXPLAIN_DIAGNOSTIC Offline 1          1         
0x070000024C0E6D28 5         263     n/a    n/a       n/a       EXPLAIN_DIAGNOSTIC Offline 1          1         
0x070000024B2C9628 7         5       n/a    n/a       n/a       RMMIGRATIONTASKS   Offline 1          13        
0x070000024B2A64A8 5         17      n/a    n/a       n/a       RMSTGGRPCLASS      Offline 1          1         

Table Reorg Stats:
Address            TableName          Start               End                 PhaseStart          MaxPhase   Phase      CurCount   MaxCount   Status  Completion
0x070000024B2DC028 RMOBJECTS          10/31/2015 11:10:14 10/31/2015 20:52:09 10/31/2015 11:10:14 4          IdxRecreat 0          0          Done    0         
0x070000024B2E0E28 RMOBJECTS          10/31/2015 11:10:15 10/31/2015 20:52:09 10/31/2015 11:44:30 4          IdxRecreat 0          0          Done    0         
0x070000024B65C928 RMOBJECTS          10/31/2015 11:51:37 10/31/2015 20:52:09 10/31/2015 12:15:37 4          IdxRecreat 0          0          Done    0         
0x070000024B2DF328 RMOBJECTS          10/31/2015 12:20:41 10/31/2015 20:52:09 10/31/2015 12:39:03 4          IdxRecreat 0          0          Done    0         
0x070000024B66BF28 RMOBJECTS          10/31/2015 09:46:53 10/31/2015 20:52:09 10/31/2015 10:07:56 4          IdxRecreat 0          0          Done    0         
0x070000024B66E928 RMOBJECTS          10/31/2015 10:13:55 10/31/2015 20:52:09 10/31/2015 10:34:53 4          IdxRecreat 0          0          Done    0         
0x070000024B6716A8 RMOBJECTS          10/31/2015 10:41:15 10/31/2015 20:52:09 10/31/2015 11:04:26 4          IdxRecreat 0          0          Done    0         
0x070000024B658028 RMOBJECTS          10/30/2015 16:34:06 10/31/2015 20:52:09 10/30/2015 17:49:05 4          IdxRecreat 0          0          Done    0         
0x070000024B4EEAA8 RMOBJECTS          10/30/2015 19:49:59 10/31/2015 20:52:09 10/30/2015 20:55:18 4          IdxRecreat 0          0          Done    0         
0x070000024B4E6DA8 RMOBJECTS          10/30/2015 21:06:51 10/31/2015 20:52:09 10/30/2015 22:29:49 4          IdxRecreat 0          0          Done    0         
0x070000024B6109A8 RMOBJECTS          10/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值