ORA-03113:通信通道的文件结束
问题为何被关闭
oracle数据库使用这几天开始突然出现一个问题:程序如果隔一段时间不使用,在输入语句去查询时就会报错:“ORA-03113:通信通道的文件结束”。然后把oracle链接关闭,在从新链接它就恢复正常。 
不知道这是什么原因,长时间不用的进程就给kill掉了?谁解决过这个问题,请回复一下,谢谢o(∩_∩)o...

解决方案 »

  1.   

    看看dba_profiles,是不是该user实施了资源限制。
      

  2.   

    这是正常的,你完全可以手动重现如下过程1. 开两个sqlplus, 一个用sys,一个用scott,同时连接上
    2. 用sys shutdown数据库, 再startup
    3. 使用scott执行查询, 就会提示 通信通道的文件结束原因是,数据库给你一个连接,你长时间不活动,连接inactive了,然后就被回收了
    下次需要使用的话,需要再申请一个连接,这就是重新登录的过程oracle能同时提供的连接数是有上限的,
    如果数据库被所有不活动的连接占据了,那么妨碍了别的需要使用的应用获取资源大家认为是这样的吗?
      

  3.   

    关闭数据库后连不上是因为scott使用的通讯的连接不存在了在init.ora文件中有processes和sessions的设置:
    ###########################################
    # Processes and Sessions
    ###########################################
    processes=300
    sessions=500可以更改一些连接的设置,
    但是关于连接超时怎么设置还不了解, 知道的说一声啊
      

  4.   

    查了一个关于连接会话超时的帖子,摘过来看看假设你的用户名为 user_a,你要设计的时间是 5分钟没有操作就断开。
    create profile my_profile limit idle_time 5;
    alter user user_a profile my_profile;
    原帖:
    http://www.itpub.net/viewthread.php?tid=709085查了官方文档:
    ORA-03113: end-of-file on communication channel 
    Cause: The connection between Client and Server process was broken. It may also happen if the external agent extproc crashes for some reason.
    Action: There was a communication error that requires further investigation. First, check for network problems and review the SQL*Net setup. Also, look in the alert.log file for any errors. Finally, test to see whether the server process is dead and whether a trace file was generated at failure time. There may be some system calls in the .NET function which might terminate the process. Remove such calls.
    随便乱翻译下:
    原因: 客户端和服务器音的连接断掉了.当外部的代理extproc因某些原因崩溃时可能发生.
    动作: 有一个通讯的错误需要进一步的调查.每一步,检查网络问题和SQL*Net的设置.同时,在alert.log文件中寻找错误.最后,测试服务器的process是不是dead了,是不是同时有一个trace文件在失败的时候产生出来. 当系统调用某些.NET函数的时候可能中止process. (我知道C#连接中可以设置连接的超时时间.) Remove such calls.
    官方文档跟我个人理解有些出入,
    跟楼主一起学习了
      

  5.   

    你可以在服务器上开一个sqlplus, 再在客户端开一个sqlplus, 2个sqlplus都用同一个用户登录,然后等待客户端那个sqlplus超时。如果此时服务端的那个sqlplus没有超时,则可以确定是防火墙的问题
      

  6.   

    http://topic.csdn.net/t/20051014/12/4326234.html
      

  7.   

    这个问题我也见过
    并不是所有版本都这样,for aix版就没有这个问题
    我是在for linux版本发现这个问题,其实oracle数据库还是很正常,只是客户端与服务断开连接而已
    好象和网络有关
    我一直没查到相关资料