Disponibilité de la base de données

BoTTom |    Changer de couleur
 
 La disponibilité de la base de données a été revue en V5R30.
 
 1/ la sauvegarde de fichiers en cours d'activité (paramètre SAVACT)
      peut se faire meme en cas de transaction.
 
 2/ la réorganisaiton des fichiers :
 
      a/ peut etre interrompue
 
      b/ peut éventuellement se faire sans verrouillage fort
 
 Rappel sur le paramètre SAVACT.
 
   cela permet de faire une sauvegarde d'une base en activité.
 
     il reste cependant le problème des objets base de données en cours
      de transaction (sous commitment control)
 
     on peut sauvegarder des fichiers en cours de mise à jour simple, mais
      pas sous COMMIT/ROLLBACK
 


|    Changer de couleur
  Exemple :
 
  Soit un fichier avec un enregistrement verrouillé par un pgm sans COMMIT.
   DB2 va poser un verrouillage *SHRUPD sur le membre (les données)
 
   SAVLIB ==> la sauvegarde prévient d'un objet NON sauvegardé
 
   SAVLIB SAVACT(*LIB) ==> la sauvegarde est effectué normalement (complète)
   [ SAVLIB SAVACT(*SYNCLIB) si vous avez plusieurs bibliothèques ]
 
   ......................................................................
   : L'intégrité de la base en cas de restauration est à votre charge,  :
   :   vous venez peut-etre de sauvegarder une piece comptable          :
   :   incomplète (non équilibrée), par exemple.                        :
   :                                                                    :
   : La fonction journal peut vous y aider (APYJRNCHG / RMVJRNCHG).     :
   :....................................................................:
 
   le paramètre SAVACTWAIT(120) permet d'indiquer le temps d'attente pour
    la disponibilité des objets et la fin d'une transaction.
 
 


