24 novembre 2021

eDSN, evMedia - "Bad history file syntax!" ou "MalformedInputException: Input length = 1"

Un upgrade eDSN ou evMedia peut entrainer une mise à jour de la version du Karaf embarqué. A cette occasion le fichier contenant l'historique des commandes peut avoir changé de format et l'ancien fichier être considéré comme illisible. Dans le pire des cas cela provoque un blocage de l'accès aux sessions SSH ...


En cas de présence de ce message le edsn.log, la console SSH est accessible

2021-11-24T09:56:28,514 | INFO  | 4)-nio2-thread-1 | ServerSessionImpl                | Session edsn@/127.0.0.1:46726 authenticated
2021-11-24T09:56:28,750 | WARN  | onsole user edsn | jline                            | Failed to load history
java.lang.IllegalArgumentException: Bad history file syntax! The history file `/home/adm/hr9re1/.karaf/karaf.history` may be an older history: please remove it or use a different history file.
        at org.jline.reader.impl.history.DefaultHistory.addHistoryLine(DefaultHistory.java:185) ~[!/:?]
        at org.jline.reader.impl.history.DefaultHistory.addHistoryLine(DefaultHistory.java:169) ~[!/:?]
        at org.jline.reader.impl.history.DefaultHistory.lambda$load$0(DefaultHistory.java:86) ~[!/:?]


Il suffit de se connecter à la console et de réinitialiser l'historique par la commande ssh suivante :

edsn> shell:history --clear


Le cas d'erreur suivant est plus gênant puisque le client SSH est alors inaccessible :

Au lancement du client eDSN par exemple :

edsn>

Error executing command: java.nio.charset.MalformedInputException: Input length = 1

 

Dans edsn.log

2021-11-15T11:21:26,946 | ERROR | onsole user edsn | ShellUtil                        | Exception caught while executing command

java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1

        at java.io.BufferedReader$1.hasNext(BufferedReader.java:577) ~[?:?]

        at java.util.Iterator.forEachRemaining(Iterator.java:132) ~[?:?]

La solution est alors de réinitialiser l'historique des commandes Karaf en détruisant le fichier. 

Dans notre cas : 

rm -f ~/.karaf/karaf.history

25 août 2021

Oracle - date de dernière mise à jour des données d'une table

Pour connaître la date de dernière mise à jour des données d'une table (insert ,delete etc ) il est possible de se baser sur la pseudo-colonne ora_rowscn (system change number niveau ligne) :


SQL> SELECT SCN_TO_TIMESTAMP(MAX(ora_rowscn)) as TIMAJ from ZYTD12 ;

TIMAJ
---------------------------
25/08/21 09:42:45,000000000

7 juin 2021

Design Center : profil de catalogage

 Design Center met à disposition un objet "Paramètre" de type "Profil de catalogage"

 

Dans cet exemple un profil "CATAALLO" est créé pour cataloguer systématiquement les objets 

 

Le profil utilisé par l'environnement est à préciser dans l'onglet "Paramètres" de l'objet "Plateforme Physique" :


Dès lors, toute édition d'un objet provoque son catalogage (exécution par Design Center via le programme BTS de la chaîne NRG) :

30 avril 2021

Exemple d'ordre SQL MERGE permettant de gérer soit un INSERT soit un UPDATE

Dans l'exemple suivant on a inséré une occurrence dans ZD05 d'un code de DRE. On corrige ensuite la ZDTD12 par un MERGE pour que l'occurrence soit créée (si nouvelle) ou modifiée (si existante).

Il s'agit d'une syntaxe SQL ou l'on va :

  • Présenter la table ciblée (MERGE INTO ... A)
  • Produire un SELECT indiquant les valeurs par défaut (USING ... B)
  • Indiquer le critère de mise en correspondance des listes A et B (ON A...=B...)
  • Indiquer quoi faire en cas de correspondance (WHEN MATCHED THEN UPDATE ...) 
  • Ou en cas de non correspondance (WHEN NOT MATCHED THEN INSERT...)


MERGE INTO ZDTD12 A
USING (SELECT NUDOSS, .... AS PGPDOS,'05' AS CDINFO,'0' AS TEVERO,1 AS NOMBRE,0 AS NULMAX,0 AS NUCMAX,
       '        ' AS TECPRT,SYSDATE AS TIMJIF FROM ZD00 WHERE CDSTCO = 'DRE') B
ON (A.NUDOSS=B.NUDOSS AND A.CDINFO=B.CDINFO)
WHEN MATCHED THEN UPDATE SET A.NOMBRE=B.NOMBRE, A.NULMAX=B.NULMAX
WHEN NOT MATCHED THEN INSERT (NUDOSS, PGPDOS, CDINFO, NOMBRE, TEVERO, NULMAX, NUCMAX, TECPRT, TIMJIF)
       VALUES (B.NUDOSS, B.PGPDOS, B.CDINFO, B.NOMBRE, B.TEVERO, B.NULMAX, B.NUCMAX, B.TECPRT, B.TIMJIF);
COMMIT;