Mise à jour de la bibliothèque QSYS pendant un upgrade

Rappel

La bibliothèque QSYS contient les éléments de votre système, vous ne devez en aucun cas lui ajouter des objets délibérément.
Un certain nombres d’objet ne peuvent être que dans cette bibliothèque comme, les profils, les lignes, les contrôleurs, les unités et descriptions de bibliothèque par exemple.

il est possible que vous ayez customiser certains objets voici quelques conseils.

voila ce que c’est faire le système quand vous allez changer de version par exemple pour monter en V7R4.

Si vous avez modifié une des descriptions fournies par IBM ,  le système conservera ces modifications.

Seul les Descriptions de travail et les sous systèmes ci dessous sont concernés

Descriptions de travail concernées

QCTL (Description de travail de sous-système de contrôle)
QCTLIJBD (Description de travail ICG de sous-système de contrôle)
QESAUTON (Notification automatique d’incident)
QFSIOPWK (Processeur E-S de serveur de fichiers)
QMSF (Utilisée par le travail QPGMF)
QPDAUTOPAR (Utilisée pour l’analyse automatique d’incidents)
QQQTEMPS (description de travail DB2 for i utilisée par QSYSWRK)
QSPLERROR (Erreur de spoulage)
QSPL (Sous-système de spoulage)
QSTRUPJD (Démarrage automatique)
QSYSWRK (Sous-système système)
QSYSWRK (Description de travail de sous-système de système)

QTMSNMP (Description de travail SNMP)
QZMFEJBD (Poste de travail de démarrage automatique QSYSWRK)

Les sous-système concernés

QBASE (Contrôle de base)
QBATCH (Lot)
QCMN (Communications)
QCTL (Sous-système de contrôle)
QINTER (Interactive)
QPGMR (Programmeur)
QSNADS (Distribution SNA)
QSPL (Sous-système de spoulage)
QSYSWRK (Description de travail de sous-système de système)
QUSRWRK (Sous-système utilisateur)

Comment en utilisant des bibliothèques intermédiaires ?
En copiant dans la bibliothèque QINSYS les objets et si il y a des différences, les objets de QSYS seront mis à jour.
La bibliothèque QINPRIOR contient les objets du niveau d’os précédent

Vous pouvez voir le détail ici :
https://www.ibm.com/support/knowledgecenter/fr/ssw_ibm_i_73/rzahc/rzahcibmojects.htm

Vous pouvez également imprimer les informations de votre système par la commande PRTSYSINF vous obtiendrez environ 50 spools qui contiendrons des informations, comme les ressources utilisées, les tables de réponse, Les PTF etc…
Sauvegardez l’OUTQ dans lequel sont placés ces états.

Remarque :

La jobd QDFTJOBD qui est votre jobd par défaut n’est pas dans QSYS mais dans QGPL.

C’est peu être l’occasion de modifier votre programme de démarrage, il est indiqué dans la valeur système QSTRUPPGM.
Souvent ce programme n’est pas mis à jour et fait des choses obsolètes

Vous pouvez par exemple
Extraire le source du programme QSTRUP de QSYS et l’enrichir et le recompiler dans une bibliothèques à vous en indiquant le nouveau nom dans la valeur système.

Vous devez également lire les informations sur le site Planning upgrade à l’adresse

https://www.ibm.com/support/pages/planning-upgrade-ibm-i-74-software

parceque par exemple au passage en 7.4 vous constaterez que
Les 2 PRTFS QSYSPRT et QSAVOBJ sont limités à 100000 enregistrements et que vous devrez les retailler

==>CHGPRTF FILE(QSYSPRT) MAXRCDS(*NOMAX) et
==>CHGPRTF FILE(QSAVOBJ) MAXRCDS(*NOMAX)

 

En résumé

Ne pas travailler dans QSYS
Le système vous met à jour les SBSD et les JOBDS
Mais vous devez lire les informations pour éviter les petites surprises

, Mise en place d’un PRA ?

Quand on discute avec les clients on se rend compte qu’il y a une grande confusion entre haute disponibilité est PRA, PCA etc …

