, PRUV pour la 7.5

PRUV (Pre-Upgrade Verification) est désormais disponible, vous pouvez le télécharger ici https://www-01.ibm.com/marketing/iwm/iwm/web/dispatcher.do?source=ipvt


la dernière version disponible est 7.5.0.20220601

il vous suffit de télécharger et de lancer le JAVA

.

vous indiquez contrôle pour mise à jour

.

vous pouvez indiquer désormais la version 7.5

.

le résultat avant exportation html

.

Par exemple dans notre cas

mise à jour du firmware

hardware model (donc on ne peut pas ….)

niveau de PTF

et à faire systématiquement avant une montée de version , application permanente des ptfs et acceptation des licences

L’abandon de ftp (et autres solutions non cryptées) entraine une migration vers des solutions SSH (SCP ou SFTP)

Ces 2 solutions étant sécurisées par l’envoi des données dans un tunnel SSH

Pour des ibmistes la démarche n’est pas forcément évidente

les , clé publique, clé privée , authorized_keys et known_host ne sont pas naturels pour nous donc, quand on va faire
notre premier échange il peut être important d’avoir des informations sur l’exécution de notre commande.

Ce qu’il faut savoir c’est que beaucoup de commandes dans le monde linux admettent une option -v, -vv et -vvv (v voulant dire verbose) et que plus vous avez de v
plus vous avez du détail sur votre exécution

donc

==> ssh -vvv plb@as400

Vous donnera les informations nécessaires pour corriger les erreurs d’exécution
Les informations sont généralement assez claires

Vous pouvez l’indiquer sur les commandes scp, sftp, ssh etc …

Astuce
Commencez par un ssh , vous aurez moins de message et c’est plus facile à mettre au point pour la partie connexion.

, , , Gérer les services TCP/IP à Démarrer

Une petite vue synthétique qu’on aime bien dans Navigator for i , qui vous permet en une vue de gérer les services TCP/IP à démarrage automatique

on accède à la vue par là :

Vous avez alors la liste des services avec un tableau qui indique ceux qui sont à démarrage automatique

Vous pouvez choisir les services que vous voulez voir démarrer

Remarque

Si un service ne sert pas arrêtez le !

attention particulièrement au REXEC par exemple

Attention, ça n’arrête pas les services, ils ne seront juste plus démarrés

, , , Paramétrer NGINX en SSL sur votre IBMi

Une fois que vous avez installé NGINX , vous voudrez sans doute le sécuriser

Voici comment le sécuriser

Pour notre exemple

nous générerons nous même les clés de cryptographie

Nous allons générer 2 fichiers qui vont contenir vos clés
un fichier .pem et un fichier .key
par convention on les appellera cert
on choisira un certificat de type x509 valable une année

pour cela on va utiliser OPENSSL, vous devrez donc vérifier que le produit est installé

sous QSH voici la commande à passer

openssl req -newkey rsa:2048 -nodes -keyout /home/nginx/cert.key -x509 -days 365 -out /home/nginx/cert.pem

Après avoir répondu aux questions vous obtenez vos 2 certificats

Maintenant vous allez devoir indiquer à nginx qu’il est protégé par ces clés

Vous allez devoir modifier le fichier de configuration de nginx dans notre cas celui par défaut
bien sur vous sauvegardez avant l’ancien /QOpenSys/etc/nginx/nginx.conf

Une fois que vous avez fait votre modification vous devez arrêter le serveur nginx et le redémarrer

nginx -c /QOpenSys/etc/nginx/nginx.conf -s stop
puis
nginx -c /QOpenSys/etc/nginx/nginx.conf

Pour tester vous allez indiquer https://votreserveur:1880
dans notre cas le port est 1880.

Vous allez recevoir une alerte de sécurité , c’est normal votre certificat de n’a pas de racine connue
Vous répondez une fois ou de manière définitive et vous obtenez votre première page et vous voyez le https:

On utilise de plus en plus java dans les travaux de votre IBMi et on a parfois besoin d’avoir des informations d’exécution

Voici comment connaitre la version de la JVM d’un travail ?

2 solutions simples

==> WRKJWMJOB

Puis 5 puis 1

Ou en utilisant sql services par la vue QSYS2.JVM_INFO

