在我们的应用系统中,ORACLE服务器工作在REDHAT LINUX8.0上的ORACLE9.2.0.4版本上,而通过"SELECT * frOM DUAL"语句一直对该服务器进行连接检测的应用程序工作在WINDOWS 2000 SEVER系统上,其上的ORACLE客户端软件的版本号为9.2.0.1,使用使用过程中,发现该系统经常报"ORA-03113:通信通道的文件结束!"的错误,然后该应用程序重新连接(通过该应用程序编码自动连接)正常,不知道是什么原因造成这种现象?
是由于ORACLE软件系统需要打补丁呢,还是其它什么原因.
各位给出出主意,在此先表示一下感谢!!!

解决方案 »

  1.   

    真巧,今天我也碰到这样的问题。
    我的情况时,ORACLE服务器不稳定,客户端和ORACLE的连接进程经常被中断。
    参考:http://www.dbanotes.net/Oracle/ORA-03113.htm
      

  2.   

    给nebulaly:
      假如怀疑"网络不好"的原因所致,采用什么办法给予确认和排除!?给我支个招吧!多谢
      

  3.   

    建议楼主考虑一下这种检测方式的目的何在?
    如果是检测数据库是否当机,用tns ping就可以达到目标,并且在应用程序中检测数据库是否当机没有任何意义楼主的检测方式实质上是保持一个数据库连接,但是连接的持久度受到多方面的影响
    例如最常见的网络异常,以及服务端采用dedicated server还是mts设置,是否设置了profile等等
    实际上,为了保证异常情况下的连接资源释放,往往用profile设置了连接能够保持的最长时间
    另一方面,即使用于检测的连接对dual的查询正常,也不能保证其他的连接工作正常,或者新建的连接正常,这些是受服务端资源限制的所以具体的检测方式要根据应用程序的特点而定,如果怀疑网络不好,可以查看listener.log、sqlnet.log或者trace文件,而不用通过应用程序做检测
      

  4.   

    网络不好肯定是一个原因。用网络流量监控工具检查网络是否正常。或者你用ping 命令带一个T参数看看丢包数有多少。如果多的话,需检查你的网络了,与数据库无关。一般检查网线是否接触良好。交换机工作是否正常
      

  5.   

    如果你使用了网闸活着代理服务器访问oracle就可能出现种问题
      

  6.   

    英雄所见略同。
    同意 nebulaly(极高明而道中庸) 的观点。
    我的建议一方面检查网络问题,应用服务器是win的,tcp通道是否很容易被堵塞呢?
    另一方面打开客户端的网络trace文件,收集一下通信次数和数据量。
      

  7.   

    oracle服务器在管理客户端的连接时,或定时的作'心跳'检测,而这个心跳检测是由服务端发起的向客户端的TCP检测,如果你的客户端与服务端之间由于防火墙的设置,屏蔽了由服务器向外的TCP连接建立的话,就很有可能因'心跳'检测失败,而最终导致服务器误认为客户端连接已经失效,而将该连接终止。此时,客户再向服务器发出SQL请求,都将由于TCP连接被重置而报ORA-03113错误。相关信息可见:
       http://www.douzhe.com/mirrors/dbanotes.net/Oracle/ORA-03113.htm