Prenons la définition de WIKIPEDIA .

Un plan de reprise d’activité (PRA) est un ensemble de procédures (techniques, organisationnelles, sécurité) qui permet à une entreprise de prévoir par anticipation, les mécanismes pour reconstruire et remettre en route un système d’information en cas de sinistre important ou d’incident critique.

En gros pour moi c’est le temps dont on a besoin suite à gros un crash pour rendre un service acceptable à la production.

Comment faire le point dans votre entreprise ?

il y a une technique assez simple c’est de se dire voila, on est planté maintenant qu’est ce qui ce passe ?

1) Il va vous falloir Reconstruire une machine.

il va falloir vous pencher sur les contrats de maintenance de votre partenaire matériel . Ne pas hésiter à ce faire confirmer les choses.
La vrai durée qui doit vous intéresser c’est combien de temps pour avoir une machine opérationnelle.

une prise en compte de l’incident au 1/4 heure s’il ne se passe rien derrière ne sert à rien !

2) Reconstruire le contexte opérationnel

On limitera ici à la restauration complète de la machine.

Ça veut dire ou sont la ou les bandes :

A) du système (on parle de savsys)

pour restaurer l’os, les configurations, les utilisateurs.
première remarque, tout ce qui a évolué sur votre système dans le lapse de temps est perdu (nouveau profils , changement de mot de passe)

la bonne fréquence , si on le peut sauvegarde complète tous les soirs, ça simplifie les opérations de reprise
sinon 1 fois par semaine est un bon compromis, une fois par mois est un minimum.
mais attention sachez précisément ou est cette bande, quand vous la chercherez le compteur tournera.

B) des données

Les bibliothèques
Les dossiers partagés (à remplacer au plus vite)
Le reste de l’ifs

Pour avoir une idée de vos temps de restauration compter vos temps de sauvegarde que vous multipliez par environ 1,5.

1 client sur trois ne saurait pas remonter sont système sans perte d’informations, 9 clients sur 10 sauvegardent bien leurs bibliothèques de données mais néglige le reste.

Une fois votre système n’oubliez pas de ré-appliquer les droit privés !

3) Conclusion

Vous devez pouvoir répondre à votre directeur combien de temps prendrait un crash du système

reconstruction de la machine    xx heures
reconstruction du système         xx heures
refresh des dernières données  xx heures

exemple :

36 heures
1 heures
3 heures

Ne négligez pas les temps de prise de décision, que vous ne rattraperez jamais.

Vous pouvez mettre en place des choses simples , pour pouvoir travailler à minima en cas de problèmes.

Par exemple , j’avais un client qui descendait tous les soirs les commandes à préparer le lendemain dans csv sur un PC de L’entrepôt

Vous devez également vérifier que vos sauvegardes sont lisibles …

 

Vous ne pourrez pas dire je ne savais pas !

, Mettre en place une alerte qui vous avertisse en cas de dépassement de seuil limite de votre ASP.

Voici comment être alerté en cas de disques pleins , en mettant en place une solution simple

Vous avez une valeur limite système qui s’appelle QSTGLOWLMT qui indique la valeur minimum qui doit rester et qui est exprimée en % souvent 15 % ou 10 %.

Vous avez une deuxième valeur système QSTGLOWACN qui indique l’action à effectuer quand vous aurez dépassé ce seuil
par défaut *MSG enverra un message dans QSYSOPR
Vous pouvez changer cette valeur en *REGFAC cette notion veut dire déclenche le programme associé au programme d’exit QIBM_QWC_QSTGLOWACN

le programme que vous devez lancer ne reçoit pas de paramètre

 

ADDEXITPGM EXITPNT(QIBM_QWC_QSTGLOWACN)
FORMAT(STGL0100)
PGMNBR(1)
PGM(MABIB/MONPGM)

exemple de programme :

PGM

/* MONPGM */
SNDSMTPEMM RCP((‘admin@votresociété.fr’)) +

SUBJECT(‘Limite espace disque’) +

