2007-3-27 20:00
seven
beginner-bj, 看个问题
环境:
aix5.3-04-CSP,db2 v8.2 fp12,hacmp 5.3
db2配置了mirror active log path
问题描述:
用户一个大事务(一个delete里删100多W笔记录),结果导致N个ap lock-wait,并且active log full,
pd操作:
1. force 下delete指令的这个ap,因为force application异步操作,而且active log full了,下了没效果。
2. 没辙了,在hacmp里扩active log、mirror active log两个文件系统
结果:
在扩active log文件系统的时候,db2 crash了。start instance,activate db后,db2开始crash recovery。
疑问:
1. 在active log full的时候,下force application咋就没效果了?
2. 在extend active log fs的时候,db crash?
2007-3-27 20:50
beginner-bj
1、force application一定要等到回滚结束后才能执行。如果先执行了,数据库就会不一致的状态,这个是绝对不能发生的。简单的说,就是回滚比force application的优先级高。
2、db crash肯定不是由extend active log fs引起的,只是extend active log fs的时候db碰巧crash了。crash的原因应该是由前面的动作引起的,是不是做了kill pid之类的操作?db2daig.log里应该有些蛛丝马迹。
delete操作一次一定不要做太大的操作,100多W笔记录,最好用where过滤分几次删。
也有做delete操作不记log的方法,但不建议使用。
也有log满了不自动回滚,所有事物都暂挂的方法,估计也很少有人用。
2007-3-27 21:08
seven
[quote]原帖由 [i]beginner-bj[/i] 于 2007-3-27 20:50 发表 [url=http://bbs.loveunix.net/redirect.php?goto=findpost&pid=649049&ptid=70999][img]http://bbs.loveunix.net/images/common/back.gif[/img][/url]
1、force application一定要等到回滚结束后才能执行。如果先执行了,数据库就会不一致的状态,这个是绝对不能发生的。简单的说,就是回滚比force application的优先级高。
2、db crash肯定不是由extend active log fs引起的,只是extend active log fs的时候db碰巧crash了。crash的原因应该是由前面的动作引起的,是不是做了kill pid之类的操作?db2daig.log里应该有些蛛丝马迹。
delete操作一次一定不要做太大的操作,100多W笔记录,最好用where过滤分几次删。
也有做delete操作不记log的方法,但不建议使用。
也有log满了不自动回滚,所有事物都暂挂的方法,估计也很少有人用。
[/quote]
1. 我是从db的层面来force application的,不是直接kill 用户的那个pid
2. 是不是这么理解:
force applicaion,db2执行的逻辑是:先rollback该事务,然后断开连接的session,在我所举的案例里,正好active log又满了,rollback pending,加上force applicaion是个异步的操作,导致了“表面看起来”force applicaion没效果?
3. db crash确确实实是我extend fs的时候发生的,当时本来想stop db的,但是为了避免影响到应用,想采用extend active log fs后,让交易继续跑下去,我的force也能生效,就在这会,db2 crash了(我干活,第一步就喜欢开个session tail -f db2diag.log)
因为一般我们online extend fs的时候,对应用是没影响的,我就纳闷了,db2怎么这么敏感的?
4. 我这边正好配置了log满,事务不回滚,交易pending
5. 客户因为自己下了个这么“愚蠢”的delete操作,写报告去了:lol
2007-3-27 21:25
beginner-bj
2的理解是正确的。就是因为force applicaion是异步的,rollback的优先级高。
db crash的原因不好猜测,如果db2diag、errpt、alog里什么都没有那就没法判断了。
2007-3-27 22:03
seven
问开去,先抛开crash不谈,
beginner-bj,如果你遇到这样的case,怎样在对应用影响最小的前提下,处理这个问题呢?
一边,因为delete操作,导致某几支应用lock-wait,想force他,又因为active log full,进退两难。
我现在最最怕做online的操作了,最近运气太背,干啥,啥不顺。
要烧香去咯~
2007-3-27 22:51
beginner-bj
正常情况下,设置BLK_LOG_DSK_FUL=YES后,遇到LOG FULL的情况,去EXPAND FS就好了,但你在EXPAND FS前多做了一步FORCE APPLICATION。
一开始LOG FULL的时候,本来要做ROLLBACK,但由于BLK_LOG_DSK_FUL的设置,ROLLBACK被PENDING了;FORCE APPLICATION是异步的,优先级低于ROLLBACK,所以看到的情况是所有的APPLICATION都处于HANG的状态;后来你做了EXPEND FS,HANG的状态被打破,DELETE对应APPLICATION接到的指令是继续EXCECUTE,不做ROLL BACK了;不过APPLICATION一旦处于EXCECUTE状态的时候,FORCE的优先级就高了,FORCE又给这个APPLICATION发指令,马上STOP,并立刻ROLL BACK。这样看来这个APPLICATION在同时收到两个相反的指令,所以DB就CRASH了。
上面的分析过程仅是我的猜测,最好自己再实验一下,或者问800。我想,如果我遇到这种CASE,就老老实实地EXPAND FS吧。
2007-3-28 20:08
banker
精彩
顶
2007-3-28 21:02
seven
[quote]原帖由 [i]beginner-bj[/i] 于 2007-3-27 22:51 发表 [url=http://bbs.loveunix.net/redirect.php?goto=findpost&pid=649082&ptid=70999][img]http://bbs.loveunix.net/images/common/back.gif[/img][/url]
正常情况下,设置BLK_LOG_DSK_FUL=YES后,遇到LOG FULL的情况,去EXPAND FS就好了,但你在EXPAND FS前多做了一步FORCE APPLICATION。
一开始LOG FULL的时候,本来要做ROLLBACK,但由于BLK_LOG_DSK_FUL的设置 ... [/quote]
[i]beginner-bj[/i] ,进程优先级的概念我还没听过呢。(一下子想起写c的时候,算术符优先级了:P )
那里能看到这方面的资料?
2007-3-28 21:26
beginner-bj
哪里有这方面资料,我还真不知道。我说得完全是自己的猜测,猜测的根据就是把平时在各BBS上看贴时别人讲的只言片语与自己工作中看到的各种现象结合起来再稍加思索而已。
说实话,我自己都不知道说得对不对,基本上就是凭感觉。也期待有高人出来肯定或者指正一下。
2007-3-28 22:19
onlyOneEditor
:D :D
2007-3-29 10:41
beginner-bj
seven,你看看这里
[url]http://www.itpub.net/745701.html[/url]
2007-3-30 19:27
dtbdtbdtb
". 没辙了,在hacmp里扩active log、mirror active log两个文件系统
结果:
在扩active log文件系统的时候,db2 crash了。start instance,activate db后,db2开始crash recovery。"
能这样做吗?
没有常识了
很多不正常的和不规范的操作会导致很多事情
2007-3-30 20:56
seven
[quote]原帖由 [i]dtbdtbdtb[/i] 于 2007-3-30 19:27 发表 [url=http://bbs.loveunix.net/redirect.php?goto=findpost&pid=649829&ptid=70999][img]http://bbs.loveunix.net/images/common/back.gif[/img][/url]
". 没辙了,在hacmp里扩active log、mirror active log两个文件系统
结果:
在扩active log文件系统的时候,db2 crash了。start instance,activate db后,db2开始crash recovery。"
能这样做吗?
没有常识了
很多不正常的和不规范的操作会导致很多事情
[/quote]
哈哈,高人出现了:lol
虚心请教在“有常识”下,该案例如何处理?
另,高人,你就指点下我?那些操作是不正常的,那些操作是不规范的?
页:
[1]
Powered by Discuz! Archiver 5.5.0
© 2001-2006 Comsenz Inc.