Java ora-12519,未找到合适的服务处理程序

Java ora-12519,未找到合适的服务处理程序,java,oracle,jdbc,Java,Oracle,Jdbc,每当我在代码中使用无限循环时,我都会得到ORA-12519没有适当的服务处理程序异常。但是,该代码在其他系统中工作得非常好 这是我的密码 public static void main(String args[]) { try { Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String dbHost = "localhost"; String databa

每当我在代码中使用无限循环时,我都会得到
ORA-12519
没有适当的服务处理程序异常。但是,该代码在其他系统中工作得非常好

这是我的密码

public static void main(String args[]) {
    try {
        Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
        String dbHost = "localhost";
        String database = "scott";
        String dbUsername = "scott";
        String dbPassword = "scott";
        String smsReceiver = "";

        String dbUrl = "jdbc:oracle:thin:@localhost:1521:xe";

        while (true) {
            ResultSet rs = null;
            conn = DriverManager.getConnection(dbUrl, dbUsername, dbPassword);

            try {
                Statement smnt = null;
                smnt = conn.createStatement();
                String sql = "select count(*) from ozekismsin";
                rs = smnt.executeQuery(sql);
                rs.next();

                int count = rs.getInt(1);
                if (count != 0) {
                    System.out.println("success");
                    sql = "select * from ozekismsin";
                    rs = smnt.executeQuery(sql);
                    rs.next();
                    String msg = rs.getString("msg");
                    // smsReceiver=rs.getString("sender");
                    System.out.println(msg);
                    StringTokenizer st = new StringTokenizer(msg, " ");
                    st.nextToken();
                    String source = st.nextToken();
                    st.nextToken();
                    String dest = st.nextToken();
                    System.out.println(source + " " + dest);
                    PreparedStatement preparedStatement = null;
                    sql = "select id from new1 where name=?";
                    preparedStatement = conn.prepareStatement(sql);
                    preparedStatement.setString(1, source);

                    rs = preparedStatement.executeQuery();

                    rs.next();

                    int s = rs.getInt("id");
                    System.out.println(source + " " + dest);
                    sql = "select id from new1 where name=?";
                    preparedStatement = conn.prepareStatement(sql);
                    preparedStatement.setString(1, dest);
                    System.out.println(s);
                    rs = preparedStatement.executeQuery();
                    rs.next();
                    int d = rs.getInt(1);
                    a = s;

                    test1 ob = new test1();
                    ob.dijkstra(s, d);

                    String sqlInsert = "INSERT INTO "
                            + "ozekismsout (receiver,msg,status) "
                            + "VALUES " + "('" + smsReceiver + "','"
                            + message + "','send')";

                    if (smnt.executeUpdate(sqlInsert) != 0) {
                        System.out.println("OK");
                        System.out.println(message);
                    } else {
                        System.out.println("ERROR");
                    }
                    sql = "delete from ozekismsin";
                    smnt.executeQuery(sql);
                    sql = "commit";
                    smnt.executeQuery(sql);
                } // end of if

                smnt.close();
                conn.close();
            } // end of try in while
            finally {
                try {
                    rs.close();
                } catch (Exception e) {
                    System.out.println("exception caught");
                }
            } // end of finally
        } // end of while
    } // end of outer try
    catch (Exception ex) {
        System.out.println("Exception: " + ex.getMessage());
        ex.printStackTrace();
    }
} // end of main
这段代码在其他系统中工作得很好。但在这里,它只在移除无限循环时起作用


请任何人帮助我。

错误ORA-12519可能是由于当前的连接使用(例如Concurrenrt会话)超出了Oracle实例允许的最大数量

请DBA告诉您强制的连接限制-这些设置是特定于数据库的,有些值具有默认值。问


正如您的代码loops@AlexPoole所指出的,您正在耗尽资源——例如,您可能正在创建大量连接,而没有释放它们。我不能肯定。12519错误是连接资源问题。时期我不知道您是如何做到的。

为什么只关闭一次结果集,并在finally子句中关闭?您正在重用变量而没有清理它们,这可能会导致您拥有比您想象的更多的开放游标和连接。为什么要反复打开和关闭连接,反复重新定义准备好的语句?您是否有任何其他异常-您是否仍然依赖异常来终止循环?