exemple :

select JOB_NAME, JAVA_HOME from qsys2.JVM_INFO

plus d’informations ici

https://www.ibm.com/docs/en/i/7.3?topic=usage-java-system-properties

, , Droits Navigator for i

il faudra désormais une autorisation explicite pour utiliser Navigator for i

Jusqu’à présent les fonctions usage, QIBM_NAV_SERVICEABILITY et QIBM_NAV_ALL_FUNCTION étaient autorisées par défaut à partir de mai 2022, elles seront interdites par défaut seules les profils ayant les autorisations spéciales *secofr *allobj pourront accéder les autres devront être autorisées nommément.

Plus d’informations ici

https://www.ibm.com/support/pages/node/6485853

https://www.ibm.com/support/pages/node/6486565

https://www.ibm.com/support/pages/node/6520030#Feb2022

C’est une possibilité de contrôler les requêtes SQL sur le temps d’exécution estimée ou sur la mémoire temporaire , se base sur le plan d’accès créé par l’optimiseur pour votre requête.

C’est la commande CHGQRYA qui permet cette opération
paramètres QRYTIMLMT( ) et QRYSTGLMT( ) pour le temps et la mémoire
Exemple
CHGQRYA JOB(123456/PLB/QPADEV0001) QRYTIMLMT(45)

Vous exécutez votre requête, si elle dépasse 45 secondes un message CPA4259 qui nécessite une réponse est envoyé au travail
Si vous répondez I ca continue,

 La requête excède la limite de durée ou de mémoire définie (C I)

? I

C si vous voulez arrêter la requête

La requête dépasse la limite de durée ou de mémoire définie.
? C
SQL query exceeds specified limit or threshold.

Vous pouvez estimer le temps d’exécution d’une requête

Mettre le temps maxi à zéro
CHGQRYA QRYTIMLMT(0)
Lancer la requêtes
Retrouvez le message CPA4259 et répondez C
Si vous faites sur le message vous avez le temps d’exécution estimée
ID message . . . . . . : CPA4259
Date d’envoi . . . . . : 26/04/22 Heure d’envoi . . . . : 14:23:33

Message . . . . : La requête excède la limite de durée ou de mémoire définie
(C I)

Cause . . . . . : La requête de base de données qui allait démarrer a une
durée d’exécution estimée à 12, ce qui excède la limite indiquée 0, ou son
utilisation de mémoire temporaire de 1 dépasse la limite spécifiée

  1. Les limites de durée de requête et de mémoire temporaire sont
    définies via la commande CL CHGQRYA.

remettre la valeur par défaut
CHGQRYA QRYTIMLMT(*SYSVAL)

remarque

Attention si vous avez de requêtes sous forme de curseur dans un sqlrpgle par exemple

Le traitement ne s’arrête pas , mais votre open cursor va recevoir un SQLCODE -666, si vous avez des traitements dépendants ca peut être gênant. il est donc conseillé de rajouter le contrôle derrière cette opération

exemple

if sqlcode = -666 ;
dsply ‘Estimation requête excessive’ ;
*inlr = *on ;
return;
Endif;

Pour mettre une réponse automatique C


Utiliser la table de réponse de travaux

par exemple
ADDRPYLE SEQNBR(56) MSGID(CPA4259) CMPDTA(PLB 51) RPY(C)
puis indiquer que le travail est en réponse auto
CHGJOB INQMSGRPY(*SYSRPYL)

Vous pouvez également indiquer quel fichier qaqqini vous voulez utiliser

paramètre CHGQRYA QRYOPTLIB(PLB)

Vous devez indiquer la bibliothèque ou ce trouve votre fichier d’options

plus d’informations ici

https://www.ibm.com/docs/fr/i/7.5?topic=supervisor-query-example-exit-programs


https://www.ibm.com/docs/en/i/7.4?topic=governor-how-use

Comment transférer un job dans qctl

Il peut être important de lancer un job qui tourne même quand le système est en mode restreint

Nous supposerons bien sûr que le sous-système de contrôle est QCTL.

1) Un job batch

il suffit d’indiquer la jobq QCTL dans le SBMJOB

exemple :

Vous avez une commande qui fait une SAV21

