Supprimer la base de données sur DB2 9.5 - SQL1035N La base de données est actuellement utilisée


8

Je n'ai jamais réussi à le faire la première fois, mais maintenant je n'arrive plus du tout à le faire.

Il existe un pool de connexions quelque part utilisant la base de données, donc essayer de supprimer la base de données lorsqu'une application utilise la base de données devrait donner cette erreur. Le problème est qu'il n'y a pas de connexion à la base de données lorsque j'émets ces commandes:

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

Cela donne toujours:

SQL1035N  The database is currently in use.  SQLSTATE=57019

l'exécution de cette commande ne montre aucune connexion / application

DB2 list applications

Je peux même désactiver la base de données, mais je ne peux toujours pas la supprimer.

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 =>

Quelqu'un a des indices? J'exécute les cmd-windows en tant qu'administrateur local (windows 2008) et c'est également l'administrateur de DB2. L'utilisateur connectionpool ne peut pas se connecter pendant l'état de repos.

Réponses:


9

Tout comme un conseil si le conseil d'Arun ne fonctionne pas, car une application distante se reconnecte instantanément à la base de données.

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 

Je ne sais pas si le db2 forceet le db2 terminatesont nécessaires. C'est juste notre meilleure pratique.


Je ne comprends pas pourquoi les connexions à distance sont autorisées lorsque la base de données est "au repos" et que les utilisateurs distants n'ont pas cette autorité ...
Tommy

Dans la documentation IBM: publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/… - RESET - Equivalent à une connexion explicite à la base de données par défaut si elle est disponible. Si une base de données par défaut n'est pas disponible, l'état de connexion du processus d'application et les états de ses connexions restent inchangés. - On dirait que vous vous êtes connecté à la base de données en appelantDB2 connect reset
Peter Schuetze

La définition de DB2COMM = était le seul moyen de supprimer tous les pools de connexions se connectant à la base de données. J'adore DB2 ...
Tommy

2

J'utilise simplement 'db2stop force', puis 'db2start', puis drop db. Cette méthode est meilleure que la commande quiesce qui est asynchrone par nature.


Je dois corriger ma réponse acceptée. Cela a fonctionné une fois, mais ce devait être la chance. A dû se tourner vers le "truc" de Peter
Tommy

2

Votre problème peut se produire en raison des différences entre connect resetet terminate. Jetez un œil à cette discussion . Vous pouvez également consulter la documentation IBM. Donc, cela pourrait fonctionner pour vous si vous exécutez l'un db2 terminate insteaddes db2 connect reset.


1

Le repos empêchera la chute de fonctionner. Nous avons été impliqués dans un grand effort de nettoyage et après avoir exécuté revoke / connect et mis au repos les bases de données, nous avons attendu quelques mois pour abandonner le test dbs. Notre commande drop ne fonctionnerait pas si nous ne supprimions pas la base de données puis la supprimions.


0

Effectuez ces étapes à partir de la ligne de commande. Cela supprimera la base de données:

Forcer toutes les applications;

désactiver db;

drop db;


0

Lorsqu'une base de données est mise au repos, elle se trouve toujours dans la chaîne de bases de données avec le gestionnaire de base de données, bien qu'elle soit marquée comme mise au repos. Lorsque vous essayez de le déposer, nous vérifierons s'il se trouve sur cette chaîne; si c'est le cas, alors il est toujours utilisé ==> Vous ne pouvez pas le supprimer.

Vous devez émettre une base de données de mise au repos ou émettre un db2stop et db2start, puis essayez de le supprimer. Ça devrait marcher.


0

J'ai un problème similaire, mais peu importe comment je force l'arrêt de l'application, elle reviendra automatiquement.

Dans mon cas, c'est un service qui verrouille la base de données.

J'ai pu résoudre ce problème en mettant fin au service PID à partir du Gestionnaire des tâches Windows avec le PID trouvé dans la liste des applications DB2.

Pour trouver le PID, ouvrez DB2 Control Center, Toutes les bases de données, BASE DE DONNÉES (celle que vous essayez de supprimer), Liste des applications, Afficher la chaîne de verrouillage, Afficher les détails du verrou et faites défiler vers le bas pour trouver l'ID de processus client et terminez ce PID et réessayez.

J'espère que cela aidera les gens à l'avenir.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.