+ -
当前位置:首页 → 问答吧 → C#连接ORACLE 数据库定时出现ORA-03113: end-of-file on communication

C#连接ORACLE 数据库定时出现ORA-03113: end-of-file on communication

时间:2011-09-10

来源:互联网

数据库环境:ORACLE 10
开发环境:C# VS2008

数据库用户AAA连接ORACLE数据库,C#连接每天下午5点连接不上,提示错误ORA-03113: end-of-file on communication
下午6点开始自动恢复可以连接,一直没找到根本原因,很纠结。。请大家指教
查找了很多资料太笼统,没找到问题根本原因。
排除以下因素:
1.网络问题                 经多次检测网络正常,也排除防火墙的问题。
2.数据库参数设置问题       客户为特大型医院,服务器配置和参数设置都正常,且用PB连接正常,C#连接就是不行。


奇怪的是每天下17:00午定时连接不上,下午18:00后自动又恢复正常了,且用PB连接正常,用PLSQL Developer连接也正常。

C#
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
using System.Data.OracleClient;

连接SQL,
string connString = "Provider=msdaora;Data Source=dbserver;User ID=outpbill;Password=outpbill";
用如下SQL也测试过,还是不行
string connString = "Provider=msdaora;Data Source=dbserver;User ID=outpbill;Password=outpbill;OLEDB Services=-4";

连接报异常语句:
  #region 服务测试
        [WebMethod(Description = "服务测试,输入参数:Xmlstr--xml串;返回参数:xml串")]
        public string NetTest()
        {
            string returnStr = "";
            try
            {
                OleDbConnection Mycnn = Connection.getConnection();
                Mycnn.Open();
                OleDbCommand MyCmm = new OleDbCommand("select sysdate from dual", Mycnn);
                returnStr = MyCmm.ExecuteScalar().ToString();
                Mycnn.Close();
                Mycnn.Dispose();
               
                //string ConnectionString = "Data Source=dbserver1;user=outpbill;password=outpbill;";//写连接串
                //OracleConnection conn = new OracleConnection(ConnectionString);//创建一个新连接
                //conn.Open();
                //OracleCommand MyCmm = new OracleCommand("select sysdate from dual", conn);
                //returnStr = MyCmm.ExecuteScalar().ToString();
                //conn.Close();
                //conn.Dispose();
                if (returnStr != "")
                {
                    return "<Response><ResultCode>0</ResultCode><ErrorMsg></ErrorMsg><SysDate>" + returnStr + "</SysDate></Response>";
                }
                else
                    return "<Response><ResultCode>1</ResultCode><ErrorMsg>无法获取数据库服务器时间</ErrorMsg></Response>";
            }
            catch (Exception excp)
            {
                return "<Response><ResultCode>1</ResultCode><ErrorMsg></ErrorMsg><SysDate>" + excp.Message + "</SysDate></Response>";
            }
        }
        #endregion

请教高手指点,非常感谢!

作者: mengxing8100   发布时间: 2011-09-10

Provider=msdaora.1
建议 把数据库的alert也查查。
建议查查网络

作者: nannan5000   发布时间: 2011-09-10