欢迎来到天天文库
浏览记录
ID:39997643
大小:25.22 KB
页数:9页
时间:2019-07-16
《informix常用故障处理操作》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Informix计算长事务回滚时间及解决办法如何估算长事务回滚的时间环境:IDS9.40及其以上版本问题描述:用户往往由于一次操作的数据量过大,导致长事务,使整个数据库服务器暂时挂起而不可用。用户需要估算长事务回滚完成的时间,以便做出安排。解答:可以使用onstat-x-r10监控该事务的回滚状态.并通过日志回滚的速率来估算回滚的时间。“-r10”表示每10秒显示一次。下面是两次的间隔10秒输出:addressflagsuserthreadlocksbeginlgcurloglogpositisolretryscoordd745b58A-R--d715e7c490451530x8f61c8
2、COMMIT0addressflagsuserthreadlocksbeginlgcurloglogpositisolretryscoordd745b58A-R--d715e7c490451530x5a1accCOMMIT0从输出可以看到,该事务起始的逻辑日志号是51,当前回滚到53,还需要继续回滚2个逻辑日志。在这10秒中回滚的逻辑日志大小可以通过两次的logposit相减得出,方法为:去掉每个logposit的后三位,剩下的数字相减就是日志回滚的page数目,再乘以pagesize就可得到这10秒回滚的日志大小。例如:(0x8f6-0x5a1)*4=3412K(4表示当前系统的page
3、size是4K),那么一分钟逻辑日志能够回滚3412/10*60=20472K假设每个逻辑日志的大小为50M,则该长事务还需要回滚的时间大约是5.28分钟((1024*50)*2+0x5a1*4)/20472=5.28一、查看数据库状态正常情况下是onstat-IBMInformixDynamicServerVersion9.40.FC7 --On-Line--Up35days16:51:16--3920896Kbytes长事务情况下是onstat-IBMInformixDynamicServerVersion9.40.FC7 --On-Line(LONGTX)--Up35da
4、ys16:41:40--3920896KbytesBlocked:LONGTX 二、显示事务(transaction)信息其中flag字段中第三个标志位为R说明事务在rollback,说明这个事务是长事务onstat-xIBMInformixDynamicServerVersion9.40.FC7 --On-Line(LONGTX)--Up35days16:41:56--3920896KbytesBlocked:LONGTX Transactions1cf0a6748 A-R--1cd55c618 6420731194031194050x1aa91e4DIRT
5、Y 0 三、通过长事务的userthread值找出sessionid onstat-u
6、grep1cd55c6181cd55c618 --RPX--1880841informix- 0 0 642073256446 323049四、显示会话连接信息,找出造成长事务的SQL语句,并优化onstat-gses1880841informix锁表处理步骤:锁表处理步骤:1、onstat-ks
7、grepHDR+X//查询是那个表被锁addresswtlistownerlklisttypetblsnumrowidkey#/bsizc18095
8、100d656e774c181cb3cHDR+X6002e12c6020需要关注lklist和type项,从上面来看tblsnum为6002e1(6292193十六进制转换成十进制)的表被锁了。可以重查询是那个表被锁:dbaccess:select*fromsystableswherepartnum='6292193'得到tabnamebasetab_mvpnownersmpmmlpartnum6292193tabid12813rowsize464ncols61nindexes1nrows2984created12/10/2002version839843846tabtypeTlockle
9、velRnpused746fextsize16nextsize16flags02、onstat-u,将owner(address)为d656e774的线程找出来addressflagssessiduserttywaittoutlocksnreadsnwritesd656e774Y--P---4261smp20-d6ad2330018099620163、onstat-gsqld656e774可以将这个线程执行过的sql语句
此文档下载收益归作者所有