Hola tengo un problema:
Tengo una aplicacion que trabaja con java y oracle 9i. Lo que pasa es que tengo una base de datos creada, y varios usuarios creados para ella. En un momento dado quiero eliminar uno de esos usuarios y la aplicacion siempre me salta con el mismo. Si por ejemplo he creado tres usuarios en este orden:
usuario1
usuario2
usuario3
intento eliminar el usuario1, y el usuario2 y no me da ningun problema. El problema es cuando intento borrar el usuario3 que es ultimo que he creado. me da el error:
ORA-01940: no se puede borrar un usuario conectado actualmente
No entiendo por que me da ese error si yo en el codigo en el cual elimino el usuario lo primero que hago es conectarme a la base de datos con otro usuari( me conecto con el usuario system, de este modo el usuario que esta conectado es system y no el que quiero eliminar!) Os pongo el codigo a ver si veis donde puede estar el error ok?
try {
Connection con = gdc.ConexionServauto();
PreparedStatement ps;
con=gdc.ConexionAlumno("system","alumno_system"); ps=con.prepareStatement("drop user "+usuario+" cascade");
int afectados = ps.executeUpdate();
}
Dos comentarios:
1. he comprobado el valor de la variable "usuario" y efectivamente toma en cada momento el valor del usuario que quiero eliminar por lo tanto ahí no esta el erro.
2. La linea que he recalcado es la linea donde llamo a la funico que únicamente hace conectarse a la base de datos con el usuario system os pedgo el codigo por si acaso:
public Connection ConexionAlumno(String usuario, String password){
try{
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@loc alhost:1521:ALUMNO", usuario,password);
return con;
}catch (Exception ex){
return null;
}
}