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