ORA-01940: cannot drop a user that is currently connected
Hola.
Estoy intentando eliminar un usuario de Oracle 11g porque mi instalación básicamente no me sale. No quiero contarles mis penas sobre por qué me la paso escribiendo sobre errores de Oracle y no viviendo la vida así que hoy les escribo cómo solucionar este error:
ORA-01940: cannot drop a user that is currently connected
Para no hacer largo el cuento les pongo la solución muy interesante que encontré para identificar las sesiones conectadas y cómo matarlas.
Lo que estoy intentando es un DROP USER así:
sql>DROP USER miusuario CASCADE;
Como ven el error claramente dice que hay sesiones de usuario abiertas o conectadas por lo que primero debemos saber cuales son. Para esto ejecuten el siguiente query desde un usuario con permisos, digamos el usuario system:
SELECT v$session.sid, v$session.serial#, v$session.status, v$process.spid
FROM v$session, v$process
WHERE v$session.username = 'miusuario'
AND v$process.addr (+) = v$session.paddr;
sid serial# status spid
--- --- ------ ----
592 171 INACTIVE 20437
El campo spid les dice el número de proceso id a nivel sistema operativo que se está conectando a la base de datos. Con esta información fácilmente pueden identificar el proceso y matarlo.
Para ver mas información acerca del proceso en su sistema operativo Linux pueden usar el siguiente comando:
[oracle@edqtrn bin]$ ps -ef | grep <spid>
Ya que lo vieron y deciden que puede morir, ejecuten el siguiente comando:
[oracle@edqtrn bin]$ sudo kill -9 <spid>
Hagan esto por cuantos resultados de procesos les haya devuelto el query. En cuanto terminen vuelvan a ejecutar el DROP USER y ya deben poder eliminar el usuario.
sql>DROP USER miusuario CASCADE;
User dropped
Espero les sirva.
No hay comentarios.:
Publicar un comentario