12 janvier 2017

BMQ-BBAD0015-ERREUR D'ACCES (TABLE RELATIONNELLE) : S1/42/DG/PREPARE/000000000000907

Michel m'indique que la subbn (Unix/Linux) perd les espaces au début des lignes données en parametre pour construire l'ordre SQL de sélection des dossiers.
Ce qui peut provoquer une erreur en "collant" deux termes initialement séparés.

Exemple avec un HRAccess Suite 9 :


                                    Phase BN

Sélection SQL de la population :
SELECT NUDOSS FROM ZD00 WHERE CDSTCO='XXX' and CDCODE IN ('A','B','CDE') AND
 IDGPRG=1000
                                    Phase BN

Rappel des paramètres saisis :

PA42SELECT NUDOSS FROM ZD00 WHERE CDSTCO='XXX' AND CDCODE IN ('A','B','CDE') AND
PA42IDGPRG=1000

Nom du Compte-Rendu d'exécution : TYBXBN.hr9ass



                Soumettre le job (Y/N/T) [N] ? t

*****************************************************************
*              Constitution d'une population batch              *
*****************************************************************


JOB : JRBN                            DATE : 2017/01/12 16:32:15


*-------------------------- STEP120N ---------------------------*
*              Constitution d'une population batch              *
*---------------------------------------------------------------*
*GE01BMP-BBAD0001-------------------------------------------------------------------------------------------------------
*GE01BMP-BBAD0002-IDENTIFICATION DU PROGRAMME : BMP/7.000/2013-04-22-15.16.25/F/
*GE01BMP-BBAD0003-DEBUT DE TRAITEMENT   - HORODATAGE DE DEBUT : 2017-01-12-16.32.16
*ST01BMQ-BBAD0001-------------------------------------------------------------------------------------------------------
*ST01BMQ-BBAD0002-IDENTIFICATION DU PROGRAMME : BMQ/7.000/2014-09-10-16.57.51/F/

*ST01BMQ-BBAD0015-ERREUR D'ACCES (TABLE RELATIONNELLE) : S1/42/DG/PREPARE/000000000000907
SELECT NUDOSS FROM HR.ZD00 BMQ WHERE ( CDSTCO='XXX' AND CDCODE IN ('A','B','CDE') ANDIDGPRG=1000) 


Pour éviter cela, il est possible de modifier la variable IFS servant à indiquer au système les caractères séparateurs :


ZOPA42="XX"
IFSSVG=$IFS
IFS=''
echo "${L_ZOPA42} :"
while [ "$ZOPA42" ]
do
   read ZOPA42
   if [ "$ZOPA42"  ]
   then
      PA=1
      ZOPA42=`echo "$ZOPA42" | cut -c1-76 | $SIGACS/bin/tras "[a-z]" "[A-Z]"`
      echo PA42"$ZOPA42" >> $TMP/T120PA.$nupro
   else
      if [ $PA -eq 0 ] ; then exit; fi
   fi
done
clear
IFS=$IFSSVG
unset IFSSVG




11 janvier 2017

BLS-BBAD0015-ERREUR D'ACCES (TABLE RELATIONNELLE) : ZDAA/01/KJ/PREPA/000000000001000

Les programmes utilisant BLS ouvrent des curseurs sur les informations rattachées à leur processus. Dans certains cas (en particulier avec la chaîne d'export des données NOY), le nombre de curseurs ouverts dépasse le maximum autorisé :

*-------------------------- STEP120N ---------------------------*
*                    Exportation des données                    *
*---------------------------------------------------------------*
YIYZDBCG-BBAD0001-------------------------------------------------------------------------------------------------------
YIYZDBCG-BBAD0002-IDENTIFICATION DU PROGRAMME : BCG/7.000/2016-12-14-13.41.34/F/
YIYZDBCG-BBAD0003-DEBUT DE TRAITEMENT   - HORODATAGE DE DEBUT : 2016-12-21-12.37.00
YIYZDBCG-BBAD0004-LISTE DES PARAMETRES LUS
YIYZDBCG-BBAD0006-....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
YIYZDBCG-00000000-PA83V
YIYZDBCG-00000000-PA85 P  0003P
YIYZDBCG-BBAD0005-LISTE DES PARAMETRES INTERPRETES ET UTILISES
YIYZDBCG-BBAD0006-....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
YIYZDBCG-00000000-PA83V
YIYZDBCG-00000000-PA85 P  0003P
YIYZDBLS-BBAD0001-------------------------------------------------------------------------------------------------------
YIYZDBLS-BBAD0002-IDENTIFICATION DU PROGRAMME : BLS/7.000/2016-12-14-13.43.57/F/
YIYZDBLS-BBAD0003-DEBUT DE TRAITEMENT   - HORODATAGE DE DEBUT : 2016-12-21-12.37.00
YIYZDBLS-BBAD0015-ERREUR D'ACCES (TABLE RELATIONNELLE) : ZDAA/01/KJ/PREPA/000000000001000
 
 Pour Oracle,
ORA-01000: maximum open cursors exceeded

En général, la limite est placée à 5000 voire 6000 ...

Pour en connaitre la valeur exécuter :
select value from v$parameter where name = 'open_cursors'

Essayez de detacher du processus les informations qui ne contiennent pas de données.
Sinon demandez à l'administrateur de modifier le paramètre Oracle open_cursors.