tuxedo服务里面对数据库进行了插入,修改删除等操作而没有COMMIT或ROLLBACK

tuxedo LIBTUX_CAT:481

173844.development!CadAccount.1753240.1.0: gtrid x0 x434d35d1 xa: LIBTUX_CAT:481: ERROR: Service xa_start returned -9

网上资料:
原因分析:服务里面对数据库进行了插入,修改删除等操作而没有COMMIT或ROLLBACK,tuxedo就会自动开始一个本地事务.
tuxedo全局事务会对应一个本地连接的事务,而上面这种情况下tuxedo又想自动启动一个本地事务.
相当于一个单线程程序里面同时启动两个事务.这是不可能出现的,同时只能有一个事务
解决方案:找到tpcall时出这个错误的被调服务程序.
方案1.程序里面使用EXEC SQL COMMIT WORK;或EXEC SQL ROLLBACK;防止tuxedo自动启动一个本地事务

方案2.使用AUTOTRAN=Y,这样这个程序会自动运行在一个全局事务里面,操作也会服务返回就提交

方案3.可用有特殊原因,比如需要多次调用服务后在某种条件发生时才提交

服务调用时使用TPNOTRAN参数.这样当程序退出时,tuxedo会自动提交这个事务,或


http://blog.itpub.net/post/8082/63929


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值