概要:

当对一个表的结构进行改变后,需要reorg表,重新组织其目录统计信息,为数据库的访问计划提供信息,以便高效执行对其的操作。

对表作reorg操作,发生错误,通过db2 "? sql0xxx"查的错误原因为物理空间已满,然后在$DB2_INSTALL_DIR/sqllib/db2dump/查看db2diag.log可以发现是表空间大小不够。

因为reorg table如果没有指定用哪个表空间来做reorg操作的话,会默认使用该表所在的表空间,而reorg table and index xxx即表和其上的索引一起reorg的话,会默认使用系统临时表空间。

由于reorg table 失败导致的告警排查处理

$ db2 reorg table RMADMIN.RMMIGRATIONTASKS index SYSIBM.SQL120321193909130   use tempspace3

加参数use tablespaceName 指定表空间。不指定表空间,默认为reorg表所在表空间。

查询db2diag报错提示如下

MESSAGE : ZRC=0x85020021=-=SQLB_END_OF_CONTAINER
"DMS Container space full" ADM6044E The DMS tablespace "BASEDBS" (ID "3") is full

符合报错信息为BASEDBS表空间所有表

Cause
If the SQL0289N is also reported at around the time of the DMS full error, then this suggests that the rebalance may be preventing an autoresize. In the SQL0289N error message reference, reasons and are relevant in this scenario: ********** SQL0289N
Unable to allocate new pages in table space tablespace-name.
Explanation A rebalance is in progress, but has not progressed far enough to enable the newly added space to be used.
Diagnosing the problem

Look for a SQL0289N error in the db2diag.log file.

Collect a tablespace snapshot for that DMS tablespace, and check whether the "Last resize attempt failed = Yes"

db2pd -db UIDBSDNX -tablespaces

监视表重组:

select
substr(tabname, , ) as tab_name,
substr(tabschema, , ) as tab_schema,
reorg_phase,reorg_max_phase,
substr(reorg_type, , ) as reorg_type,
reorg_status,
reorg_completion,
dbpartitionnum
from sysibmadm.snaptab_reorg
order by dbpartitionnum
或者通过db2 get snapshot for tables on DBName进行reorg监控:
db2 GET SNAPSHOT FOR TABLES on DBName

通过db2pd reorg选项获得当前正在执行和近期完成的重组信息:

db2pd -db DBName -reorg index

通过list history reorg all for DBName获得表或索引重组信息: db2 list history reorg all for DBName 此外db2 list utilities show detail 可以监控 LOAD ,BACKUP ,RESTORE, RUNSTATS

总结

数据库在进行reorg时失败由于系统无法分配新的页,表空间方面可能存在问题,需要扩充表空间或reorg表时重新指定表空间。

创建临时表空间操作

注意 pagesize要和表的pagesize匹配,可以用原来db2 中创建表空间的语句来参照着创建自己新的表空间。

$db2look -d $dbname -l -e -x -o $db.layout

在线重组表:
在线reorg占用资源很少,对系统影响也很小。在线reorg也叫inplace reorg,不会创建数据副本,而是在原表空间进行,表数据的重组是分批次的,每批次只处理一部份数据,因此会比离线reorg慢很多。
在线reorg可以随时启动和终止,在线reorg会记录大量日志,保证其可恢复性。在线reorg是在后台异步执行的。
db2 reorg table db2inst2.staff inplace allow write access        可以通过db2 list applications show detail |grep db2reorg 查看是否有reorg正在执行

Reorg索引:
当离线reorg结束后,会重建表上的所有索引。在线reorg仅仅维护索引,而不会重建索引(聚集索引除外)。当在线索引reorg完成后,如需要进行索引单独重组,可以使用:db2 reorg indexes all for table tabname

1.离线重组与在线重组对比:

2.重组过程中出现以外(断电),对正在重组的表或索引有何影响?
离线重组:如果断电时reorg正在进行scan或build,崩溃恢复时改表将恢复到初始状态;如果reorg正在进行replace(copy),崩溃恢复将重新执行改阶段;如果reorg正在index create,崩溃恢复阶段将把索引失效,并延迟索引重建。
在线重组:如果断电时reorg正在进行,那么在执行reorg的那个事务会回滚(在线reorg采用增量的方式进行数据处理,已经完成的迁移不会收到影响)。但reorg的状态是终止(paused),可以重新恢复。

