PLSQL中执行一条update语句时,报错"ORA-03113: 通信通道的文件结束"
首先,我可以确定PLSQL是可以正常连接数据库的,网络问题可以排除,之前,有人在问这个问题的时候大多数人都会回答是不是网络问题,我在执行sql语句的同时,也做了网络是否丢包的测试,网络是正常的,包发送时间都在<1ms,在数据库服务器本机测试也会报类似错误!可以排除是网络原因,各位高手还有其他能搞定这件事情的方法吗?
以前遇到此类问题,我通过重装数据库解决过,但是现在系统中有近2T的数据,重装是不现实的

解决方案 »

  1.   

    -- PLSQL中执行一条update语句时,报错"ORA-03113: 通信通道的文件结束"-- 一般是由于网络故障或DBA人为的把你这个会话给Kill啦!
      

  2.   


    select local_tran_id,global_tran_id,state,mixed,host,commit# from dba_2pc_pending运行上面的看哪个local_tran_id的事务状态state为collecting的然后
    禁用分布式恢复
    alter system disable distributed recovery;清空
    exec dbms_transaction.purge_lost_db_entry('上面查到的local_tran_id')启用分布式恢复
    alter system enable distributed recovery
      

  3.   

    1.人为中断的可能可以排除
    2.效率太差,倒有可能,但是我第一次执行select sydate from dual;也会报如上错误
      

  4.   

    [Quote=引用 3 楼 wkc168 的回复:]
    select local_tran_id,global_tran_id,state,mixed,host,commit# from dba_2pc_pending
    执行上述语句后,结果是空的!没有符合条件的数据
      

  5.   


    把你详细的的update 语句贴上来和数据量多少把具体的报错信息全贴上来
      

  6.   

    sql的问题也可以排除,我在测试机上可以执行,完全一样的应用软件环境,现在就是搞不懂生产机中数据库哪里出了问题
      

  7.   

    数据库有时候出现HANG住的情况会, 如果cpu在规定时间无法响应你的请求就会timeout就会报这个错误.
      

  8.   

    如果你连接数据库长时间没有相应,执行SQL语句的时候会出现这种情况,再执行一下就好啦
      

  9.   

    感觉跟我原来装ORACLE没有完全成功的报错差不多啊,应该跟配置有点关系,也可能是网络上有冲突
      

  10.   


    我也出现了这个问题,对两条数据update报中断,后来发现服务器cpu已经满了。多谢提醒