Descartar la base de datos en DB2 9.5 - SQL1035N La base de datos está actualmente en uso


8

Nunca lo hice funcionar la primera vez, pero ahora parece que no puedo hacerlo en absoluto.

Hay un grupo de conexiones en algún lugar que usa la base de datos, por lo que tratar de descartar la base de datos cuando una aplicación está usando la base de datos debería dar este error. El problema es que no hay conexión a la base de datos cuando publico estos comandos:

db2 connect to mydatabase
db2 quiesce database immediate force connections
db2 connect reset
db2 drop database mydatabase

Esto siempre da:

SQL1035N  The database is currently in use.  SQLSTATE=57019

ejecutar este comando no muestra conexiones / aplicaciones

DB2 list applications

Incluso puedo desactivar la base de datos, pero aún así no puedo soltarla.

db2 => deactivate database mydatabase
DB20000I  The DEACTIVATE DATABASE command completed successfully.
db2 => drop database mydatabase
SQL1035N  The database is currently in use.  SQLSTATE=57019
db2 =>

¿Alguien tiene alguna pista? Estoy ejecutando cmd-windows como administrador local (Windows 2008) y este también es el administrador de DB2. El usuario de la agrupación de conexiones no puede conectarse durante el estado de reposo.

Respuestas:


9

Solo como una sugerencia si la sugerencia de Arun no funciona, porque una aplicación remota se reconecta instantáneamente a la base de datos.

db2 force applications all 
db2 terminate 

db2set DB2COMM= 
db2stop 
db2start 

db2 force applications all 
db2 terminate 

... do your stuff here ...

db2set DB2COMM=TCPIP 
db2stop 
db2start 

Sin embargo, no estoy seguro si el db2 forcey el db2 terminatees necesario. Es solo nuestra mejor práctica.


No entiendo por qué se permiten conexiones remotas cuando la base de datos está "inactiva" y los usuarios remotos no tienen esa autoridad ...
Tommy

De la documentación de IBM: publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/… - RESET - Equivalente a una conexión explícita a la base de datos predeterminada si está disponible. Si una base de datos predeterminada no está disponible, el estado de conexión del proceso de aplicación y los estados de sus conexiones no cambian. - Parece que se conectó a la base de datos llamandoDB2 connect reset
Peter Schuetze

Establecer DB2COMM = era la única forma de expulsar todos los grupos de conexiones que se conectaban a la base de datos. Me encanta DB2 ...
Tommy

2

Solo uso 'db2stop force', luego 'db2start', luego dejo caer db. De esta manera es mejor que el comando de inmovilización que es asíncrono por naturaleza.


Debo corregir mi respuesta aceptada. Esto funcionó una vez, pero debe haber sido suerte. Tuve que recurrir al "truco" de Peter
Tommy

2

Su problema puede ocurrir debido a las diferencias de connect resety terminate. Echa un vistazo a esta discusión . También puede echar un vistazo a la documentación de IBM. Por lo tanto, podría funcionar para usted si ejecuta un db2 terminate insteadde a db2 connect reset.


1

La inactividad evitará que la caída funcione. Estuvimos involucrados en un gran esfuerzo de limpieza y después de ejecutar revocar / conectar y anular las bases de datos, esperamos unos meses para eliminar los dbs de prueba. Nuestro comando drop no funcionaría a menos que quitáramos la base de datos y luego la soltáramos.


0

Siga estos pasos desde la línea de comando. Esto soltará el db:

Forzar todas las aplicaciones;

desactivar db;

soltar db;


0

Cuando una base de datos está inactiva, todavía está en la cadena de bases de datos con el administrador de bases de datos, aunque marcada como inactiva. Cuando intente soltarlo, verificaremos si está en esta cadena; si es así, entonces todavía está en uso ==> No puede soltarlo.

Debe emitir un DB inquieto o emitir un db2stop y db2start y luego intentar soltarlo. Deberia de funcionar.


0

Tengo un problema similar, pero no importa cómo fuerce la detención de la aplicación, volverá automáticamente.

En mi caso, es un servicio que bloquea la base de datos.

Pude resolver esto terminando el servicio PID del Administrador de tareas de Windows con el PID que se encuentra en la Lista de aplicaciones de DB2.

Para encontrar PID, abra el Centro de control de DB2, Todas las bases de datos, BASE DE DATOS (la que está tratando de soltar), Lista de aplicaciones, Mostrar cadena de bloqueo, Mostrar detalles de bloqueo y desplácese hacia abajo para encontrar la ID de proceso del cliente y finalice este PID e intente nuevamente.

Espero que esto ayude a las personas en el futuro.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.