NOTE(‘Attention vous avez dépassé le seuil de mémoire requise’)

ENDPGM

Bien sur il faut que votre partition soit relais de messagerie .

Attention, si vous utilisez le mail, QPGMR devra avoir le droit d’en emettre, utilisez la commande ADDSMTPLE.

Vous pouvez faire un programme beaucoup plus évolué, même en RPGLE,  si vous le désirez .

Attention :

La petite subtilité est donc au redémarrage :

Quand on démarre le système (IPL) ou qu’on lance le qstruppgm ou qu’on démarre le sous système qctl avec moins de la valeur  QSTGLOWLMT, Il ne peut pas soumettre le Programme d’exit et le système reste en restreint un peu comme la valeur *ENDSYS qui mettrait directement le sous système en restreint. et pour redémarrer vous devrez faire du ménage ….

Nouveauté sur le SBMJOB en V7R4

La V7r4 apporte une nouveauté pour la commande SBMJOB, vous pouvez désormais définir un programme d’exit pour cette commande (QIBM_QWT_SBMJOB).

Le programme d’exit prend la main avant de placer l’exécution de la commande demandée dans la jobq.

Ce point d’exit, peut être mis sur une jobq ou sur toutes, *ANY

2 paramètres

Le premier contiendra plein d’informations nécessaires, Utilisateurs, jobq, jobd etc…

Le second contient la taille dans un binaire de 4

Vous pouvez donc facilement loguer une demande sensible, réorienter un travail en fonction d’un utilisateur ou d’un contexte, voir le cas échéant interdire la demande de ce travail.

Extrait d’un exemple

Pour que les jobs de l’utilisateur exploit parte dans une file de travail en *NOMAX

DCL &SBMJOB *CHAR 1000
….
DCL &USER *char 10

chgvar &user %sst(&sbmjob 14 10)

if cond(&user = ‘EXPLOIT’) then(do)

enddo

Conclusion :
Ça peut être indispensable si vous avez des ERPs de type boite noire, et que vous avez du mal à paramétrer certaines taches .

Remarque :
Vous avez également un nouveau point d’exit sur la commande CHGJOB (QIBM_QWT_CHGJOB)

Mise à jour du firmware sur une machine sans console HMC.

 

Quand on audite chez nos clients souvent les dernières mises à jour du firmware sont très vieilles, vous pouvez voir ces informations par la commande DSPFMWSTS,  c’est surtout vrai dans les sociétés qui n’ont pas de console HMC.

Attention, même si vous n’avez qu’une seule partition et donc pas de HMC Vous pouvez avoir des problèmes de compatibilité entre votre partition et votre firmware.

Ces plantages interviennent suite à l’application de PTFs, souvent microcodes et se matérialisent par un IPL très long voir qui n’aboutit pas. Si c’est le cas vous devrez arrêter électriquement votre machine, pour pouvoir vider le cache et la relancer, et ensuite démarrer votre partition.

C’est donc la partition qui doit pousser les mises à jour au Firmware vous le savez en voyant *OPSYS dans la commande DSPFMWSTS, l’autre valeur est *HMC qui indique que c’est votre HMC qui fait ces mise à jour.

Vous pouvez également avoir ces infos depuis la version 7.3 en utilisant la vue SYSTOOLS.FIRMWARE_CURRENCY
exemple pour la date de mise à jour en cours :

SELECT FW_RELEASE_DATE, FW_MACHINE_TYPE_MODEL FROM
SYSTOOLS.FIRMWARE_CURRENCY
vous avez également le niveau recommandé zone FW_RECOMMENDED_UPDATE
Cette vue pour fonctionner doit avoir accès à la page :
https://www14.software.ibm.com/support/customercare/flrt/liteTable?prodKey=fw&format=json

Les PTF, FSP code commence par MH, vous ne les avez pas si vous êtes en application à partir de la console HMC.

Vous devrez rapidement récupérer le dernier niveau de MH correspondant à votre configuration, vous avez l’information ici :
https://www-01.ibm.com/support/docview.wss?uid=nas8N1021194

 

