31 janvier 2014

Erreur BQL au chargement : Clef en double - S1/EXECUTE/10/PK/000000000000001

Christian relance une NJU incidentée du fait d'un disque plein. Mais le chargement par BQL de ZX5W se bloque sur une erreur de "clef en double" qui n'existait pas auparavant :

*GE01BQL-BBAD0015-ERREUR D'ACCES (TABLE RELATIONNELLE) : S1/EXECUTE/10/PK/000000000000001
*GE01BQL-00000000- INSERT INTO       HR.ZX5W        (NUDOSS,NULIGN,SOCDOS,PGPDOS,CODCHN,TYREPO,IDC
*GE01BQL-00000000-HN ,TIMCHN,STATUS,IDGPRG,SOCCLE,MATRIC,NUDOSP,IDSITU,PERPAI,USAGEP,NUMTRT,NUMBUL
*GE01BQL-00000000-,TIMEST) VALUES ( +000066862, +000001, '100', +001230000, 'NJU', 'D', 'DADSU2013
*GE01BQL-00000000-         ', TO_DATE ('2014-01-30-19.14.58','YYYY-MM-DD-HH24-MI-SS'), '0', +00123
*GE01BQL-00000000-0000, '100', '00566       ', +001, '  ', 'MT201301', 'S', '0', '01', TO_DATE ('0
*GE01BQL-00000000-001-01-01-00.00.00','YYYY-MM-DD-HH24-MI-SS'))
*GE01BQL-BBAD0008-STATISTIQUES SUR LES FICHIERS (ENREGISTREMENTS LUS/ECRITS)
*GE01BQL-BBAD0009-PA (PA) : 000000000000001
*GE01BQL-BBAD0009-SQ (SQ) : 000000000000337
*GE01BQL-BBAD0011-*** BQL : FIN ANORMALE - HORODATAGE DE FIN   : 2014-01-30-19.21.32  **** CODE RETOUR 99 ******


Après analyse, il s'est avère que:
  • Une première exécution de BQL s'est interrompue en cours de chargement,
  • Lors de cette exécution la ZXTD12 a été purgée,
Lorsque la chaine est relancée :
  • Sans données dans la ZXTD12, la chaine choisit de prendre un NULIGN = 1
  • Mais ce n° est déjà pris :


NUDOSS NULIGN SOC PGPDOS COD T IDCHN TIMCHN S IDGPRG SOC MATRIC NUDOSP ID PERPAI U N NU TIMEST
---------- ---------- --- ---------- --- - ------- ------------------- - ---------- --- ------------ ---------- -- -------- - - -- -------------------
66862 1 100 1230000 NJ6 C RFEDB 2013-01-23-13.51.46 0 1230000 100 00566 1 MT201301 S 0 01 0001-01-01-00.00.00


Solution : reconstruire la ZXTD12 en exécutant une ROL (dans certains cas simple un SQL d'INSERT peut suffire).

2 commentaires:

  1. bonjour

    super le blog car étant junior (sur HRA), j'y pique plein de bonnes astuces.
    une petite question, nous sommes sur une version 5.10 et je rencontre un petit problème de blocage BQL légèrement différent :
    je dois importer des dossiers (via suboy/suboz) mais lorsque j'arrive dans l'environnement cible (notre environnement de tests fonctionnels), j'ai une clé en double car le nudoss du dossier importé est déjà alloué mais à un autre dossier;
    Une suggestion serait la bienvenue

    RépondreSupprimer
    Réponses
    1. Normalement si le dossier existe déjà la NOZ doit affecter un nouveau NUDOSS.
      - Le mécanisme d'attribution aurait-il choisit-il un numéro non libre ? Suite au kit Nudoss de fin 2011, le programme BCL en v5 recherche le max(NUDOSS) inférieur à la valeur PP20.CDICON du processus *CF01, puis incrémente.
      - Le plus probable c'est que quelqu'un aie créé un dossier entre le moment ou tu as exécuté ta chaine NOZ (qui prépare les fichiers de chargement) et celui ou tu as effectivement tenté de charger les données.

      Supprimer