db2 reorg table failed处理
概要:
当对一个表的结构进行改变后,需要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处理的更多相关文章
- DB2日常维护——REORG TABLE命令优化数据库性能
一个完整的日常维护规范可以帮助 DBA 理顺每天需要的操作,以便更好的监控和维护数据库,保证数据库的正常.安全.高效运行,防止一些错误重复发生. 由于DB2使用CBO作为数据库的优化器,数据库对象的状 ...
- DB2日常维护——REORG TABLE命令优化数据库性能(转)
[转]DB2日常维护——REORG TABLE命令优化数据库性能 一个完整的日常维护规范可以帮助 DBA 理顺每天需要的操作,以便更好的监控和维护数据库,保证数据库的正常.安全.高效运行,防止一些错误 ...
- REORG TABLE命令优化数据库性能
[转]DB2日常维护——REORG TABLE命令优化数据库性能 一个完整的日常维护规范可以帮助 DBA 理顺每天需要的操作,以便更好的监控和维护数据库,保证数据库的正常.安全.高效运行,防止 ...
- db2 reorg详解
reorgchk,检查table index 是否需要重组.reorg 重组,重新放置数据位置.runstats 统计信息,可以优化查询器 一个完整的日常维护规范可以帮助 DBA 理顺每天需要的操作, ...
- db2 reorg到底需要多少表空间(转)
脱机reorg需要一定的空间,这个空间与目标所在的数据表空间.索引表空间.以及临时表空间均有关,各空间需求的大小与表和索引所占用的数据页和索引页相关. (1)对表执行reorg操作如:db2 reor ...
- db2 reorg(转)
DB2 reorg RUNSTATS: db2 connect to rmdb11 user rmadmin using rmadmin 对所有用户表执行runstats(reorgchk加updat ...
- db2 reorg runstats rebind具体操作
db2 reorg runstats rebind具体操作 #reorg table db2 -x "select 'reorg table '||rtrim(tabschema)||'.' ...
- db2 reorg pending
通常在数据库上线之前,我们都会对数据库做周密的规划,无论在测试阶段还是上线之初,也难免由于需求的更改会对数据中的表做一些更改.而某些alter table语句则会导致该表处于reorg-pending ...
- 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 ...
随机推荐
- java的两种同步方式, Synchronized与ReentrantLock的区别
java在编写多线程程序时,为了保证线程安全,需要对数据同步,经常用到两种同步方式就是Synchronized和重入锁ReentrantLock. 相似点: 这两种同步方式有很多相似之处,它们都是加锁 ...
- 设置response头信息禁止缓存
java代码中可通过如下代码设置 response.setHeader("Pragma", "No-Cache"); response.setHeader(&q ...
- chrome浏览器的跨域设置 Google Chrome浏览器下开启禁用缓存和js跨域限制--disable-web-security
chrome用户默认路径 Win7:C:\Users\[用户名]\AppData\Local\Google\Chrome\User Data\XP:C:\Documents and Settings\ ...
- Nuget 配置文件的位置
最近在 Visual Studio 中使用 Nuget 时,发现总是连接代理服务器,忘了什么时候配置的了,找了半天没找到配置位置,最后发现在这个地方: %appdata%\NuGet 找到 NuGet ...
- 大数高精度计算库gmp简介
1.编译安装,我用的ubuntu18.04 $sudo apt-get install m4 //默认没安装,gmp用这个 $tar -jvxf gmp-.tar.bz2 //解压 $cd gmp- ...
- 浅谈.net中事务
.net中的事务 关键几点 概念:1:什么是事务 2:什么时候用事务 3:基本的语法 (1): 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit).事务通常 ...
- python调用nmap探测局域网设备
平台:linux 描述:利用os.popen()函数调用系统命令nmap进行扫描,并用grep命令对扫描结果关键内容进行提取 代码 #!/usr/bin/env pthon #--*--coding= ...
- 创建shell脚本
1.写一个脚本 a) 用touch命令创建一个文件:touch my_script b) 用vim编辑器打开my_script文件:vi my_script c) 用vim编辑器编辑my_script ...
- Y460 安装ubuntu 12.04系统黑屏,登录界面黑屏
ubuntu 12.04系统黑屏,登录界面黑屏,但是命令行界面可以登录,也可以正常使用,当时在装CVS,装完重启就这样了,可能是因为前一天装更新时,突然断电导致图形界面损坏,参考他人方法,终于修复,总 ...
- Ubuntu上运行Blender,在控制台上查看运行结果
1.首先在控制台打开Blender. 具体操作:找到Blender的安装路径,我的是:/home/lcx/下载/blender-2.78c-linux-glibc219-x86_64 $cd /hom ...