Vous devrez alors télécharger le groupe PTF sur fix central et l’appliquer par un IPL de type *FULL , attention le temps de l’IPL peut être doublé … D’après les documentations IBM, un IPL de type système peut suffire en effet s’il y a une PTF firmware, il l’applique mais …

Malheureusement ces groupes ne sont pas téléchargeables en automatique, le conseil est donc de le faire une ou 2 fois par an l’opération et à chaque montée d’OS.

Elle  s’applique comme une autre cumulative

Pour contrôler l’application des PTFs, utilisez la commande DSPPTFAPYI

Il est possible que vous ayez des messages CPF6602 dans la log sur d’autres PTF, si vous n’avez pas suivi régulièrement l’application de celles ci.

Pour corriger, la première possibilité est de passer la commande UPDPTFINF pour mettre à jours les informations PTF.

Si cela ne suffit pas, par exemple si vous avez des PTF de versions précédentes, vous devrez supprimer les fichiers QAPZPTF* de la bibliothèque QUSRSYS et faire un IPL qui les recréera avec les informations à jour à partir des modèles dans QSYS.
Vous ne pouvez pas lire les informations de ce fichier, mais vous pouvez y accéder indirectement par les vues de qsys2, PTF_INFO.
exemple :
Voir les PTFs chargées, mais pas encore appliquées
SELECT PTF_IDENTIFIER, PTF_IPL_REQUIRED, A.*
FROM QSYS2.PTF_INFO A
WHERE PTF_LOADED_STATUS = ‘LOADED’
ORDER BY PTF_PRODUCT_ID

Pour rappel, il vaut mieux effacer les savfs de PTF qui sont dans qgpl, en utilisant la commande DLTPTF

Exemple DLTPTF PTF(*PRMAPY) effacera les savfs des PTFs appliquées de manières permanentes.

Conclusions :

Vous êtes le garant d’un écosystème et il faut bien mettre les correctifs sur :
La partition
Le firmware
La HMC si vous en avez une

, Premiers tests services web REST SQL

Une des fonctionnalités attendues disponible avec la 7.4 / 7.3 TR6 (SF99722 niveau 19) est la possibilité de déployer des services web (REST uniquement) basés sur des instructions SQL au lieu de programmes ILE.

 

Voici nos premiers tests, effectués « à vue » la documentation IBM n’étant pas encore disponible …

 

Services REST SQL

En bref, vous avez désormais les possibilités suivantes :

  • effectuer des SELECT, UPDATE, INSERT
  • appeler des fonctions SQL utilisateur (UDF), des fonctions tables (UDTF)
  • appeler des procédures stockées (procédures cataloguées)
  • utiliser directement la syntaxe VALUES …
  • retourner des données BINAIRES (images, pdf, …)

De plus, IWS vous propose également un format de sortie HTML, en plus de JSON et XML déjà en place. De quoi faciliter l’intégration de vos données dans des pages web !

 

Comment fait-on ?

Déployer un nouveau service : vos avez maintenant la possibilité de choisir SQL

Comme d’habitude pour les services REST, vous indiquez nom de service et nom de ressource

Maintenant, vous avez des paramètres spécifiques à un service basé sur SQL vous permettant de régler les conventions de nommage et la résolution des objets non qualifiés dans vos requêtes. Le fonctionnement est habituel en SQL. Pour simplifier : basé sur la *LIBL en convention *SYS, sur un schéma par défaut en *SQL

Vous pouvez indiquer plusieurs « procédures » dans un service REST SQL, c’est à dire plusieurs opérations disponibles au travers de votre service, et identifiées (plus tard) par des URL et/ou des méthodes HTTP différentes

Pour commencer simplement :

Bien sûr, vous pouvez utiliser des paramètres dans vos requêtes SQL, identifiés par « ? » :

L’outil est plutôt bien fait de ce côté-là : il est capable de détecter le type des données correspondant à vos paramètres en analysant le fichier :

Vous devez ensuite régler le comportement attendu de votre traitement :

