DB2 SQL Error: SQLCODE=-911, SQLSTATE=40001, SQLERRMC=68
J'obtiens cette erreur quand j'ai couru:
alter table tablename add column columnname varchar(1) default 'N';
DB2 SQL Error: SQLCODE=-911, SQLSTATE=40001, SQLERRMC=68
Comment le résoudre?
Vous devez vous connecter pour publier un commentaire.
De l'instruction alter veut obtenir un verrou X sur cette ligne dans SYSIBM.SYSTABLES. Il y a une transaction qui a cette ligne/valeur de l'indice à une incompatibilité de l'état de verrouillage. Ce verrou qui a causé le délai d'attente peut-être même à partir d'un curseur ouvert qui lit cette ligne avec un r ou RR niveau d'isolation.
Mettre fin à tout autre SQL en train d'essayer de requête SYSTABLES et tous les services publics qui peut être essayer de mettre à jour SYSTABLES comme la réorganisation et "runstats" puis essayez de la modifier de nouveau.
Voir DB2 Info centre (j'ai pris l'un pour DB2 10, le plus probable ce code d'erreur est le même dans les autres versions, mais de façon optimale!).
Semble qu'il y ait une transaction ouverte sur votre table, qui empêche votre
alter
de commande de l'exécution.après avoir Modifié une table, vous devez Réorganiser: reade sur elle ici:
Exécuter le "runstats" script, qui est un script DB2, à intervalles réguliers et de définir le script pour récupérer "RUNSTATS" AVEC la DISTRIBUTION ET des INDEX DÉTAILLÉS de TOUS.
Outre l'exécution de la "runstats" scripts régulièrement, vous pouvez effectuer les tâches suivantes pour éviter le problème:
Utilisation REOPT une FOIS ou REOPT TOUJOURS avec l'interface de ligne de commande (CLI ) des paquets de changer l'optimisation de la requête comportement.
Dans la base de données DB2, modifier le tableau pour le rendre instable. Volatile tables indiquer à l'DB2 optimiseur que la table de cardinalité peut changer de façon importante au moment de l'exécution (de vide à grande et vice versa). Par conséquent, DB2 utilise un index pour accéder à une table plutôt que sur une analyse de la table.