全局事务 有开始 

无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事务 调服务后,停服务会默认提交。 
不停服务,事务会一直存在,不会因为超时被清除。 

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



09-07 18:36