la suite des écrans est classique et ne présente pas de particularité dû au SQL, en dehors du type de sortie *HTML proposé.

Quelques exemples de résultats fournis par les appels de différents services (renvoyant une ligne ou plusieurs lignes, en JSON, en XML, en HTML …) :

 

L’outil vous permet également d’obtenir des informations sur l’exécution et les erreurs SQL :

 

Données binaires

Maintenant, passons à la possibilité qui ouvre d’autres perspectives !

Avec les services basés sur des programmes ILE RPG/COBOL, nous n’arrivons pas à retourner des images ou documents binaires : toutes les données sont converties en UTF-8 (par défaut) pour sortir sur le flux HTTP. Nos données binaires ne supportent pas bien … seule solution jusqu’ici : encoder en base64 (c’est à dire en caractères) ! Mais cela complexifie, nécessite du temps machine et augmente la taille de la sortie.

Lors du déploiement, sélectionner le type « Media resource »

Vous devez indiquer le type de ressource (seule la première valeur est prise en compte) :

Dès lors, vos services web peuvent retourner des documents (au sens large), par exemple un pdf accessible depuis un navigateur :

Ou une image (vous devriez reconnaître) :

 

Adaptation des scripts shell

Un nouveau script shell a fait son apparition dans /qibm/proddata/os/webservices/bin : getConfigurationFile.sh

 

Les informations disponibles actuellement : https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/dW%20IBM%20Integrated%20Web%20Services%20for%20i/page/Script%20to%20generate%20property%20file%20for%20a%20service

Ce dernier génère deux fichiers pour un service :

  • un fichier .properties
  • un fichier .xml

Le fichier properties contient les attributs du service, des procédures/méthodes, du connecteur jdbc.

Le fichier xml est en réalité un fichier pcml contenant des balises spécifiques utilisées pour le déploiement d’un service.

Ces formats de fichiers permettront également le déploiement par script shell (avec installWebService.sh) des services REST SQL.

 

 

En conclusion

L’outil poursuit sa belle évolution, avec toujours plus de fonctionnalités et de possibilités ! Nous compléterons prochainement avec des tests plus approfondis.

D’ici là, bonnes vacances à tous, et rendez-vous à la rentrée, reposé et bronzé !

, Access Client Solutions 1.1.8.1

La toute dernière version de ACS disponible depuis novembre 2018 apporte son lot d’améliorations. Sans surprise, ce sont les fonctionnalités liées à SQL qui évoluent le plus.

Petite revue des principales évolutions.

 

Script SQL

Les SELECT avec l’option FOR UPDATE permettent une modification directement dans l’affichage du résultat :

Possibilité de demander l’affichage de l’entête de colonne, soit dans les options, soit par click droit sur l’entête dans le résultat :

Schéma de base de données

Le choix de l’ASP est désormais possible :

Des améliorations dans différents affichages (objets associés), et la capacité à modifier les Alias, Masque de colonne et Droits sur une ligne.

 

Autres

Dans le centre de performances SQL, possibilité de filtrer les moniteurs, les images instantanées de cache, et moniteurs d’événements de cache :

Dans les sessions 5250, la bufferisation du clavier est désactivable :

Les sessions 5250 Client Access configurées avec Kerberos sont prises en charge dans l’outil de migration.

 

Pour les transferts de fichier :

  • le nom des onglets excel est personnalisable
  • Correction d’un bug sur les transferts de type .dsr (Dos Random) supportent l’UTF-8 => ATTENTION : cela produit une incompatibilité avec les versions précédentes d’ACS.

 

 

La version recommandée de Java est désormais Java 8 update 191 ou supérieur. Le script d’installation Windows vérifie la compatibilité avec la version de Java disponible sur le système.

 

La liste complète des dernières modifications : ftp://ftp.software.ibm.com/as400/products/clientaccess/solutions/readmespacs.txt

Toujours utile, les ressoucres ACS en ligne : https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/IBM%20i%20Technology%20Updates/page/IBM%20i%20Access%20Resources