Cuando hay usuarios conectados, o procesos Oracle lanzados en el servidor, la parada puede resultar problemática.
SQL> SHUTDOWN IMMEDIATE
Las sesiones no activas las va cerrando con esta orden, pero los procesos en ejecución continúan y hasta que terminen todos no va a hacer la parada.
Si nos vamos a casa al día siguiente podemos ver que la orden "shutdown immediate" se ha interrumpido y la base de datos no ha llegado a pararse.
Solución 1: NO HACER ESTO. Se trata de forzar la parada con un "shutdown abort". De esta forma fuerzas la parada, pero cuando vaya a arrancarlo te puedes encontrar todo tipo de sorpresas desagradables.
Solución 2: La buena:
El problema es que una vez que lanzas el "shutdown immediate", la base de datos no va a aceptar nuevas conexiones así que lo más limpio va a ser matar esos procesos que nos impiden parar la base de datos, desde la cuenta de root del sistema operativo.
El listado de procesos Oracle No locales a la máquina (procesos de usuarios) se obtiene así:
# ps -ef|grep oracle|grep LOCAL=NO
En la 2ª columna del listado tenemos el pid del proceso, por lo que podemos hacer esto para pasárselo al comando KILL:
# ps -ef | grep oracle |grep LOCAL=NO | awk {'print "kill -9 " $2'}
kill -9 27964
kill -9 2093
kill -9 2347
kill -9 26055
kill -9 5591
kill -9 26051
kill -9 29097
kill -9 25591
kill -9 25587
kill -9 16100
kill -9 5005
kill -9 2095
kill -9 7202
kill -9 13927
kill -9 12817
kill -9 14659
kill -9 26049
kill -9 26053
kill -9 29095
kill -9 14558
kill -9 10754
kill -9 2605
...
...
Saludos.
pd: ¡Que bueno el awk!
lunes, noviembre 19, 2012
Suscribirse a:
Enviar comentarios (Atom)
1 comentario:
Aunque lances el shutdown immediate, normalmente podrás entrar con
$ sqlplus "/ as sysdba"
Muy bueno el blog.
Un saludo.
Publicar un comentario