Chinaunix首页 | 论坛 | 博客
  • 博客访问: 668583
  • 博文数量: 77
  • 博客积分: 6055
  • 博客等级: 准将
  • 技术积分: 617
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-17 02:15
个人简介

一句话太少

文章分类

全部博文(77)

文章存档

2018年(1)

2015年(1)

2014年(1)

2013年(6)

2011年(1)

2010年(1)

2009年(4)

2008年(2)

2007年(21)

2006年(39)

我的朋友

分类: Oracle

2013-10-28 17:13:48

全局事务 有开始 

无commit 

这时停服务,但数据库层面还有有对象锁定。 
select addr,sid,username,s.status,process,s.LAST_CALL_ET,s.program,START_DATE from 
v$transaction t,v$session s 
where t.ses_addr=s.saddr 
order by LAST_CALL_ET; 
查询无事务。 
但下面锁定对象有。 
select a.object_id,a.session_id,a.locked_mode,b.* from v$locked_object a,all_objects b 
where a.OBJECT_ID=b.DATA_OBJECT_ID; 

应用程序在处理锁定记录时出现 
SQLCODE=[-2049]][ORA-02049: 超时: 分布式事务处理等待锁。 
=============================================================== 
结论: 
经分析上述方法应该是应用使用了全局事务(tuxedo应用)。 
全局事务有开始,但无提交。然后tuxedo服务被重新启动或停掉。 
数据库层面由于服务重新启动,会话表中未找到数据,所以第一个sql看不到事务。 

第二个sql锁对象会在(sestm,tpbegin设置 最小的)超时后释放。 

在这个超时前所有对应数据操作会阻塞(distributed_lock_timeout 秒后超时 60 )报ORA-02049错。

-------------------------------------------------------------

tmadmin查看事务情况。 
可以人工干预,在自动回滚前搞定问题。 
pt 查看 
abort 回滚 
commit 提交 
注意在没把握情况下,别手动乱搞。有时候越搞越乱哦。
------------------------------------------------------------
无tpbegin事务 调服务后,停服务会默认提交。 
不停服务,事务会一直存在,不会因为超时被清除。 

未找到事务回滚方法。待研究。



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