Page 1 sur 1

Message SQL7917 ?

Posté : mer. 25 juil. 2012, 16:33:04
par claude.mahe
Bonjour,

Depuis notre passage en V7R1, les logs de nombreux jobs contiennent le message SQL7917 :

Code : Tout sélectionner

SQL7917    Information             00   25/07/12  17:13:27,736733  QSQRUN3      QSYS        *STMT    QSQRUN3     QSYS        *STMT 
                                     Module d'origine  . . . . . :   QSQOPEN                                                       
                                     Procédure d'origine . . . . :   SNDINFOMSG                                                    
                                     Instruction . . . . . . . . :   37335                                                         
                                     Module de destination . . . :   QSQOPEN                                                       
                                     Procédure de destination  . :   OPQRYDBM                                                      
                                     Instruction . . . . . . . . :   19774                                                         
                                     Message . . . . :   Plan d'accès non mis à jour.  
Sur la doc. IBM on peut lire

Code : Tout sélectionner

The query optimizer rebuilt the access plan for this statement, but the program could not be updated.
Pourquoi l'optimiseur veut mettre à jour un programme !? Que faire pour traiter ce message ?
Merci

SQL7917

Posté : jeu. 26 juil. 2012, 07:24:03
par cmasse
Un plan d'accès est un plan de bataille préparé par l'optimiseur afin de traiter une requête au mieux.

Dans le cas d'un programme compilé, ce plan d'accès est stocké dans le pgm lui même.

A l'exécution le plan d'accès est "validé" afin de vérifier que le contexte n'a pas changé (nbr de lignes radicalement différent, index en plus ou en moins, etc...), si c'est le cas le "plan de bataille" doit être revu et si possible mis à jour dans le pgm pour la prochaine exécution.

Cette mise à jour ne doit pas être possible dans ce cas, voici ce que dit la doc :
The query optimizer rebuilt the access plan for this statement, but the program could not be updated. Another job may be running the program. The program cannot be updated with the new access plan until a job can obtain an exclusive lock on the program. The exclusive lock cannot be obtained if another job is running the program, if the job does not have proper authority to the program, or if the program is currently being saved. The query will still run, but access plan rebuilds will continue to occur until the program is updated.