SBMJOB CMD(SAV21)
JOB(SAV21)
JOBQ(QCTL)

2) Pour un interactif , si le job est actif

TFRJOB JOBQ(QCTL)

3) Pour un interactif, si le job n’est pas actif

Vous devrez anticiper ce risque dés à présent en créant un unité qui a une entrée nominative dans QCTL.

pour créer l’unité

Récupérer le dernier contrôleur *VWS créer
WRKCTLD

CRTDEVDSP DEVD(votre unité ) DEVCLS(VRT) TYPE(3477) MODEL(FC) ONLINE(NO) CTL(votre controleur) KBDTYPE(FAB) CHRID(697 297)
ALWBLN(YES) PRTDEV(SYSVAL) OUTQ(DEV) PRTFILE(LIBL/QSYSPRT)
TEXT(‘Unité SECOURS’) DEPLOCNAME(*NONE)

créer l’entrée écran dans QCTL

ADDWSE SBSD(QCTL)
WRKSTN(votre écran)

pour contrôler

DSPSBSD
puis option 4

Vous devez retrouver une entrée avec votre nom d’unité

Maintenant vous devez indiquer votre nom d’unité dans votre session
exemple sur ACS

A la mire la mire vous devez avoir ceci

Attention

Ça peut vous sauver de petites blague, mais ça ne doit pas être un mode fonctionnement systématique.

, Travail à démarrage automatique

Un job à démarrage automatique, c’est un travail qui démarre en même temps que votre sous-système, soit pour initialiser quelque chose, soit pour se mettre en attente d’événements à traiter.

Vous en connaissez au moins 2

Le QSTRUP

C’est le programme indiqué dans la valeur système QSTRUPPGM et il est lancé par votre sous système de contrôle, le plus souvent QCTL .

et le second c’est QSTRRMTWTR


C’est Le démarrage des imprimantes qui est lancé en même temps que QSPL !

Vous pouvez créer vos propres travaux à démarrage automatique

Si vous devez créer un job à démarrage automatique pour vous faciliter l’administration de notre partition, voici les étapes à suivre

Création du sous système (s’il n’existe pas encore)

CRTSBSD SBSD(GAIA/GAIASBS) POOLS((1 *BASE)) TEXT(‘Sous systéme …’)

Ajouter une donnée de routage pour faire

Si elle n’existe pas le plus simple une seule, elle permettra de faire exécuter les jobs qui rentreront votre sous système

ADDRTGE SBSD(GAIA/GAIASBS)
SEQNBR(9999)
CMPVAL(*NONE)
PGM(QCMD)
CLS(QBATCH)

Vous avez intérêt à créer une jobq spécifique avec une entrée dédiée à votre job auto

CRTJOBQ JOBQ(GAIA/AUTO)

ADDJOBQE SBSD(GAIA/GAIASBS)
JOBQ(GAIA/AUTO)
MAXACT(1)

Vous pouvez créer une autre jobq qui permettra à d’autres travaux de s’exécuter soit les uns à la suite des autres

ADDJOBQE SBSD(GAIA/GAIASBS)
JOBQ(GAIA/GAIA)
MAXACT(1)

Ou tous ensemble

ADDJOBQE SBSD(GAIA/GAIASBS)
JOBQ(GAIA/GAIA)
MAXACT(*NOMAX)

Vous devez ensuite créer une jobd

CRTJOBD JOBD(GAIA/AUTO)
JOBQ(GAIA/AUTO)
TEXT(‘File pour job auto …’)
USER(QPGMR)
RTGDTA(‘QCMDB’)
RQSDTA(‘CALL GAIA/PGMAUTO’)

Cette jobd doit comporter 2 particularités , un utilisateur, paramètre USER ici QPGMR et un programme à lancer paramètre RQSDTA ici appel du programme PGMAUTO.

Vous pouvez maintenant ajouter votre travail à démarrage AUTO

ADDAJE SBSD(GAIA/GAIASBS)
JOB(AUTOJOB)
JOBD(GAIA/AUTO)

Quand vous ferez un STRSBS GAIA/GAIASBS votre job AUTOJOB sera exécuté.

Attention :

Les programmes à démarrage automatique ne doivent pas planter, pensez y également quand vous adaptez le programme QSTRUP