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 à 4 fois par an : en Bretagne et sur internet.

Pause-café #72

Février 2016

TR3

 

TR3 (disponible fin Novembre 2015)


      La TR3 de la 7.2 coïncide avec la TR11 de la 7.1

  • LIMIT x OFFSET y
    permet de récupérer un extrait du résultat produit par un SELECT

    (on saute les Y premières lignes, pour aller à la ligne Y+1)


    • LIMIT X est équivalent à FETCH FIRST X ROWS ONLY
    • LIMIT X OFFSET Y est équivalent à OFFSET Y FETCH FIRST X ROWS ONLY

      Peut être écrit LIMIT Y , X

    • Valide dans un DECLARE CURSOR


  • LOCATE_IN_STRING

    Recherche la Nième occurrence d'une chaîne


  • OVERLAY

    Remplace une chaîne (à une position donnée) par une autre, éventuellement de taille différente (comme INSERT)



  • Il est possible d'accéder au résultat produit par une procédure éloignée en utilisant une dénomination en trois parties
     (Systeme.Bibliothèque.Table)

    SYSTEMA SYSTEMB
    CALL SYSTEMB.biblio.Procedure;
    ASSOCIATE LOCATOR RS1 WITH PROCEDURE
    SYSTEMB.biblio.Procedure; FETCH ...
      SET RESULT SETS ...[ARRAY ou CURSOR]
    WITH RETURN TO CALLER ;



  • Les vues "flexibles" sont désormais modifiables (sous certaines conditions)

    Une vue flexible est une vue possédant dans sa clause WHERE une variable globale

    CREATE VARIABLE APPEL DEC(2 , 0 ) DEFAULT 13;

    CREATE VIEW APPEL13 AS (
    SELECT * FROM PRODUCTEUR WHERE APPEL_CODE = APPEL); DELETE FROM APPEL13; -- supprime tous les producteurs appellation 13;

    SET APPEL = 14; DELETE FROM APPEL13; -- supprime tous les producteurs appellation 14;

  • Le nom système peut être indiqué sur l'ordre CREATE VARIABLE
    CREATE VARIABLE APPELLATION_ECRITURE FOR SYSTEM NAME APPEL
    DEC(2 , 0 ) DEFAULT 13;

  • EVI Only Access

    • Les index EVI sont utilisés implicitement pour la sélection d'enregistrement, depuis leur apparition.




      Syntaxe SQL :  CREATE ENCODED VECTOR INDEX ...

      Rappel
    • les index EVI ne sont utilisables que par SQL (pas en RPG/COBOL)
    • les index EVI se cumulent parfaitement, en technique bitmap :
       (quatre critères dans le WHERE, un index EVI par critère : SQL en fait un seul à partir des 4)
    • les index EVI sont constitués de deux éléments
      • Une table des symboles contenant :
        • un code attribué à chaque valeur de clé
        • des informations statistiques (nbr, position du premier record, position du dernier record ayant cette clé)
      • Un vecteur
        • attribuant à chaque rang, un des codes de la table des symboles vues plus haut.

Exemple avec un Select simple



SQL va chercher les lignes de rang 5 ,7 ,8 etc....

Sous Visual Explain




