Pause-Café Volubis

pause-café

rendez-vous technique
Pause-Café est une réunion technique
destinée aux informaticiens sur plateforme IBM i.
Elle a lieu 3 fois par an : en Bretagne et sur internet.

Pause-café #76

Octobre 2017
le 5 Octobre à Vannes (le piano barge) , le 18 par Internet

Version 7.3 / TR2

7.3, TR2 (la plupart des fonctions sont communes à la TR6 de la 7.2)


  • DB2 i

    • Nouvelle fonction SQL LISTAGG, mettant "à l'horizontale" toutes les occurrences d'une expression pour un groupe



      Deux nouveaux Prédicats (un test, retournant vrai ou faux, pouvant être placé dans un WHERE)

      IS (IS NOT) JSON


      Exemple d'utilisation


      JSON_EXISTS (un élément JSON existe-t-il ?)



      Les fonctions TRIM (RTRIM et LTRIM) acceptent un deuxième paramètre, le caractère à enlever


    • Nouveaux services

      • MESSAGE_QUEUE_INFO (messages d'une message Queue)


      • OBJECT_PRIVILEGES (droits par objet)


      • AUTHORIZATION_LIST_INFO (Objets d'une liste d'autorisation)


      • AUTHORIZATION_LIST_USER_INFO (Utilisateurs d'une liste d'autorisation)


      • SET_PASE_SHELL_INFO, procédure pour définir le shell par défaut sous PASE

        • CALL QSYS2.SET_PASE_SHELL_INFO('*CURRENT', '/QOpenSys/QIBM/ProdData/OPS/tools/bin/bash');
        • CALL QSYS2.SET_PASE_SHELL_INFO('*DEFAULT', '/QOpenSys/usr/bin/ksh');

      • USER_INFO, modifié
        • Ajout de SUPPLEMENTAL_GROUP_COUNT et SUPPLEMENTAL_GROUP_LIST
        • Ajout de PASE_SHELL_PATH

      • LICENSE_INFO, modifié
        • Ajout de INSTALLED (YES / NO)

      • Nouvelle procédure LICENSE_EXPIRATION_CHECK
        • Envoi un message dans QSYSOPR pour tous les produits
          • arrivés à expiration (sans paramètre)
          • arrivant à expirations dans n jours (n étant le paramètre, numérique)


    • LE RPG et RDI 9.5.1.2 acceptent DCL-DS dans DCL-DS



      Avant il fallait utiliser LIKEDS, ce qui reste valable pour un paramètre dans DCL-PR ou DCL-PI, par exemple.


      le source généré par le pré-compilateur SQL (type SQLRPGLE) est enfin, en format libre :


    • Deux nouvelles fonctions %min et %max (elles aussi reconnues par RDI 9.5.1.2)

      %MAX

      Retourne la plus grande valeur
      maxi = %max(priha: prirv: privente);

      %MIN

      Retourne la plus petite valeur
      datecheance = %min(datliv : datfac) + %days(60);

5733OPS

  • rsync arrive avec la SI63268



    Ce protocole de mise à jour à distance , permet de ne transférer que la différence entre deux jeux de fichiers à travers le réseau, en utilisant un algorithme de recherche de somme de contrôle.

    Ce protocole établit ses connexions sur le port TCP 873.


    La synchronisation fonctionne selon deux modalités :

    1. en mode local : où le programme client se charge de comparer les deux versions des répertoires et effectuer la synchronisation ;
    2. en mode distant : le programme client contacte le programme serveur, habituellement grâce au protocole SSH, ce qui permet une communication sécurisée


    Copie locale du contenu d'un répertoire


    L'option a (archive) préserve
    • les liens symboliques
    • les droits
    • les timestamp (création/modification,...)
    • les propriétaires

    Mode verbeux


    Avec un serveur en utilisant SSH


    Avec compression et récursivité (arborescence complète)


  • Arrivé en même temps que Rsync avec la PTF SI63270, SQlite3 est la seule base de données Serverless (sans démon)

  • wget et Curl


curl (disponible sur IBMi avec 5770OPS et SI63905)

  abréviation de client URL request library :

cette commande :

    • Supporte les protocoles http, smb(voisinage réseau), ftp, sftp, smtp, telnet, etc....
    • Permet de créer ou modifier une ressource (contrairement à wget), elle peut ainsi être utilisé en tant que client REST.


Pour obtenir l'entête d'une page :



Pour tester un web service par GET


(ici 404 , Not found)

Pour tester un web service par POST

curl -i -H "Content-Type: application/json" -X POST 
-d '{"NOM":"Volubis", "VILLE":"Carquefou", "TEL":"02 40 30 00 70" , "FAX":"02 40 30 39 22", "APPEL_CODE":13}'
http://as400:10025/web/services/Producteur


(remarquez le retour avec Location: )


Voyez un manuel d'utilisation ici

 

Comme nous parlons de tester les web services, un outils de test de montée en charge JMeter (http://jmeter.apache.org/)

 

Lancez jmeter.bat ou jmeter.sh



Ajoutez un groupe d'unités (Thread) représentant un nombre de client simultanés




Une configuration HTTP par défaut, contenant l'URL du serveur




S'il le faut des entêtes HTTP à transmettre





ici la clause Accept pour recevoir du Json

Un gestionnaire de cache, si vous voulez vider le cache à chaque requête


Une ou plusieurs variables aléatoires (si besoin)



Vous y ferez référence par ${prod}

insérez ensuite des requêtes à soumettre au serveur HTTP



Par exemple


Éventuellement plusieurs

Puis des récepteurs qui afficherons les résultats




Sauvegardez et lancez

 

Arbre de résultat
Graphique


Rapport agrégé

Au final vous trouverez vos temps de réponse moyen, la valeur médiane, etc...

 

IBMi Access Client Solution


La version 1.1.7 offre de nombreuses nouveautés base de données

• Dans le gestionnaire de scripts, vous pouvez faire F4 sur les commandes CL



QUE sur les commandes CL


• ET nous avons maintenant une fonction UpLoad pour remonter de la donnée sur le serveur


     

Résultat, que nous retrouvons en tant que Table


• Un accès en mode conception (DBA) à la base de données

Vous avez accès à la liste des éléments base de données (ici la liste des base de données WRKRDBDIRE)



L'option Nouveau permet de passer la commande ADDRDBDIRE




Include permet de choisir les bibliothèques à afficher




Toutes les listes peuvent être sauvegardées

   

Vous avez le choix des colonnes à l'affichage

• Liste des tables



• Détail d'une table


Options sur une table (en 1.1.7, quelques fonctions en moins par rapport à la version Windows)


• liste des index d'une table

les options proposées sont disponibles partout (ici sur Visual Explain)

• Vous avez, bien sûr, accès aux index suggérés (ici, niveau Bibliothèque, mais aussi niveau Table)




Voici les choix


Voir l'instruction ayant généré cette suggestion dans le cache des plans d'accès (si elle y est encore !)


Accès aux informations de la table



• Information sur les statistiques collectées



Détails (ici la colonne cépage sur le fichier des vins)




Vous retrouverez les collectes en cours, ici



• Création d'une table



Paramètres généraux


Définition des colonnes


Exemple d'une colonne "Identity"


Vous pouvez aller "copier" une définition existante


et voilà !


Primary Key


Foreign Key




Check Constraint


Retrouvons l'ordre SQL qui va être lancé (Show SQL)


• Création d'un Index



• Création d'une vue





• Création d'une fonction (ici Externe, c'est à dire existant déjà en tant qu'objet *PGM ou *SRVPGM))


Dont vous pourrez modifier les caractéristiques ensuite

• Création d'une procédure (toujours externe)


• Création d'un Trigger (SQL cette fois)


Choix des événements déclencheurs


Corps du Trigger


Nous pourrons retrouver l'ordre SQL généré

Remarquez le choix de la sortie (fichier PC ou fichier source sur le i)


• Pareil sur les fonctions



• Vous pouvez activer/désactiver les triggers

• Vous pouvez activer/désactiver les contraintes

• Création d'une permission (qui a le droit à la ligne ? dans le cadre de RCAC)


• Création d'un masque (qui a le droit de voir la colonne ? toujours RCAC)

• Création d'un index Omnifind

• Création d'un Alias

• Création d'une Séquence



• Création d'une Variable globale



• Nous avons accès au registre XSR (enregistrement des schémas xsd utilisés par DB2)

• Enfin, un accès, assez limité, aux :

  • journaux et récepteurs de journaux (il n'y a pas en 1.1.7.0 l'option d'exploration du contenu du récepteur qui est présente sous Windows)



  • et aux SQL package (ici, ceux de QGPL créés automatiquement par les produits clients)




    La version 1.1.7.1 (Juillet 2017) vient combler certaines lacunes de la version 1.1.7.0, vue ci-dessus

  • Vous trouverez une gestion des droits partout (Schéma, Table, etc...)




  • Vous trouverez sur toutes les listes, le choix des colonnes et des lignes (sur une liste de tables):


    • Choix des colonnes
    • Choix des lignes

    • Date/heure
    • Date/heure sur une liste d'index

    • Toujours sur une liste d'index, le type d'index

  • Visualisation des journaux, comme sur la version Windows


    Saisie des critères :


    Quand il y a des données sur les lignes (code R = Update,Insert,Delete) -> view details




  • Réorganisation (RGZPFM) des tables






  • Accès à "Health Center", (le centre de santé)



    permettant de voir l'activité de certaines bibliothèques


    et le fait que vous vous approchiez ou pas des limites système



  • Performances Center
    • Démarrage d'un Moniteur de performances (STRPFRMON)




      Indiquez vos critères


      Les job concernés


      Confirmez


    • Création d'une image instantanée (photo) du cache des plans d'accès


    • Création d'un moniteur d'événement sur le cache (pour l'instant le seul événement est "retrait du cache")


  • Enfin sous le gestionnaire de scripts, accès :
    • à nouveau, à STRPFRMON
    • à "Performance Center"


    • Au générateur de scripts SQL à partir des objets


      reste à choisir les objets


    • Manque toujours :
      • La sauvegarde des scripts sur le Serveur IBM i
      • F4 sur les ordres SQL

Un petit Rappel : c'est toujours aussi simple de paramétrer SSL avec ACS




Et puis des nouvelles de Navigator for i , l'outils complémentaire à ACS, particulièrement PDI (gestion des performances)

  • Avec les PTF de Mars 2017 (uniquement en 7.3), les historiques graphiques ont évolués


  • Pour offrir un affichage sur une plus longue période (dans de nouveaux fichiers de type *HSTFILE)


    par défaut, 1 mois, mais possible jusqu'à 1 an !



  • La vue composite est aussi bien pratique, elle permet un affichage catégoriel



    voici les affichages proposés




  • Vous pouvez maintenant empiler par semaine ou mois

    • Si la période affichée est inférieure à 2 semaines, on empile par jour
    • Si la période est comprise entre 2 semaines et 2 mois, on empile par semaine
    • Si la période est comprise entre 2 mois et 2 ans , on empile par mois
    • Au delà de 2 ans , on empile par année

      Modification du contexte

      Empilage par Mois:

Bref, plus de raisons d'utiliser Client Access Windows



 

Dernière minute ...

TR3 (7.3) TR7 (7.2)

  • DB2
    • Publier du JSON
      VALUES(JSON_ARRAY(SELECT DEPTNO FROM DEPT
      WHERE DEPTNAME LIKE 'BRANCH OFFICE%'));

      ==> ["F22","G22","H22","I22","J22"]
      SELECT JSON_OBJECT('Nom' : LASTNAME,
      'date naissance' : HIREDATE,
      'Salaire' SALARY) FROM EMPLOYEE WHERE EMPNO = '000020';

      ==> {"Nom":"THOMPSON","date naissance":"1973-10-10","Salaire":41250.00}
    • Lire du JSON
    • LIMIT et OFFSET : support étendu (dans les SELECT imbriqués, par exemple)
    • LIMIT accepté sur DELETE et UPDATE
      -- supprimer les 10 plus anciennes commandes
      DELETE
      FROM Commandes where nocli = 45 order by DATCMD LIMIT 10
    • Nouveaux services (JOB_QUEUE_INFO, ASP_INFO, ASP_VARY_INFO, ...)
  • Nouvelle version d'ACS disponible courant Octobre
  • Nouvelle version de RDI (9.6) disponible courant Novembre

 

Copyright © 1995,2017 VOLUBIS

PS : vous avez vu ? Volubis recrute