miércoles, 3 de julio de 2019

ORA-01940: cannot drop a user that is currently connected

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