情况如下 2个进程 分别 提交 事务 对一主表 一从表 分别进行 insert (2表有外键关联)
先对主表 insert,事务1 挂起 , 再启动另一个 事务2 对从表 insert,无反应背景 : oracle 10g 里事务 默认超时 60秒,websphere v5.1 连接池 超时180秒 事务超时120秒 这个事务逻辑 是有点问题 , 但是问题是 无log 无错误 提示 不显示 任何超时,无论oracle和websphere所有 事务 都在10分钟左后 后 无反应 有表内容可以推测 应该事务是回滚了,但是无log 无异常
无法得知 如何造成 无log 我们怀疑 是 连接池 已经 超时 所以无法返回 ,问题是为什么oracle的事务超时无效 websphere的事务超时 也无效
请问还有什么地方可以阻塞该事务的操作呢? 和为什么无任何log ?在开发环境无法重现 该错误 ,因为oracle 的事务 超时 一定会先报错...
出现如下错误:
java.sql.SQLException: ORA-02049: timeout: distributed transaction waiting for lock
我曾经查到一个itl死锁,但是根据那位bloger的意思,在10g需要4线程 才可能造成死锁。
先对主表 insert,事务1 挂起 , 再启动另一个 事务2 对从表 insert,无反应背景 : oracle 10g 里事务 默认超时 60秒,websphere v5.1 连接池 超时180秒 事务超时120秒 这个事务逻辑 是有点问题 , 但是问题是 无log 无错误 提示 不显示 任何超时,无论oracle和websphere所有 事务 都在10分钟左后 后 无反应 有表内容可以推测 应该事务是回滚了,但是无log 无异常
无法得知 如何造成 无log 我们怀疑 是 连接池 已经 超时 所以无法返回 ,问题是为什么oracle的事务超时无效 websphere的事务超时 也无效
请问还有什么地方可以阻塞该事务的操作呢? 和为什么无任何log ?在开发环境无法重现 该错误 ,因为oracle 的事务 超时 一定会先报错...
出现如下错误:
java.sql.SQLException: ORA-02049: timeout: distributed transaction waiting for lock
我曾经查到一个itl死锁,但是根据那位bloger的意思,在10g需要4线程 才可能造成死锁。
解决方案 »
- oracle 触发器 自治事务
- sqlldr重复数据替换和插入
- RMAN-01008
- 求助:function返回游标的问题
- ORA-00604: 递归 SQL 级别 1 出现错误--> 错误!
- (Oracle)判断表列名如果存在,执行删除。
- 上百万条记录的分页, 主键排序但不连续!
- 在存储过程中怎么返回表,难道一定要用到游标,如果要,怎么写呢?
- 一道有关数据库的考试题目,有没有高手可以回答?
- select * from t_customer where 1=row_ctrl(4086,MANAGER_POSITIONID,1044,'T_CUSTOMER')是什么意思
- 请教一个触发器和vc程序的冲突问题!
- 上百万条记录的分页, 主键排序但不连续!
死锁会生成一个trace文件,
在alert日志中可看到,死锁的时候都会产生一个ora-00060错误.
你的主从表,那个关联的字段没加索引吧?不过insert似乎不会阻塞呀,做个实验先
先对主表 insert,事务1 挂起 , 再启动另一个 事务2 对从表 insert,无反应试验一把:
如果只有 insert, 事务1是不会被阻塞的。楼主有update,delete操作吧?并且你的表的这个关联字段未加索引
我会去找下DBA 要看下alert日志, 但是 说是无任何log....有无索引 我去确认一下 ,谢谢楼上各位
部署地点在国外,这个alert日志 还比较难拿.... 继续等等了。希望 也不知道哪里的dba啥水平....
现在的问题是我在开发环境试:oracle 的事务超时是distributed_lock_timeout = 60s,websphere v5.1 连接池 超时180秒 事务超时120秒
开发环境60s的时候肯定报下面的exception 。服务器上跑的时候却老是什么错误log都没有,让我很是郁闷啊。alert日志我还没查,服务器在国外查日志
要找他们那边很麻烦。
我现在只能把子表的外键去掉,去掉后就不再报错。还好这个外键并不重要。
可是无法重现服务器的问题总是不安心,怀疑可能有其他问题。java.sql.SQLException: ORA-02049: timeout: distributed transaction waiting for lock
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:330)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:287)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:742)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:215)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:954)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1167)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3284)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3367)
com.ubs.james.core.intf.dsv.jdbc.IJdbcService$Exception: Error when executing sql statement
at com.ubs.james.core.impl.dsv.jdbc.JdbcService.execute(JdbcService.java:387)
at com.ubs.james.core.impl.dsv.jdbc.JdbcService.update(JdbcService.java:617)
at com.ubs.james.core.impl.dsv.jdbc.SQLUpdate.doExecuteInternal(SQLUpdate.java:33)
at com.ubs.james.core.impl.dsv.jdbc.SQLBase.executeInternal(SQLBase.java:451)
at com.ubs.james.core.impl.dsv.jdbc.SQLBase._execute(SQLBase.java:273)
at com.ubs.james.core.impl.dsv.jdbc.SQLBase.execute(SQLBase.java:497)
at com.ubs.james.core.impl.dsv.jdbc.BeanMappingSQLUpdate.execute(BeanMappingSQLUpdate.java:102)
at com.ubs.ifop.service.chddsi.core.dsv.impl.ChdXchgRateDSV.insert(ChdXchgRateDSV.java:94)
at com.ubs.ifop.service.chddsi.core.dsv.impl.ChdXchgRateDSV.insert(ChdXchgRateDSV.java:121)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
at com.ubs.james.core.impl.ServiceManager$ServiceProxy.invokeBusinessService(ServiceManager.java:360)
at com.ubs.james.core.impl.ServiceManager$ServiceProxy.invoke(ServiceManager.java:487)
at com.ubs.james.core.impl.dsv.DataServiceManager$Proxy.invoke(DataServiceManager.java:84)
at $Proxy11.insert(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
at com.ubs.ifop.service.chddsi.core.logging.PerformanceLoggingHandler.invoke(PerformanceLoggingHandler.java:41)
at $Proxy11.insert(Unknown Source)
at com.ubs.ifop.service.chddsi.core.message.command.BatchTableUpdateCommand.update(BatchTableUpdateCommand.java:57)
at com.ubs.ifop.service.chddsi.core.message.command.BatchTableUpdateCommand.execute(BatchTableUpdateCommand.java:29)
... 30 more