Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2222
  • 博文数量: 2
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2017-05-04 14:54
文章分类
文章存档

2017年(2)

我的朋友
最近访客

分类: Oracle

2017-05-08 14:10:05

全局事务 有开始 

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

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



阅读(460) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:Oracle 10g RAC 搬迁后修改IP地址

给主人留下些什么吧!~~