db2 reorg table failed处理的更多相关文章

  1. DB2日常维护——REORG TABLE命令优化数据库性能

    一个完整的日常维护规范可以帮助 DBA 理顺每天需要的操作,以便更好的监控和维护数据库,保证数据库的正常.安全.高效运行,防止一些错误重复发生. 由于DB2使用CBO作为数据库的优化器,数据库对象的状 ...

  2. DB2日常维护——REORG TABLE命令优化数据库性能(转)

    [转]DB2日常维护——REORG TABLE命令优化数据库性能 一个完整的日常维护规范可以帮助 DBA 理顺每天需要的操作,以便更好的监控和维护数据库,保证数据库的正常.安全.高效运行,防止一些错误 ...

  3. REORG TABLE命令优化数据库性能

    [转]DB2日常维护——REORG TABLE命令优化数据库性能     一个完整的日常维护规范可以帮助 DBA 理顺每天需要的操作,以便更好的监控和维护数据库,保证数据库的正常.安全.高效运行,防止 ...

  4. db2 reorg详解

    reorgchk,检查table index 是否需要重组.reorg 重组,重新放置数据位置.runstats 统计信息,可以优化查询器 一个完整的日常维护规范可以帮助 DBA 理顺每天需要的操作, ...

  5. db2 reorg到底需要多少表空间(转)

    脱机reorg需要一定的空间,这个空间与目标所在的数据表空间.索引表空间.以及临时表空间均有关,各空间需求的大小与表和索引所占用的数据页和索引页相关. (1)对表执行reorg操作如:db2 reor ...

  6. db2 reorg(转)

    DB2 reorg RUNSTATS: db2 connect to rmdb11 user rmadmin using rmadmin 对所有用户表执行runstats(reorgchk加updat ...

  7. db2 reorg runstats rebind具体操作

    db2 reorg runstats rebind具体操作 #reorg table db2 -x "select 'reorg table '||rtrim(tabschema)||'.' ...

  8. db2 reorg pending

    通常在数据库上线之前,我们都会对数据库做周密的规划,无论在测试阶段还是上线之初,也难免由于需求的更改会对数据中的表做一些更改.而某些alter table语句则会导致该表处于reorg-pending ...

  9. WARNING: Re-reading the partition table failed with error 16: Device or resource busy.

    在 mkfs.ext4 /dev/sda2 格式化硬盘空间时,可能出现这种错误. had this situation at office where I was told to re-partiti ...

随机推荐

  1. password、文件MD5加密,passwordsha256、sha384、sha512Hex等加密

    package encryption; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io. ...

  2. LeetCode 90:Subsets II

    Given a collection of integers that might contain duplicates, nums, return all possible subsets. Not ...

  3. MySql之查询基础与进阶

     转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/8283547.html 一:基本查询 SELECT [DISTINCT] 列1,列2,列3... FROM 表 ...

  4. excel随机函数

    =D7+RAND()*(8000-4250) 含义: 1.在D7数值的基础上,随机加一个数值,该数值的随机范围为4250——8000. 2.注意8000和4250要反着写

  5. [Python]编码声明:是coding:utf-8还是coding=urf-8呢

    推荐: #!/usr/bin/env python3 # -*- coding: utf-8 -*- 我们知道在Python源码的头文件中要声明编码方式,如果你不只是会用到ascii码,很多人都写得都 ...

  6. vbox磁盘空间如何扩容

    vbox磁盘空间如何扩容   为虚拟机硬盘扩容(Oracle VM VirtualBox) VBoxManage modifyhd         <uuid>|<filename& ...

  7. 初始cfx开发webservice, 简单实例应用

    项目结构图: 步骤一: 添加maven 依赖包 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q ...

  8. 【Linux】使用w命令和uptime命令查看系统负载

    在Linux系统中查询系统CPU和内存的负载(使用率)时,我们通常习惯于使用top.atop或者ps,这篇文章将要给大家介绍如何使用w命令和uptime命令来查看系统的负载情况,对于uptime命令, ...

  9. lua -- 所有UI组件的基类

    -- 组件行为基础 local Behavior = class("Behavior"); function Behavior:ctor(name) self.owner = ni ...

  10. 在Centos 6 64bit 上安装 Hyperic HQ 5.8.2.1 中文版

    原文:https://my.oschina.net/hyperichq/blog/306791 环境描述: [test@tester ~]$ cat /etc/issue CentOS release ...