SI vous demandez count(*) l'accès à la table n'est même pas réalisé (l'index EVI suffit)



Depuis la version 7.1 , vous avez la possibilité d'inclure des fonctions agrégées (SUM,AVG,MIN,MAX)  dans un index EVI.

      CREATE ENCODED VECTOR INDEX EVI01 ON COMMANDES
         (DATCMD, FAM)
                INCLUDE (SUM(QTE) , COUNT(*)  )

      Avec le groupe PTF SF99701 level 18,ou la 7.2,  les requêtes utilisant  GROUPING SET, ROLLUP ou CUBE, bénéficient aussi de ce type d'index.

 

Enfin, depuis la TR3(7.2) / TR11 (7.1), si l'existe un index EVI pour chaque colonne retournée, SQE n'utilisent que des index EVI,
 y compris pour faire la projection (liste des colonnes)



S'il existe un EVI sur HOST, il n'est pas utile de lire la table, le rapprochement des deux vecteurs permet d'aller lire la clé dans le deuxième EVI

 

Cette technique, nommé EVI Only Access est automatique en 7.2.

Il faut utiliser l'option ALLOW_EVI_ONLY_ACCESS dans QAQQINI en 7.1

  • Les index EVI doivent tenir en mémoire (fair share = mémoire du pool / nbr de travaux actifs dans le pool)
  • Les index ne doivent porter que sur une seule colonne
  • Toutes les colonnes du SELECT doivent avoir un index EVI.


    Avant


    Après


  • Amélioration des performances des procédures stockées, UDF et Triggers écrit en SQL/PSM
    • l'assignation et le test d'une valeur UCS-2 (CCSID 13488) est réalisé directement en C
    • variables et fonctions déclarées internes au programme

      il faut recréer les fonctions et les procédures pour en bénéficier



  • STRDBMON

    Possibilité de filtre par différence (*NE)


    Par exemple STRDBMON OUTFILE(QGPL/MONDBMON) JOB(*ALL/*ALL/QZDA* *NE)

    -> Tout sauf les travaux QZDASOINIT
  • DB2 as a service

    Nouvelles vues



    • Voir les détails ci-dessous

  • La plupart des options de System i Navigator, dont les options Base de données désormais, proposent F11 pour restreindre l'affichage


  • Possibilité d'afficher plusieurs postes du journal en même temps



    ->


  • IBM i Access Client Solution

    • Version 1.1.5
    • <Ctrl>droit, passe à la ligne suivante
    • Les URL peuvent être multi-lignes
    • L'accès à Navigator for I, se fait avec saut de signon (pas de login)

    • Gestionnaire de scripts SQL
    • Performances Center





La sauvegarde des résultats est prévue



Mais la sauvegarde du script, pour l'instant, ne peux se faire que sur le PC.
(la version Windows propose membre source et IFS)



l'option Insert From Exemple, propose de nombreux exemples

Enfin, ce produit, permet un accès direct au Debugger SQL (Procédures et Fonctions, particulièrement)

Run/System Debugger


Performance Center, permet un accès aux

  • Moniteur de perf. SQL (STRDBMON)
  • Aux images du cache des plans d'accès (pour sauvegader le cache, avant un IPL par exemple)
  • Aux moniteurs d'événement (pour une sauvegarde automatique du cache)




Etudions un moniteur de performances SQL (option Analyse)


Voyons les choix



Rapport global

Rapport détaillé

 

Certaines fonctions utilisent les nouveautés de Navigator for I


Si vous installez le Level 12 ou SI58218,SI58219 (SI 58230/SI58299 en7.1) vous aurez accès à ces nouvelles fonctionnalités dans navigator for i.




Analyse (Investigate sous ACS)

Comparaison (compare sous ACS)

 

  • Évolutions du RPG


    Avec la TR3 et SI58137 (7.2) ou SI58136 (7.1) vous pouvez maintenant :

    1. placer **FREE en début de source et commencer colonne1
    2. utiliser des sources de plus de 80 colonnes (PF-SRC ou IFS)

    Membre source (ici de 240c.)

    dans l'IFS



    Résultat


    C'est un package sur le mode tout ou rien, vous devez utiliser **FREE pour commencer colonne 1 et/ou utiliser plus de 80 colonnes.

    /free et /end-free sont invalides, les lignes avec spécif aussi.

    si vous avez besoin de lignes avec spécifications C (en colonne 6), faites un /COPY


    Enfin, si vous faites un /COPY on sort du mode complètement libre (**FREE), sauf si ce dernier contient lui-même **FREE

  • GCC


    Compilateur C le plus utilisé dans le monde OpenSource, disponible via l'option 3 de 5733OPS


    (il faut installer aussi la PTF SI58604)

    Cela va installer
    • wget permettant d'aller chercher les packages RPM sur le net (il faut que votre serveur puisse sortir)
    • rpm pour installer les packages téléchargés

  • il faudra ensuite passer la commande pkg_setup.sh (sous QP2TERM)


    pkg_setup pkg_perls_gcc-4.8.3.lst

      Pour installer gcc

    Téléchargement des RPM et installation...


    pkg_setup pkg_perls_git-2.2.2-1.lst

      Pour installer git

    Essayons





  • La PTF apportant GCC propose aussi un outil permettant d'isoler un traitement ou une utilisation (de GCC par exemple)

    • Chroot (change root) est une commande des systèmes d'exploitation UNIX/Linux permettant de changer le répertoire racine d'un processus..

      Cette commande permet d'isoler l'exécution d'un programme et d'éviter ainsi la compromission complète lors de tests. Elle n'est pas compatible QSH (Pase Uniquement)

    • Par exemple :

      • mkdir /QopenSys/testRoot
      • chroot /QopenSys/testRoot

        Le processus PASE ne connait plus que testRoot et et ses sous-répertoires. Le problème c'est qu'il faut tout copier dans testRoot (/bin & /usr/bin etc...)


    • Pour cela sont livrés quelques scripts bien pratiques, qui réalisent les copies pour nous
      • chroot_minimal.lst -- environnement PASE minimum (/bin, /dev, /usr, ...)
      • chroot_bins.lst -- /usr/bin (compilateur gcc)
      • chroot_includes.lst -- /usr/include (compilateur gcc)
      • chroot_libs.lst -- /usr/lib (compilateur gcc)
      • chroot_OPS_GCC.lst -- (les listes pour installer GCC par pkg_setup.sh)
      • chroot_OPS_NODE.lst -- node.js
      • chroot_OPS_PYTHON.lst -- python
      • chroot_OPS_SC1.lst -- openssl
      • chroot_PowerRuby.lst -- PowerRuby
      • chroot_ZendServer5.lst -- Zend Server 5
      • chroot_ZendServer6.lst -- Zend Server 6
      • chroot_template.lst -- un modèle pour faire vos propres listes






  • et enfin (impossible de sortir du contexte dans cette session PASE)

 


SQL as a service

Dans de nombreux cas SQL est aujourd'hui une possibilité pour accéder à des informations système

  • Toutes les commandes système n'ont pas un paramètre OUTFILE
  • L'utilisation des API implique d'être un développeur RPG/Cobol confirmé
  • la sélection (WHERE) et le rapprochement (Jointure) est plus simple en SQL

  • Cette orientation date de la Version 6 et est confirmée à chaque version, à chaque TR.


    Vue d'ensemble (Source : Developer Works )
   Service Type
IBM i 7.2
IBM i 7.1
V6R1 (hors support aujourd'hui)
PTF
QSYS2.PTF_INFO Vue Base SF99701 Level 23 SF99601 Level 29
QSYS2.GROUP_PTF_INFO Vue Base SF99701 Level 6 SF99601 Level 19
SYSTOOLS.GROUP_PTF_CURRENCY Vue SF99702 Level 3 SF99701 Level 32 -
SYSTOOLS.GROUP_PTF_DETAILS Vue SF99702 Level 9 SF99701 Level 38 -

  • PTF_INFO, vue retournant des informations sur les PTF


    Cela permet de rechercher une PTF sans connaître le nom du produit


  • GROUP_PTF_INFO, vue ou fonction retournant des informations sur les groupes PTF
     


  • vue SYSTOOLS.GROUP_PTF_CURRENCY

    Affiche vos groupes PTF, va chercher les niveaux actuel sur le Net (HTTPGETBLOB + XMLTABLE)
     pour vous indiquer si vous êtes à jour à partir du fichier http://www-912.ibm.com/s_dir/sline003.nsf/PSPbyNumL.xml


  • GROUP_PTF_DETAIL

    Comme GROUP_PTF_CURRENCY, se connecte au site IBM Preventive Service Planing pour afficher les groupes PTF disponibles et ceux installés sur votre système.

     Mais cette fois, affiche le détail des PTF en utilisant http://www-912.ibm.com/s_dir/sline003.nsf/xmlDocs/<nom du groupe> comme site de référence pour chaque groupe

    par exemple http://www-912.ibm.com/s_dir/sline003.nsf/xmlDocs/SF99702 pour le groupe Database.

   Service Type
IBM i 7.2
IBM i 7.1
V6R1 (hors support aujourd'hui)
Sécurité
QSYS2.USER_INFO Vue Base

livré: SF99701 Level 26
Modifié: SF99701 Level 29

livré: SF99601 Level 31
Modifié: SF99601 Level 32

QSYS2.FUNCTION_INFO Vue Base SF99701 Level 26 SF99601 Level 31
QSYS2.FUNCTION_USAGE Vue Base SF99701 Level 26 SF99601 Level 31
QSYS2.GROUP_PROFILE_ENTRIES Vue Base SF99701 Level 23 SF99601 Level 29
QSYS2.SQL_CHECK_AUTHORITY() UDF Base SF99701 Level 21 SF99601 Level 29
QSYS2.SET_COLUMN_ATTRIBUTE() Procédure Base Base SF99601 Level 8
QSYS2.DRDA_AUTHENTICATION_ENTRY_INFO Vue SF99702 Level 5 SF99701 Level 34 -
  • la vue USER_INFO retourne ces informations sur les utilisateurs




  • FUNCTION_INFO affiche la liste des fonctions utilisées par WRKFCNUSG ou Administration d'applications



 

  • FUNCTION_USAGE donne la liste des droits par fonction



  • SQL_CHECK_AUTHORITY indique si oui(1) ou non(0) l'utilisateur en cours a des droits sur une table


  • La vue du catalogue SYSIBM.AUTHORIZATIONS possède une colonne indiquant si un profil est profil de groupe


  • Ce qui permet une nouvelle vue GROUP_PROFILE_ENTRIES affichant les membres des groupes


  • et une fonction table GROUP_USERS donnant la liste des membres d'un groupe


  • DRDA_AUTHENTICATION_ENTRY_INFO

    liste les entrées crées par ADDSVRAUTE
  •  

   Service Type
IBM i 7.2
IBM i 7.1
V6R1 (hors support aujourd'hui)
Gestion de messages
QSYS2.REPLY_LIST_INFO Vue SF99702 Level 3 SF99701 Level 32 SF99601 Level 33
QSYS2.JOBLOG_INFO UDTF SF99702 Level 3 SF99701 Level 32 SF99601 Level 33

  • vue REPLY_LIST_INFO retourne la liste de réponse système (WRKRPYLE)


  • fonction table JOBLOG_INFO, retourne l'historique d'un travail (QSYS2.JOB_NAME retourne le travail en cours)


   Service Type
IBM i 7.2
IBM i 7.1
V6R1 (hors support aujourd'hui)
Bibliothèques/Objets
QSYS2.LIBRARY_LIST_INFO Vue SF99702 Level 3 SF99701 Level 32 SF99601 Level 33
QSYS2.OBJECT_STATISTICS() UDTF livré: Base
Modifié: SF99702 Level 5 et 9
livré: SF99701 Level 3
Modifié: SF99701 Level 34 et 38
SF99601 Level 16
  • vue LIBRARY_LIST_INFO, retourne *LIBL du travail en cours


  • La fonction table OBJECT_STATISTICS, retournant une liste d'objets.

   select * from table (qsys2.OBJECT_STATISTICS('BDVIN1','JRN') ) as x donne la liste des journaux de BDVIN1

   select * from table (qsys2.OBJECT_STATISTICS('BDVIN1','JRN JRNRCV') ) as x donne la liste des journaux et des récepteurs de BDVIN1



On peut aussi indiquer un nom d'objet (pas un nom générique) en 3ème paramètre



Notez les informations purement SQL (non présentes dans DSPOBJD système)

  • Nom long SQL
  • Type d'objet SQL
    • ALIAS
    • FUNCTION
    • INDEX
    • PACKAGE
    • PROCEDURE
    • ROUTINE
    • SEQUENCE
    • TABLE
    • TRIGGER
    • TYPE
    • VARIABLE
    • VIEW
    • XSR
   Service Type
IBM i 7.2
IBM i 7.1
V6R1 (hors support aujourd'hui)
Gestion du système
QSYS2.SYSTEM_VALUE_INFO Vue Base SF99701 Level 26 SF99601 Level 31
QSYS2.GET_JOB_INFO() UDTF livré: Base
Modifié: SF99702 Level 5 et 9
livré: SF99701 Level 23
Modifié: SF99701 Level 29,34 et 38
livré: SF99601 Level 29
Modifié: SF99601 Level 32
QSYS2.ACTIVE_JOB_INFO() UDTF SF99702 Level 5
Modifié: Level 38
SF99701 Level 34
Modifié: SF99701 Level 38
-
QSYS2.SCHEDULED_JOB_INFO Vue SF99702 Level 5 SF99701 Level 34 -
QSYS2.MEMORY_POOL() UDTF SF99702 Level 9 SF99701 Level 38 -
QSYS2.MEMORY_POOL_INFO() Vue SF99702 Level 9 SF99701 Level 38 -
QSYS2.SYSTEM_STATUS() UDTF SF99702 Level 9 SF99701 Level 38 -
QSYS2.SYSTEM_STATUS_INFO Vue SF99702 Level 9 SF99701 Level 38 -
QSYS2.OBJECT_LOCK_INFO Vue SF99702 Level 9 SF99701 Level 38 -
QSYS2.RECORD_LOCK_INFO Vue SF99702 Level 9 SF99701 Level 38 -
  • SYSTEM_VALUE_INFO est une vue retournant le contenu des valeurs système (numériques ou caractères)

  • SYSIBMADM.ENV_SYS_INFO retourne des informations sur le serveur (OS, version, nom, CPU et mémoire)


  • GET_JOB_INFO (fonction table) retourne des informations sur un travail

         
    • SELECT * FROM TABLE (QSYS2.GET_JOB_INFO('123456/QUSER/QZDASOINIT') as T ;




  • ACTIVE_JOB_INFO (retourne l'équivalent de WRKACTJOB)


    Vous pouvez alors utiliser toute la puissance de SQL


    Combien de travaux tournent actuellement avec un profil ayant *ALLOBJ ?
    Select count(*) from table (qsys2.active_job_info() ) as a join qsys2.user_info as U using(authorization_name)
    where special_authorities like '%ALLOBJ%'


    Combien de travaux tournent actuellement avec un profil ayant *ALLOBJ et un mot de passe.



  • SCHEDULED_JOB_INFO (retourne WRKJOBSCDE)


    Liste des travaux planifiés actuellement actifs (jointure sur le nom du JOB)
    select WA.* from table (qsys2.active_job_info() ) as WA join qsys2.scheduled_job_info
    on substr(job_name, locate_in_string(job_name, '/' , 1 , 2) +1) = scheduled_job_name; --notez la nouveauté TR3


  • MEMORY_POOL_INFO (comme WRKSYSSTS)


    Trié par % décroissant
    select system_pool_id, pool_name , current_size,
    current_size / (select sum(current_size) from qsys2.memory_pool_info) * 100 as pourcent
    from qsys2.memory_pool_info
    order by 4 desc


  • MEMORY_POOL()

    Fonction Table, ayant un paramètre
    • RESET_STATISTICS
      • YES (remise à zéro des compteurs)
      • NO, les moyennes sont faites depuis la première utilisation

  • SYSTEM_STATUS_INFO (infos générales du WRKSYSSTS et WRKSYSACT)


    A noter, que, comme WRKSYSACT vous pouvez désormais voir le % de CPU utilisé par SQL

  • SYSTEM_STATUS()

    Fonction Table, ayant un paramètre
    • RESET_STATISTICS
      • YES (remise à zéro des compteurs)
      • NO, les moyennes sont faites depuis la première utilisation



  • OBJECT_LOCK_INFO

    retourne une ligne par objet verrouillé sur le système (utiliser WHERE, sinon assez long, commence par un DSPOBJD de tous les objets)


  • RECORD_LOCK_INFO

    retourne une ligne par enregistrement verrouillé sur la machine (aussi long que la vue précédente sans clause WHERE)
   Service Type
IBM i 7.2
IBM i 7.1
V6R1 (hors support aujourd'hui)
TCP/IP
SYSIBMADM.ENV_SYS_INFO Vue Base SF99701 Level 23 SF99601 Level 29
QSYS2.TCPIP_INFO Vue Base SF99701 Level 6 SF99601 Level 19
QSYS2.SET_SERVER_SBS_ROUTING() Procédure SF99702 Level 5
Modifié Level 9
SF99701 Level 34
Modifié level 38
-
QSYS2.SERVER_SBS_ROUTING Vue SF99702 Level 5
Modifié Level 9
SF99701 Level 34
Modifié level 38
-
QSYS2.NETSTAT_INFO Vue SF99702 Level 9 SF99701 Level 38 SF99601 Level 29
QSYS2.NETSTAT_INTERFACE_INFO Vue SF99702 Level 9 SF99701 Level 38 SF99601 Level 19
QSYS2.NETSTAT_JOB_INFO Vue SF99702 Level 9 SF99701 Level 38 -
QSYS2.NETSTAT_ROUTE_INFO Vue SF99702 Level 9 SF99701 Level 38 -
  • TCPIP_INFO, vue ou fonction retournant des informations sur la connexion




  • Pour les connexion ODBC/JDBC Nous pouvions déjà "router" un job dans un sous-système, mais par adresse Ip d'origine

    Désormais, vous pouvez aussi travailler par utilisateur  !

    Il vous faut toujours un sous système configuré proprement et actif :

    •Allouez de la mémoire à un Pool partageable : CHGSHRPOOL *SHRPOOLn SIZE(xxx)

    •créez un sous système utilisant ce pool ou *BASE:

      CRTSBSD MONSBS POOLS((1 *SHRPOOLn)) TEXT('Sous système dédié')
    puis
      ADDRTGE MONSBS SEQNBR(10) CMPVAL(*ANY) PGM(QCMD) CLS(QBATCH)    

    • Pour ODBC/JDBC (dont Iseries navigator), suivez la procédure suivante :

      • Ajoutez un travail à démarrage anticipé à votre sous système, par :
        ADDPJE SBSD(MONSBS) PGM(QSYS/QZDASOINIT) INLJOBS(?) JOBD(Qgpl/QDFTSVR) CLS(QSYS/QPWFSERVER)

    Appelez ensuite la procédure stockée SET_SERVER_SBS_ROUTING

    • Indiquez le profil
    • le Job serveur
      • QRWTSRVR (DRDA/DDM)
      • QZDASOINIT (ODBC/JDBC))
      • QZRCSRVS <- (Serveur de commandes à distance en TR3/TR11)
    • le sous système actif

    • Select * from SERVER_SBS_ROUTING permet de voir les utilisateurs re-routés



    • De fait, suite à une connexion avec le gestionnaire de scripts de System i Navigator


    • S'il n'y a pas de sous système actif, l'utilisateur ira "normalement" dans QUSRWRK


    • Pour enlever cette configuration, appelez la même procédure en passant la valeur nulle



  • NETSTAT_INTERFACE_INFO
      équivalent à NETSTAT, option 1

  • NETSTAT_ROUTE_INFO
      équivalent à NTESTAT, option 2

  • NETSTAT_INFO
      équivalent à NETSTAT, option 3

  • NETSTAT_JOB_INFO
      équivalent à NETSTAT, option 3, puis 8=Display JOB




   Service Type
IBM i 7.2
IBM i 7.1
V6R1 (hors support aujourd'hui)
Stockage
QSYS2.USER_STORAGE Vue Base SF99701 Level 26 SF99601 Level 31
QSYS2.SYSTMPSTG Vue Base - -
QSYS2.SYSDISKSTAT Vue Base SF99701 Level 12 SF99601 Level 21
QSYS2.MEDIA_LIBRARY_INFO Vue SF99702 Level 9 SF99701 Level 38 -
  • USER_STORAGE affiche la mémoire maxi autorisée et la mémoire utilisée, par utilisateur

 

  • Select * from SYSTMPSTG permet d'accéder à la mémoire temporaire utilisée

    La gestion de la mémoire temporaire en interne n'a pas changé (dixit IBM),
     mais on vous propose un suivi par réceptacles de mémoire temporaire (Bucket, littéralement seau)


    l'affichage propose deux type de seaux :

  • global -> espace mémoire commun à l'ensemble des travaux
    • ceux géré par le microcode sont numérotés de 1 à 4095
    • ceux gérés par la gestion des travaux niveau OS sont numérotés de 4096 à 65535
  • propre à un JOB
    • ils sont numérotés à partir de 65536

Un seau est alloué au démarrage du JOB et le lien perdure pendant la durée de ce dernier.

Quand le JOB se termine, l'espace est normalement vide et peux donc être alloué à un autre JOB.
Si l'espace mémoire n'est pas vide, alors il s'agit d'un job n'ayant pas bien fait le "ménage" et l'état est noté *ENDED.


Structure de SYSTMPSTG dans QSYS2

BUCKET_NUMBER
GLOBAL_BUCKET_NAME
JOB_NAME
JOB_USER_NAME
JOB_NUMBER
BUCKET_CURRENT_SIZE
BUCKET_LIMIT_SIZE
BUCKET_PEAK_SIZE
JOB_STATUS
JOB_ENDED_TIME

INTEGER
VARCHAR(30), si BUCKET global
CHAR(10)
CHAR(10)
CHAR(6)
DEC(23 , 0)
DEC(23 , 0)
DEC(23 , 0)
VARCHAR(7) *ENDED | *ACTIVE
TIMESTAMP



BUCKET systèmes :

par JOB : (... WHERE JOB_NAME is not null Order by 3 DESC)



   Service Type
IBM i 7.2
IBM i 7.1
V6R1 (hors support aujourd'hui)
Produits sous licence
QSYS2.LICENSE_INFO Vue SF99702 Level 9 SF99701 Level 38 -
  • LICENCE_INFO (GO LICPGM, option 10)
   Service Type
IBM i 7.2
IBM i 7.1
V6R1 (hors support aujourd'hui)
Fonction Spool
QSYS2.OUTPUT_QUEUE_ENTRIES() UDTF SF99702 Level 9 SF99701 Level 38 -
QSYS2.OUTPUT_QUEUE_ENTRIES Vue SF99702 Level 9 SF99701 Level 38

-

  • OUTPUT_QUEUES_ENTRIES (WRKSPLF *ALL)


  • OUTPUT_QUEUES_ENTRIES()

    • Fonction table avec trois paramètres en entrée
      • OUTQ_LIB : bibliothèque outq
      • OUTQ_NAME : nom d'outq
      • DETAILED_INFO
        • *YES : retourne des informations détaillées
        • *NO : ne retourne que les informations de base
    • Exemple

      SELECT * FROM TABLE(QSYS2.OUTPUT_QUEUE_ENTRIES('*LIBL', 'QEZJOBLOG', '*NO')) as LOG
      ORDER BY SIZE DESC FETCH FIRST 10 ROWS ONLY
   Service Type
IBM i 7.2
IBM i 7.1
V6R1 (hors support aujourd'hui)
Fonction Journal
QSYS2.JOURNAL_INFO Vue SF99702 Level 3 SF99701 Level 32 SF99601 Level 33
QSYS2.DISPLAY_JOURNAL() UDTF Base

livré: Base
Modifié: SF99701 Level 26

livré: SF99601 Level 15
Modifié: SF99601 Level 31

  • DISPLAY_JOURNAL (disponible depusi la V6) offre un accès aux récepteurs de journaux :
    Select * From TABLE (
    Display_Journal(
    -- bib et journal
    'BDVIN1', 'QSQJRN',
    -- bib et récepteur
    ' ', ' ',
    -- timestampt de début ou null
    now() - 7 days ,
    -- séquence de début ou null
    CAST(null as DECIMAL(21 , 0)),
    -- code journal
    ' ',
    -- type d'entrée
    ' ',
    -- bib, objet, type, membre
    ' ' , ' ', ' ' , ' ',
    -- profil utilisateur
    'QPGMR',
    -- job
    ' ',
    -- pgm
    ' ' ) ) AS jrn

    La colonne contenant les données du poste (ENTRY_DATA) est retournée sous forme de BLOB, castez par CAST(ENTRY_DATA AS CHAR(2000)) pour la voir en clair.

  • vue JOURNAL_INFO retourne la liste des journaux et leurs attributs

 

Divers

       Service Type
    IBM i 7.2
    IBM i 7.1
    V6R1 (hors support aujourd'hui)
    Java
    QSYS2.SET_JVM() Procédure SF99702 Level 5 SF99701 Level 34 -
    QSYS2.JVM_INFO Vue SF99702 Level 5 SF99701 Level 34 -
    Applications
    QSYS2.QCMDEXC() Procédure Base livré: Base
    Modifié: SF99701 Level 26
    livré: SF99601 Level 15
    Modifié: SF99601 Level 3

    JVM_INFO : liste des JVM actives



La procédure QCMDEXC s'utilise comme l'API système, mais en fournissant uniquement la commande à exécuter (la longueur est calculée automatiquement)


Dernier point, limites système :

Limites systèmes
QSYS2.SYSLIMTBL Table livré: Base
Modifié: SF99702 Level 3
Modifié: SF99702 Level 5
livré: SF99701 Level 23
Modifié: SF99701 Level 26
Modifié: SF99701 Level 34
livré: SF99601 Level 29
Modifié: SF99601 Level 31
QSYS2.SYSLIMITS Vue livré: Base
Modifié: SF99702 Level 3
Modifié: SF99702 Level 5
livré: SF99701 Level 23
Modifié: SF99701 Level 26
Modifié: SF99701 Level 34
livré: SF99601 Level 29
Modifié: SF99601 Level 31

System Limits (limites système)

  • un mécanisme est proposé depuis la V7

    Il s'agissait de définir des seuils d'alerte par fonction système pouvant présenter un risque de surcharge
     
      A ces fonctions pouvant présenter une limite, on va associer :

    • un Seuil.(la première fois que le seuil est dépassé on le signale)
    • un Incrément (quand un incrément, par rapport au seuil précédent est ensuite dépassé, on le signale également)

          les dépassements de seuils sont notifiés dans un fichier système : SYSLIMTBL, un trigger peut être posé sur ce dernier.

    les fonctions en version 7.1

    • Système
      • nbr maxi de jobs
    • ASP
      • nbr maxi de spool par ASP
    • Objets
      • nbr maxi de membres
    • Travaux
      • nbr maxi de lignes verrouillées
      • nbr maxi de ligne dans une transaction
    • base de données
      • nbr maxi de lignes dans un membre
      • nbr maxi de lignes actives
      • nbr maxi de lignes supprimées
      • nbr maxi de lignes en excédent (notion d'incrément)
      • nbr maxi de variables à taille variable (sont gérés comme des extensions)
      • nbr maxi d'index autours d'une table
    • journal
      • taille maxi d'un récepteur
      • nbr maxi d'objets attachés à un journal
      • plus grand n° de séquence d'un journal
    • système de fichiers
      • nbr maxi d'objets attachés à une bibliothèque


  • les apports de la 7.2/TR1 à la catégorie système de fichiers
  • nbr maxi de fichier IFS attachés à un répertoire
  • nbr maxi de répertoires attachés à un répertoire
  • nbr maxi d'objets IFS attachés à l'ASP *SYSBAS
  • nbr maxi d'objets IFS attachés à un ASP utilisateur
  • nbr maxi de documents attachés à un folder (QDLS)
  • nbr maxi de documents attachés à l'ASP *SYSBAS
  • nbr maxi de documents attachés à un ASP utilisateur
  • taille maxi d'un fichier de l'IFS
  • taille maxi d'un document (QDLS)


    Chaque seuil est identifié par un ID (LIMIT_ID)

    il suffit de faire référence à SIZING_ID dans SQL_SIZING pour avoir un libellé


    la vue SYSLIMITS fait la jointure pour vous

Copyright © 1995,2016 VOLUBIS