pause-café
destinée aux informaticiens sur plateforme IBM i.
Pause-café #72
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.
- attribuant à chaque rang, un des codes de la table des symboles vues plus haut.
- Une table des symboles contenant :
- Les index EVI sont utilisés implicitement pour la sélection d'enregistrement, depuis leur apparition.
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
- 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
- Version 1.1.5
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 exemplesEnfin, 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 globalRapport 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 :
- placer **FREE en début de source et commencer colonne1
- 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
- Chroot (change root) est une commande des systèmes d'exploitation UNIX/Linux permettant de changer le répertoire racine d'un processus..
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 |
livré: SF99601 Level 31 |
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 ;
- 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
- RESET_STATISTICS
- 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
- RESET_STATISTICS
- 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 9SF99701 Level 34
Modifié level 38- QSYS2.SERVER_SBS_ROUTING Vue SF99702 Level 5
Modifié Level 9SF99701 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
- Pour ODBC/JDBC (dont Iseries
navigator), suivez la
procédure suivante :
- 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
- 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 |
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
- Fonction table avec trois paramètres en entrée
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 |
livré: SF99601 Level 15 |
- 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 jrnLa 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 5livré: SF99701 Level 23
Modifié: SF99701 Level 26
Modifié: SF99701 Level 34livré: SF99601 Level 29
Modifié: SF99601 Level 31QSYS2.SYSLIMITS Vue livré: Base
Modifié: SF99702 Level 3
Modifié: SF99702 Level 5livré: SF99701 Level 23
Modifié: SF99701 Level 26
Modifié: SF99701 Level 34livré: SF99601 Level 29
Modifié: SF99601 Level 31System 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