|    Changer de couleur
 
  Mais, imaginons un fichier en cours d'utilisation sous commitment control
   (DB2 pose alors un verrou *SHRRD sur l'objet)
 
   SAVLIB ==> la sauvegarde prévient d'un objet NON sauvegardé
 
   SAVLIB SAVACT(*LIB) ==> Erreur CPF377F, la sauvegarde n'a pas lieu
 
   ....................................................................
   :   La disponibilité des objets est testée AVANT la sauvegarde !   :
   :..................................................................:
 
   SAVLIB SAVACT(*LIB) SAVACTWAIT(120 *NOCMTBDY ) nouveau paramètre en 5.30
   ........................................................................
   : le paramètre SAVACTWAIT accèpte trois valeurs :                      :
   :  1/ attente pour la disponibilité des objets                         :
   :  2/ attente pour la disponibilité des enregistrements en transaction :
   :  3/ attente pour les autres transactions (création de table, ...)    :
   :......................................................................:
 
    la sauvegarde a lieu, complète, avec un message d'information CPI3731
      par fichier en transaction, dans la JOBLOG du travail.


|    Changer de couleur
 
Détail du message CPI3731
 
                     Complément d'informations sur message 
 
 ID message . . . . . . :   CPI3731
 Date d'envoi . . . . . :   29/11/04      Heure d'envoi  . . . . :   17:34:2
 
 Message . . . . :   Objet FICH1P1 (type *FILE) enregistré avec une transaction
   partielle.
 
 Cause . . . . . : L'objet FICH1P1 de type *FILE de la bibliothèque AF4SRCT
   été sauvegardé avec une ou plusieurs transactions partielles. Si cet objet
   est un fichier base de données, le nom du membre est FICH1P1.
 Que faire . . . :
     -- S'il s'agit d'une opération de restauration, vous ne pouvez utiliser
   cet objet avant d'appliquer ou de supprimer les modifications journalisées
   (commande APYJRNCHG ou RMVJRNCHG) pour atteindre les limites de validation
   Pour appliquer ou supprimer les modifications, vous aurez besoin du journal
   QSQJRN de la bibliothèque AF4SRCT et de la chaîne des destinataires du
   journal commençant par JRNRCV0001 dans la bibliothèque AF4SRCT de l'unité
   ASP *SYSBAS.


|    Changer de couleur
 
 ATTENTION, le message indique bien que le fichier a été sauvegardé
  lors d'une transaction incomplète , il n'est donc pas intègre.
 
 SI VOUS LE RESTAUREZ :
 
  vous aurez un message CPI3731 (toujours de type *INFO) dans la JOBLOG.
 
 et le fichier sera considéré comme inutilisable. 
 
  DSPFD montre cela, un OPEN sur le fichier engendre CPF428D
 
  et vous devez :
 
   i/   avoir ou restaurer le récepteur avec la transaction terminée, puis
         passer l'une des commandes suivantes : APYJRNCHG ou RMVJRNCHG
 
   ii/  restaurer une version avec transaction complète du fichier
 
   iii/ passer la commande CHGJRNOBJA ATR(*PTLTNS) PTLTNS(*ALLUSE)
         pour autoriser l'utilisation de cette version non intègre.
         (reprise "à la main" de l'intégrité du fichier)


|    Changer de couleur
 
 A noter qu'un ROLLBACK peut maintenant être annulé.
 
     1/ passez la commande WRKCMTDFN JOB(*ALL)
     2/ faites F11 pour regarder l'état de la transaction
 
 
Si vous avez les droits *ALLOBJ, vous pouvez passer l'option 20 qui annule
 le ROLLBACK, le fichier devient alors dans le même état qu'un fichier
 restauré suite à une sauvegarde pendant transaction.
 
Il est donc, lui aussi inutilisable, sauf à
 
     a/ terminer la transaction
 
     b/ passer la commande CHGJRNOBJA
 
 
Il est enfin possible d'empécher cette fonction, même à un utilisateur
 ayant des droits en créant une DATA AREA QGPL/QTNNOENDRB.
 
 


|    Changer de couleur
 
 Autre nouveauté concernant la disponibilté de la base de données, la
  réorganisation de fichier, plus souple qu'avant.
 
 Elle peut maintenant etre interrompue (Appel/sys 2 ou ENDJOB)
  (Iseries navigator vous propose un dialogue spécifique et très pratique)
 
  RGZPFM ... ALWCANCEL(*YES)
 
  Avant, (ou sans ce paramètre)  quand vous lancez RGZPFM, le système :
 
   1/ invalide tous les index.
 
   2/ fabrique une copie du fichier qui deviendra l'original à la fin.
 
   3/ reconstruit ensuite les index (sauf celui utilisé en référence)
 
 Si on interrompt la réorganisation, on retouve le fichier physique dans
  son état d'origine, et le système se met à reconstruire tous les index !
 
 Ce qui rend l'interruption très délicate, les applications étant en
   attente de la disponibilité des index associés.


|    Changer de couleur
 si vous précisez ALWCANCEL(*YES)
 
   - le système ne travaille pas sur une copie du fichier
       ==> le fichier doit etre journalisé !
 
   - la réorganisation est un peu plus longue.
 
   - vous pouvez indiquer KEYFILE(*RPLDLTRCD) qui place les enregistrements
      de fin du fichier, à la place des enregistrements supprimés.
 
   - vous pouvez demander une maintenance des index en temps réel, afin
      d'assurer une disponibilité immédiate de la base, en cas d'arret.
 
        RBDACCPTH(*YES) les chemins d'accès sont maintenu de manière
                         asynchrone, en fin d'opération (comme avant)
 
        RBDACCPTH(*OPTIMIZE) le système choisi, soit une maintenance pendant
                             la réoganisaiton, soit une maintenance
                              asynchrone, en fin de traitement.
 
        RBDACCPTH(*NO)  les chemins d'accès sont maintenus PENDANT la
                         réoganisation [ALWCANCEL(*YES) obligatoire]


|    Changer de couleur
 
   Dans ce dernier cas, RBDACCPTH(*NO), vous pouvez autoriser l'accès
    au fichier pendant la réogranisation, avec le paramètre LOCK.
 
 
     LOCK(*EXCL)     le système pose un verrou exclusif rendant l'accès
                      au fichier impossible.
 
     LOCK(*EXCLRD)   le système pose un verrou exclusif avec lecture,
                      rendant la consultation possible, mais la mise à jour
                      impossible.
 
     LOCK(*SHRUPD)   le système pose un verrou en mode partagé, la mise à
                      jour du fichier par d'autres traitements est permise.
 
                     ATTENTION, la réorganisaiton du fichier suivant un
                      critère de clef précis [paramètre KEYFILE], n'est
                      plus garantie, des enregistrements pouvant etre
                      insérés (par exemple) pendant le traitement.
 
    Ce dernier paramètre, rend, lui aussi la réorganisaiton plus longue.
 


|    Changer de couleur
 Détails :
 
  Le système créé un fichier de travail dans QRECOVERY portant le nom SQL
    QDBRGZ_BIBLIOTHEQUE_FICHIER, et le détruit en fin de traitement.
 
  L'annulation d'une demande s'affiche comme cela dans l'historique
 
  .......................................................................
  : Dernière demande au niveau 2 interrompue.                           :
  : Traitement de l'instruction SQL arrêté. Code raison : 3. (SQL0952)  :
  :.....................................................................:
 
  Si le fichier de QRECOVERY existe déja, le système tente une reprise,
   si les paamètres de la commande sont les meme.
 
  Voici ce que peut afficher la LOG
 
   QDBRGZ_AF4W_HTTPLOG_HTTPLOG de type *FILE existe déjà dans QRECOVERY.
   Non continuation de l'opération de réorganisation annulée sur le fichier
     HTTPLOG_I2 de la bibliothèque HTTPLOG_I2, membre AF4W.
 
 


|    Changer de couleur
 
 Si vous demandez de l'Aide, il ya trois codes possibles :
 
  1 -- Les paramètres indiqués lors de la réorganisation en cours (RGZPFM
 FILE(AF4W/HTTPLOG) MBR(HTTPLOG) KEYFILE(AF4W/HTTPLOG_I2 HTTPLOG_I2)
 RCDFMT(*ONLY) RBDACCPTH(*YES) ALWCANCEL(*YES) LOCK(*EXCL)) ne correspondent
 pas exactement aux paramètres de la réorganisation annulée (RGZPFM
 FILE(AF4W/HTTPLOG) MBR(HTTPLOG) KEYFILE(AF4W/HTTPLOG_I2 HTTPLOG_I2)
 RCDFMT(*ONLY) RBDACCPTH(*YES) ALWCANCEL(*YES) LOCK(*SHRUPD)).
 
 le code raison 2 indique que le fichier contient trop de différences
 
         - restauration du fichier, depuis.
         - changement de nom (fichier ou membre)
         - déplacement (bibliothèque)
         - effacement du membre (CLRPFM)
         - ALTER TABLE
 
 le code 3 que le fichier dans QRECOVERY n'existe pas ou est endommagé.
 
 
 Voyez aussi les nouveautés Iseries Navigator sur ce sujet. 





©AF400