ora-12519, не найден соответствующий обработчик службы

1

Я получаю 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

Этот код отлично работает в других системах. Но здесь он работает, только если я удаляю бесконечный цикл.

Пожалуйста, помогите мне.

  • 1
    Почему вы закрываете набор результатов только один раз и в предложении finally? Вы повторно используете переменные без их очистки, что может привести к тому, что у вас будет больше открытых курсоров и соединений, чем вы думаете. Почему вы неоднократно открываете и закрываете соединение, и неоднократно переопределяете подготовленные заявления? Получаете ли вы какие-либо другие исключения - полагаетесь ли вы на исключение для завершения цикла в любом случае?
Теги:
jdbc

1 ответ

0

Ошибка ORA-12519 может быть вызвана текущим подключением (например, сеансы concurrernt) превышает максимальную допустимую величину для экземпляра Oracle.

Попросите своего администратора баз данных рассказать вам, какие ограничения подключены, - эти параметры зависят от базы данных, а некоторые значения имеют значения по умолчанию. Просить.

Поскольку ваши циклы кода @AlexPoole отмечали, что вы исчерпываете ресурсы, вы можете создавать множество соединений и не выпускать их, например. Я не могу точно сказать. ошибка 12519 - проблема ресурса соединения. Период. Как ты это сделал, я не знаю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню