Chinaunix首页 | 论坛 | 博客
  • 博客访问: 380381
  • 博文数量: 113
  • 博客积分: 3035
  • 博客等级: 中校
  • 技术积分: 1430
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-01 16:32
文章分类
文章存档

2011年(42)

2010年(70)

2009年(1)

我的朋友

分类: Oracle

2011-06-28 09:47:58

今天客户报了一个死锁错误,alert.log里信息比较简单

Global Enqueue Services Deadlock detected. More info in file

 /oracle/admin/orcc/bdump/orcc1_lmd0_487646.trc.

打开trace文件显示:
o;? wr"W#XHZ0

Global Wait-For-Graph(WFG) at ddTS[0.d3] :

BLOCKED 70000010fa9cda0 5 [0x15001a][0x8e8c6],[TX] [2001-001A-0005831D] 1

BLOCKER 70000010fa9cc50 5 [0x15001a][0x8e8c6],[TX] [200B-00BF-000474CE] 1

BLOCKED 70000010cbf3fa0 5 [0x20001d][0x2bcbf],[TX] [200B-00BF-000474CE] 1

BLOCKER 70000010ca7e590 5 [0x20001d][0x2bcbf],[TX] [2001-001A-0005831D] 1
q%J [+V4pK*s6^0

      第一列为:阻塞/被阻塞

      第二列为:lock pointer

      第三列为:锁模式

      第四列为:事务信息 将前2部分,补足8位连起来就是xid

      最后一列为:节点信息,从0开始,1就是节点2

     
"hA n7t3z x0

      由于检测到死锁并已解锁,为了不影响系统,将当时的归档日志拷贝到一台空闲的机上进行分析


8P&S9N8j0S;i7Q e0

      DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME=>'归档日志全路径',OPTIONS=>DBMS_LOGMNR.NEW);

      DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME=>'归档日志全路径');

      DBMS_LOGMNR.START_LOGMNR();--由于没有数据字典,这里就不设置参数了

      这时就可以通过V$LOGMNR_CONTENTS进行分析了

      将xid为0020001d0002bcbf 和0015001a0008e8c6的日志信息通过时间段限制全部查询出来,就可以分析导致死锁的原因了

      我这个客户就是,一直有俩个session一个在不断更新一个表,一个在删除和添加数据,而大家有都不提交,最终导致了死锁

ITPUB个人空间+GwVv:s

       在一个业务繁忙的系统里,数据库的手工操作要慎之又慎,即使需要操作,也要尽快提交

ITPUB个人空间%? m#o+m$v"Fqe

       想起以前的客户很喜欢用for update,曾经非常让人头疼

阅读(1258) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~