用jdbc连接本地oracle10g,出现以下异常:
Caused by: java.sql.SQLException: Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12519)(ERROR_STACK=(ERROR=(CODE=12519)(EMFI=4))))
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:404)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:468)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.cvnet.data.jdbc.ResourceManager.getConnection(ResourceManager.java:44)
at com.cvnet.data.jdbc.CorporationUserChatSelfDaoImpl.findByDynamicWhereMine(CorporationUserChatSelfDaoImpl.java:657)
... 24 more
com.cvnet.data.exceptions.CorporationUserChatRoomDaoException: SQLException: Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12519)(ERROR_STACK=(ERROR=(CODE=12519)(EMFI=4))))
at com.cvnet.data.jdbc.CorporationUserChatRoomDaoImpl.findByDynamicWhereMine(CorporationUserChatRoomDaoImpl.java:616)
at org.apache.jsp.ChatRoom.Program.ShowMessage_jsp._jspService(ShowMessage_jsp.java:235)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:165)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)

解决方案 »

  1.   

    oracle10g数据库中一些表还可以写入数据,不知道是什么问题
      

  2.   

    你用pl/sql能正常连接吗?连接拒绝是可能很多原因的.比如你的数据库监听是否正确配置,你的JDBC连接串是否正确,还有可能是防火墙问题.
    一个一个排查吧.
      

  3.   

    是的,我用pl/sql能正常连接
    防火墙也退出了
    JDBC连接串:
        private static String JDBC_DRIVER   = "oracle.jdbc.driver.OracleDriver";
        private static String JDBC_URL      = "jdbc:oracle:thin:@localhost:1521:xe";
      

  4.   

    是间歇性报错还是一直报这个错?
    如果是间歇性的,增加process数试试:例如:
    SQL> alter system set processes=300 spfile=both;
      

  5.   

    应用部署到apache-tomcat-5.5.20后,一直抱着个错
      

  6.   


    把tomcat的连接池的连接最大数,改为小于数据库配置的process数.
      

  7.   

    程序当中没有用到tomcat的连接池,直接在程序中用jdbc连接数据库。
    jdbc连接数据库代码:package com.cvnet.data.jdbc;import java.sql.*;public class ResourceManager
    {
        private static String JDBC_DRIVER   = "oracle.jdbc.driver.OracleDriver";
        private static String JDBC_URL      = "jdbc:oracle:thin:@localhost:1521:xe";
    //private static String JDBC_DRIVER   = "com.mysql.jdbc.Driver";
    //private static String JDBC_URL      = "jdbc:mysql://127.0.0.1:3306/xe";
        //private static String JDBC_URL      = "jdbc:microsoft:sqlserver://192.168.0.120:1433";
       // private static String JDBC_URL      = "jdbc:microsoft:sqlserver://192.168.1.9:1433";    //private static String JDBC_DRIVER = "net.sourceforge.jtds.jdbc.Driver";
        //private static String JDBC_URL = "jdbc:jtds:sqlserver://127.0.0.1:1433";//DatabaseName=CVNETDB";    //jdbc.username=cvnet
        //jdbc.password=cvnetdb    
        private static String JDBC_USER     = "system";
        private static String JDBC_PASSWORD = "1";    private static Driver driver = null;    public static synchronized Connection getConnection()
    throws SQLException
        {
            if (driver == null)
            {
                try
                {
                    Class jdbcDriverClass = Class.forName( JDBC_DRIVER );
                    driver = (Driver) jdbcDriverClass.newInstance();
                    DriverManager.registerDriver( driver );
                }
                catch (Exception e)
                {
                    //System.out.println( "Failed to initialise JDBC driver" );
                    e.printStackTrace();
                }
            }        return DriverManager.getConnection(
                    JDBC_URL,
                    JDBC_USER,
                    JDBC_PASSWORD
            );
        }
    public static void close(Connection conn)
    {
    try {
    if (conn != null) conn.close();
    }
    catch (SQLException sqle)
    {
    sqle.printStackTrace();
    }
    } public static void close(PreparedStatement stmt)
    {
    try {
    if (stmt != null) stmt.close();
    }
    catch (SQLException sqle)
    {
    sqle.printStackTrace();
    }
    } public static void close(ResultSet rs)
    {
    try {
    if (rs != null) rs.close();
    }
    catch (SQLException sqle)
    {
    sqle.printStackTrace();
    } }

    public static void close(Statement stmt) {
    try {
    if (stmt != null)
    stmt.close();
    } catch (SQLException sqle) {
    sqle.printStackTrace();
    }
    }
    }
      

  8.   

    回楼上你的java代码:
     没看到你访问数据结束后调用close的代码,记得每关闭连接.
      

  9.   

    我的processes值为:40,应该够用了吧
    processes      integer     40
      

  10.   

    public CorporationChatRoomContent[] findByDynamicSelect(String sql, Object[] sqlParams) throws CorporationChatRoomContentDaoException
    {
    // declare variables
    final boolean isConnSupplied = (userConn != null);
    Connection conn = null;
    PreparedStatement stmt = null;
    ResultSet rs = null;

    try {
    // get the user-specified connection or get a connection from the ResourceManager
    conn = isConnSupplied ? userConn : ResourceManager.getConnection();

    // construct the SQL statement
    final String SQL = sql;


    // prepare statement
    stmt = conn.prepareStatement( SQL );
    stmt.setMaxRows( maxRows );

    // bind parameters
    for (int i=0; sqlParams!=null && i<sqlParams.length; i++ ) {
    stmt.setObject( i+1, sqlParams[i] );
    }


    rs = stmt.executeQuery();

    // fetch the results
    return fetchMultiResults(rs);
    }
    catch (SQLException _e) {
    throw new CorporationChatRoomContentDaoException( "SQLException: " + _e.getMessage(), _e );
    }
    catch (Exception _e) {
    throw new CorporationChatRoomContentDaoException( "Exception: " + _e.getMessage(), _e );
    }
    finally {
    ResourceManager.close(rs);
    ResourceManager.close(stmt);
    if (!isConnSupplied) {
    ResourceManager.close(conn);
    }

    }

    }访问数据结束后调用close的代码
      

  11.   

    alter system set processes=300 spfile=both;
    ORA-02095: 无法修改指定的初始化参数
      

  12.   

    问题解决了,确实是processes值过小的问题
      

  13.   


    alter system set processes=300 scope=spfile;这样就OK 了