pause-café
destinée aux informaticiens sur plateforme IBM i.
Pause-café #67
Technology Refresh 8 (SF99701 level 29)
-
La TR8 a été annoncée en Avril pour une disponibilité début Juin.
les nouveautés SQL apportées par la PTF SF99701 niveau 29 (Juin 2014)
• GENERATE_SQL() permet d'obtenir le source SQL dans un membre source par procédure
(comme l'option "génération d'instruction SQL" sous System i Navigator)
• DELIMIT_NAME() génère les délimiteurs (" et ') quand c'est nécessaire pour un nom de table
DELIMIT_NAME('test"name') -> "test""name"
• EXTRACT_STATEMENT retourne des informations sur le contenu d'une image instantanée du cache des plans d'accès(générée par System i Navigator ou QSYS2.DUMP_PLAN_CACHE)
• QSYS2.DUMP_PLAN_CACHE_topN, génère une image instantanée avec les plans des N instructions les plus consommatrices
CALL QSYS2.DUMP_PLAN_CACHE_topN(’MABIB’, ’TOPN20’, 20);
-- génère une image instantanée nommée TOPN20 dans MABIB, avec les 20 instructions ayant le temps de traitement cumulé le plus long
• RESTART_IDENTITY() permet pour une table dupliquée d'avoir comme prochaine valeur d'un champ AS IDENTITY, la même que la table d'origine
• Deux nouvelles tables du catalogue SQL pour les ordres SQL « Embeded »SysPackageStmtStat, contient une ligne par instruction contenue dans un *SQLPKG
SysProgramStmtStat, contient une ligne par instruction contenue dans un programme (*PGM)
• SQE possède, désormais, la faculté de détecter les instructions SQL complexes exécutées en parallèle.
Dans ce cas, il ne fabrique pas de plus de 3 plans concurremment et attends plutôt la production des plans en cours avant de lancer la requête...
• Nous avions vu en cours de v7 que les registres clients (Client ProgramID, Client APPLNAME, etc...) étaient désormais aussi renseignés pour :
- QUERY
- QM
- STRSQL
- RUNSQLSTM
Ils le seront aussi en Level 29 pour DDM/DRDA
- Client PROGRAMID 'DRDA'
- Client APPLNAME 'xxxVVrrMM'
XXX représente le signature du client, 'QSQ' pour IBM i (OS/400)
valeurs pour XXX
Derby (DNC)
DataDirect (DDT)
Easysoft Limited (ESL)
FileTek (STH)
Grandview (GVW)
DB2 for i (QSQ)
DB2 for LUW (SQL)DB2 for VSE & VM (ARI)DB2 for z/OS (DSN)
IBM JCC (JCC)
Informix (IFX)
Jave (DNC)
Microsoft HIS (MSEIDRDA)
Oracle (GTW)
StarSQL (SIG)
Wall Data (RUM)
XDB System (XDB)
VVrrMM , la version ('QSQ070100' = IBM i 7.1)
- Client USERID profil utilisateur client
- Client WORKSTNNAME le nom de la machine cliente
- Client ACCNTG code accounting du client
• La fonction table GET_JOB_INFO du level 23 a été modifiée
- elle accepte '*' comme paramètre en entrée pour indiquer le job en cours
- elle retourne une nouvelle colonne V_SQL_STATEMENT_TEXT contenant le dernière instruction SQL du job.
Colonnes retournées par GET_JOB_INFO
V_JOB_STATUS CHAR(10) Statuts du job V_ACTIVE_JOB _STATUS CHAR(4) État actuel (RUN, DSPW, MSGW, etc)... voir l'API QUSRJOBI V_RUN _PRIORITY Integer priorité machine V_SBS_NAME CHAR(10) Sous système V_CPU_USED BIGINT CPU consommée V_TEMP_STORAGE_USED_MB Integer Mémoire temporaire consommée V_AUX_IO_REQUESTED BIGINT Nombre d'I/O V_PAGE_FAULTS BIGINT Nombre de défaut de page V_CLIENT_WRKSTNNAME CHAR(255) registre client * , nom du client V_CLIENT_APPLNAME CHAR(255) registre client, nom de l'application V_CLIENT_ACCTNG CHAR(255) registre client, code accounting V_CLIENT_PROGRAMID CHAR(255) registre client, nom de l'exécutable V_CLIENT_USERID CHAR(255) registre client, nom de l'utilisateur V_SQL_STATEMENT_TEXT VARCHAR(10000) Dernière instruction SQL
* les registres clients peuvent être fixés par la procédure WLM_SET_CLIENT_INFO
• L'ordre de recherche des authentifications enregistrée pour DDM/DRDA (ADDSVRAUTE) change
Rappel :- Vous pouvez depuis SF99601 level 21 et SF99701 level 11, faire une entrée générique par :
ADDSVRAUTE USRPRF(profil_local) SERVER(QDDMDRDASERVER) USRID(profil_remote) PASSWORD(motdepasse)
- ET depuis SF99601 level 28 et SF99701 level 14, faire une entrée pour un profil de groupe
La règle de recherche de base est la suivante :
- recherche pour le profil et l'application
- recherche pour le profil et QDDMDRDASERVER
- recherche pour le groupe et l'application
- recherche pour le groupe et QDDMDRDASERVER
- recherche pour le groupe supplémentaire et l'application
- recherche pour le groupe supplémentaire et QDDMDRDASERVER
- demande d'une authentification !
- en SF99701 level 29, si vous créez une variable d'environnement (ADDENVVAR) QIBM_DDMDRDA_SVRNAM_PRIORITY, l'ordre devient
- recherche pour le profil et l'application
- recherche pour le groupe et l'application
- recherche pour le groupe supplémentaire et l'application
- recherche pour le profil et QDDMDRDASERVER
- recherche pour le groupe et QDDMDRDASERVER
- recherche pour le groupe supplémentaire et QDDMDRDASERVER
- demande d'une authentification !
• Enfin le correctif SI52504, de fin Mai sur Client Access, apporte à System i Navigator
- la possibilité de limiter l'affichage aux n premières lignes sur les listes produites par l'option Base de Données
- la possibilité de lancer plusieurs Visual Explain en même temps (sur un affichage des instructions du cache, par exemple)
- la sauvegarde des lignes affichée dans le gestionnaire de script suite à un CALL de procédure devient possible
(avant cela était réservé aux instructions SELECT)
Dans le même temps, quelques correctifs :
- plusieurs bugs corrigés sur Visual Explain
- suppression du message d'erreur "ICUUC44.DLL manquante" à l'utilisation de Workbench Viewer
- le driver jdbc passe à JtOpen 8.2
Le 28 Avril, est annoncée la version 7.2
•Pour voir les nouveautés developer Works
•La nouvelle version de la documentation Knowledge Center
S'installe sur POWER 6, 7 et 8. Disponible début Mai (commande ou téléchargement)
DB2- SQE est utilisé y compris pour QUERY et OPNQRYF (voir les différences que cela peut générer, particulièrement l'ordre de tri peut changer)
- si CPYF créé une table SQL par CRTFILE(*YES), le nouveau fichier est noté comme étant, lui aussi, une table SQL
- select * from SYSTMPSTG permet d'accéder à la mémoire temporaire utilisée en mode SQL (SQL as a service)
- Nouveau registre CURRENT_USER , contient le profil adopté dans le cas d'un programme en *OWNER
- Accord de droits par SQL à des profils de groupe : GRANT ALL ON clients TO GROUP gescom
- l'accord de droit à un profil peut être indiqué par GRANT ALL ON clients TO USER gescom
Avant la gestion des droits se faisait par GRANT ALL ON clients TO CM et ne permettait pas de distinguer profil et groupe
- Nouvelles variables globales dans SYSIBM, pré-renseignées par SQL , propres à la session et en lecture uniquement :
- CLIENT_HOST (informations TCP/IP du client ou NULL)
- CLIENT_IPADDR
- CLIENT_PORT
- PACKAGE_NAME (*SQLPKG, en cas de connexion DRDA uniquement)
- PACKAGE_SCHEMA
- PACKAGE_VERSION
- ROUTINE_SPECIFIC_NAME (Nom de la procédure en cours ou de la fonction en cours)
- ROUTINE_SCHEMA
- ROUTINE_TYPE (P pour procédure, F pour fonction)
- Nouvelles instructions
- TRUNCATE
Équivalent à CLRPFM
Syntaxe
.-TABLE-. -TRUNCATE--+-------+--nom table------------------------------>
.-DROP STORAGE--. .-IGNORE DELETE TRIGGERS--------. .-CONTINUE IDENTITY-.
-+---------------+--+-------------------------------+--+-------------------+--+-----------+- '-REUSE STORAGE-' '-RESTRICT WHEN DELETE TRIGGERS-' '-RESTART IDENTITY--' '-IMMEDIATE-'
- DROP STORAGE, l'espace mémoire est récupéré, sinon il est conservé pur une utilisation ultérieure
- IGNORE DELETE TRIGGERS (ne pas tenir compte des triggers BEFORE/AFTER DELETE)
- RESTRICT WHEN DELETE TRIGGERS (ne pas lancer l'instruction s'il y a des triggers)
- CONTINUE IDENTITY, les valeurs pour les champs AS IDENTITY ne sont pas réinitialisées
- IMMEDIATE, cette instruction ne peux pas être "défaite" (pas de ROLLBACK)
- DROP STORAGE, l'espace mémoire est récupéré, sinon il est conservé pur une utilisation ultérieure
- TRANSFERT OWNERSHIP
Équivalent à CHGOBJOWN
.-REVOKE PRIVILEGES---.
-TRANSFER OWNERSHIP OF--| object |--TO--| new-owner |--+---------------------+->
'-PRESERVE PRIVILEGES-'
object
|--+-INDEX--index-name-+----------------------------------------|
+-TABLE--table-name-+
+-VIEW--view-name---+
new-owner |--+-USER--authorization-name-+---------------------------------| +-+-CURRENT USER-+---------+
| '-CURRENT_USER-' | +-+-SESSION_USER-+---------+
| '-USER---------' | '-SYSTEM_USER--------------'
- TRUNCATE
- Nouvelles fonctions :
- LPAD / RPAD
LPAD(NAME,15,'.' ) → '....Christian'
- VERIFY_GROUP_FOR_USER(USER, groupe1 [,groupen] )
Retourne 1 si le profil est membre d'un des groupes, sinon 0
- ATTENTION, la fonction POSITION inverse les paramètres reçus pour être conforme aux autres implémentations de DB2
POSITION(recherche, origine)
en version 6 et 7, il fallait saisir :
POSITION(origine, recherche)
la forme utilisant IN à la place de ',' ne change pas :
POSITION(recherche IN origine)
- LPAD / RPAD
- Nouvelle clause VIOLATION sur les Check constraint
ON INSERT VIOLATION SET column-name = DEFAULT
L'erreur n'est pas signalée, la valeur par défaut est insérée
ON UPDATE VIOLATION PRESERVE
L'erreur n'est pas signalée, la valeur précédente est conservée
- Les TIMESTAMP en SQL ET en RPG supportent que vous indiquiez une précision (nombre de décimales après la seconde)
EN 7.1 la précision était de 6
EN 7.2 elle peut être comprise en 0 et 12!
Attention, de ce fait, toute vue utilisant l'une des fonctions suivantes :VARCHAR_FORMAT
TRUNC_TIMESTAMP
ROUND_TIMESTAMP
ne peut pas être sauvegardée pour une version précédente (vous recevez CPI3215 et CPF3741)
- Enfin l' option 47 de 5770SS1 (non facturable) apporte RCAC
Row and Column Access Control
Il s'agit de pouvoir indiquer des « droits » à la colonne ou à la ligne qui s'appliquent y compris aux personnes ayant les droits d'administrateur
CREATE MASK indique si une colonne est retournée tel-que ou masquée ('xxx-xxx-xxx-1234' pour un n° de CB)
CREATE MASK SECUMASK_MASK ON PERSONNEL FOR COLUMN NOSECU RETURN CASE WHEN (VERIFY_GROUP_FOR_USER(SESSION_USER, 'PAYE') = 1) THEN NOSECU WHEN (VERIFY_GROUP_FOR_USER(SESSION_USER, 'ADMIN') = 1) THEN 'XXX-XX-' || SUBSTR(NOSECU, 8, 4) ELSE NULL END ENABLE;
ALTER TABLE PERSONNEL ACTIVATE COLUMN ACCESS CONTROL;
CREATE PERMISSION indique si une ligne doit être retournée
CREATE PERMISSION SALAIRE_ROW_ACCESS ON PERSONNEL FOR ROWS WHERE VERIFY_GROUP_FOR_USER(SESSION_USER, 'ADMIN' , 'DAF') = 1 AND COEFF < 200 ENFORCED FOR ALL ACCESS ENABLE;
ALTER TABLE EMPLOYEE ACTIVATE ROW ACCESS CONTROL;
ces droits s'appliquent quelque soit les moyens d'accès
- SQL
- ODBC / JDBC / CLI
- QUERY Manager
- QUERY
- OPNQRYF
- Commandes CL (CPYF, CPYTOSTMF)
- Accès natif RPG/COBOL
Avec les exceptions suivantes
- pas de logiques multi-formats
- accès par Api QQQQRY
- fichiers ayant un trigger à la lecture
Ces droits sont intégrés à System i Navigator
Les profils ayant les droits sur la nouvelle fonction « Administration de la sécurité base de données » (QIBM_DB_SECADM)
données par WRKFCNUSG ou Administration d'application pourront gérer les droits RCAC sans pour autant être autorisés à la tablele niveau 19 de SF99701 nous a apporté la possibilité de définir une valeur par défaut sur les paramètres de procédure
CREATE OR REPLACE PROCEDURE Creation_client
(IN NOCLI DEC( 6, 0),
IN DEPCLI CHAR(3) DEFAULT('44'),
IN DATCLI DATE DEFAULT CURRENT DATE)
LANGUAGE SQL
BEGIN
/* corps de la procédure */
END;
L'appel peut se faire ensuite sous la forme
CALL Creation_client('123456')
CALL Creation_client('123456', '22')
CALL Creation_client('123456', '22', DEFAULT)
Les paramètres peuvent être nommés, afin d'éviter de renseigner un paramètre précédent par exemple
CALL Creation_client('123456', DATCLI=>'2013-01-17')
La valeur par défaut peut même être "dynamique"IN DEPCLI CHAR(3) DEFAULT
(SELECT depNum FROM departements WHERE deptNom='Morbihan')Le version 7.2 propose la même chose sur les fonctions
CREATE FUNCTION Solde_client
(IN NOCLI DEC( 6, 0),
IN DEPCLI CHAR(3) DEFAULT('22'),
IN DATCLI DATE DEFAULT CURRENT DATE) RETURNS DEC(7 , 2 )
LANGUAGE SQL
BEGIN
/* corps de la procédure */
END;
L'appel de la fonction peut donc se faire sous la forme :
Select solde_client(NOCLI, DATCLI=>'2014-06-01') from clients
ou
Select solde_client(NOCLI, DEFAULT, current date) from clients
Exemple sur la fonction DISPLAY_JOURNAL
SELECT journal_code, journal_entry_type, object, object_type FROM TABLE (
QSYS2.Display_Journal(
'BDVIN1', 'QSQJRN',
“USER” => ‘CM’ )
) AS XDans ce cadre l'ordre de considération des fonctions à été modifié et SQL peut "caster" tout seul les paramètres.
voir (sur Knowledge Center) :
RPG- la plupart des nouveautés sont déjà présentes via les déclarations en format libre en TR7
- Meilleur support des différents code pages, dont UTF-8 , UTF-16
- CCSID peut être indiqué sur chaque définition
- support des valeurs *UTF8 , *UTF16 ou *JOBRUN
- les conversions sont implicites lors des manipulations de chaînes en format libre.
- CCSIDVT en spécif H ou CTL-OPT
- *LIST : indique les pertes potentielles de données lors de la compilation
-
*EXCP : indique les pertes potentielles de données lors de l’exécution
- les Data Structure externes peuvent hériter du CCSID du fichier servant de modèle
- nouvelle directive de compilation /SET permet de définir le CCSID ou le format date/heure à partir de cette ligne
- nouvelle directive de compilation /RESTORE, pour annuler le précédent /SET
- Le langage PCML (utilisé pour transformé un pgm en Web service) reconnaît (enfin!) date/heure/horodatage et les entiers sur 8 octets.
- OPENOPT (*{NO}CVTDATA) permet de ne pas opérer de conversion de CCSID lors des lectures.
- Support de la précision pour les champs TIMESTAMP
- lors d'une déclaration
- dcl-s tstp timestamp(0);
- lors d'un calcul
-
tstp += %seconds(1,5);
-
- lors d'une différence
- diff1 = %diff(hfin : hdebut : *SECONDS : 6)
- diff1 = %diff(hfin : hdebut : *SECONDS : 6)
- lors d'une déclaration
- %SUBDT (Substring sur Date, Time, ou Timestamp).
choix du nombre de chiffres extraits, par ex : %SUBDT(WDate:*YEARS:4).
RDI
- Nouvelle version de RDI 9.1.0 annoncée et disponible au 23 Mai
- Support des nouveautés 7.2
- Aide (F1) possible directement sur les fonctions intégrées et les instructions en format libre.
- Possibilité de filtrer l'affichage de la vue Structure
- Possibilité de tester les programmes, affichage des instructions testées et/ou non testées
CL
- Après l'arrivée des fonctions intégrées en V7 (via PTF)
-
La PTF SI48166 propose :
%TRIM élimination d'un blanc d'extrémité d'une chaîne
%TRIMR élimination des blancs de droite
%TRIML élimination des blancs de gauche
La PTF SI49061 propose :
%CHECK vérification des caractères d'une variable(gauche->droite)
%CHECKR vérification des caractères d'une variable(droite->gauche)
%SCAN recherche d'une chaîne dans une variable - Nouveautés 7.2
- Fonctions de changement de genre
- Gestion de la casse
- Gestion de la taille des variables
Cela va permettre une gestion plus simple du code CL, par exemple lors de l'envoi de messages
SNDPGMMSG(%CHAR(&compteur) *CAT ' objets modifiés')
-
Web et Client Access
Client Access version Windows "stabilisé", le produit de choix devient "IBM i Access, client solution", la version multi-plateformes.
Nouvelle solution pour mobiles (intégrée à IBM i Access for the Web) en technology preview- Gestion des travaux
- Gestion des messages
- Gestion des impressions
- session 5250
- scripts SQL
Ce produit peut aussi être installé sur une version 6.1 ou 7.1
- Installez le version 7.2 de 5770XH2 + SI52768
- Installez
- i7.2 - SF99713 (level 1 ou plus)
- i7.1 - SF99368 (level 27 ou plus)
- i6.1 - SF99115 (level 38 ou plus)
- Passez la commande QIWA2/CFGACCWEB APPSVRTYPE(*INTAPPSVR) INSTANCE(*MOBILE)
Ce que nous avons fait sur notre système en 7.1
menu principal
travaux actifs
choix d'une session 5250
session 5250
Navigator for i doit, un jour, remplacer System i Navigator (version Windows)
Nouveautés pour ce dernier :- possibilité de rechercher rapidement une fonction
- création de favoris
- intégration des moniteurs qui étaient avant dans Gestion centralisée (version Windows)
- gestion complète des PTF, y compris la comparaison entre deux systèmes
- Batch Modeler
Vous pouvez enregistrer les performances d'un travail batch et modéliser ce que deviendrait le même traitement en faisant varier les paramètres
(CPU, mémoire, priorités)
Le serveur HTTP utilise Apache version 2.4
- meilleurs performances
- possibilité de choisir le sous système d'exécution via 4 nouvelles directives
- HTTPSubsystemDesc -> sous système
- HTTPStartJobQueue -> JOBQ
- HTTPStartJobDesc -> JOBD
- HTTPRoutingData -> données de routage
- SNI (Server Name Indication) permet de gérer plusieurs certificats lors de l'utilisation de VirtualHost
- OSCP (gestion de la révocation des certificats)
Tout ce qui est serveur d'application est basé désormais sur Liberty
ce qui implique
- Une nouvelle version du serveur d'application intégré, remplaçant complètement TOMCAT
- Une nouvelle version du serveur de Web services
- Utilise JAX-WS et non plus AXIS
- les web services sont toujours de type SOAP, mais le type RESTFull est "dans les tuyaux"
Système et divers
SSL supporté pour le fonction remote journal
Nouvelle valeur pour QPWDRULES : *ALLCRTCHG demandant à ce que les règles concernant les mots de passe soient vérifiée y compris lors de l'utilisation des commandes CRTUSRPRF et CHGUSRPRF
AUDIT
- dans les enregistrements d'audit concernant la modification des valeurs système, les versions avant et après seront notées.
- deux nouvelles valeurs permettrons de logger l'applications des PTF : *PTFOPR and *PTFOBJ
SSO (EIM) possible entre deux systèmes pour :
- Telnet
- FTP
- c'était déjà possible pour DDM/DRDA
PTF
- Historique de l'application des PTF dans le journal d'AUDIT (voir ci-dessus)
- nouvelle commande DSPPTFAPYi (Display PTF Apply Information)
- les objets remplacés par une PTF ne seront plus dans QRPLOBJ (qui ne contient donc, que des objets utilisateur)
mais dans l'une des bibliothèques QPFTOBJ1 et QPTFOBJ2Performances
- SQE est utilisé plus souvent (voir ci-dessus)
- accès à la mémoire temporaire utilisée en SQL (SYSTMPSTG)
- Un message est désormais envoyé quand un utilisateur approche le maxima quant à la mémoire temporaire maximum qui lui est allouée.
- Rappel depuis la V7 + SI42845
- un job ayant dépassé la CPU maxi ou la mémoire temporaire maxi est maintenant holdé !
(avant il était arrêté) avec envoi de message à QSYSOPR : CPI112D (CPU) et CPI112E (mémoire)
- WRKACJTOB et la liste des travaux actif sous Navigator for i, possèdent une nouvelle colonne "mémoire temporaire"
- cette colonne peut être un critère de tri
Divers
Nombreuse avancées concernant BRMS et PowerHA
- les spools peuvent être sauvegardés par SAVCHGOBJ
- la restauration de fichiers logiques sur un physique de format différent fonctionne désormais avec ALWOBJDIFF(*COMPATIBLE)
- nouvelle commande RTVTCPINF (fonctionne sur le principe de RTVSYSINF)
- On peut re-injecter le paramétrage TPC/IP sur une nouvelle machine par UPDTCPINF
- Lors de la sauvegarde de QUSRSYS, la commande RTVTCPINF est automatiquement lancée
- la commande SAVSTG disparaît
- le nombre de job maxi passe de 485.000 à 970.000
- la taille maxi d'un pool mémoire passe à 2 To.
- le paramètre taille mémoire (sur CHGSHRPOOL) possède une deuxième valeur *KB ou *MB
- La taille maxi supportée par le système de fichier /QOPT passe de 4 Go à 10 To, pour les unités RDX (et les clefs USB ?)
- La taille de la commande à exécuter sur STRPCCMD passe de 123 c. à 1023 c.
- La colonne mémoire temporaire maxi a été ajoutée à la sortie de la commande WRKACTJOB, le spool dépasse désormais 132 c.
- DSPLOG admet dans le paramètre MSGID jusqu'à 200 ID message !
- JAVA
- Nouveau produit 5770JV1, support de Java 6 , 7 , 7.1 et 8.0. La version 7.1 est la version par défaut.
- retrait de Java 5 (options 8 et 9) et 1.4.2 (option 13)
- retrait des commandes ANZJVAPGM , ANZJVM , CHGJVAPGM, DMPJVM, DSPJVAPGM
- Il est possible d'utiliser SAMBA pour le voisinage réseau
– serveur de fichier au protocole CIFS (Common Internet File System) implémenté sur toutes les distributions Linux.
– meilleure compatibilité avec les clients Windows
– SMB version 2.0
- Plus rapide que Netserver
- NE supporte PAS :
- SSO (EIM)
- la conversion de CCSID
- n'appel pas les points d'exit de Netserver
- SMTP peut dorénavant fonctionner en trois modes
- *SMTP , n'utilise plus MSF , ni la directory système (SDD via WRKDIRE), mais la cde ADDUSRSMTP.
- *SMTPMSF , comme *SMTP mais respecte les points d'exit MSF
- *SDD, comme en 7.1
- Avec *SMTP et *SMTPMSF , deux nouvelles commandes sont proposées :
- WRKSMTPEMM, permet de voir l'activité SMTP (plus besoin du journal MSF)
- WRKUSRSMTP permet de gérer les utilisateurs et leurs boites aux lettres
Enfin annonce des premiers Power 8 (pour IBM i , plutôt les modèles de milieu de gamme : S814 / S824) et une nouvelle HMC CR8
Copyright © 1995,2014 VOLUBIS