DB2 Web Query, installation
IL vous faut obtenir le produit 5733QU2 (le plus simple est de commander la V6, mais le produit s'installe sur une V5R40)
Nous parlons, ici, de la version 1.11 du produit (les premières disponibilités proposaient une version 1.10)
Vérifiez que vous avez les produits suivants (5761xxx en V6R10, 5770xxx en V7):
- 5722SS1 Option 3 - Extended Base Directory Support
- 5722SS1 Option 30 - Qshell
- 5722SS1 Option 33 - PASE
- 5722JV1 Option 6 - Java Developer Kit 1.4
- 5722JV1 Option 7 - Java Developer Kit 5.0
- 5722JV1 Option 8 - J2SE 5.0 32 bit
- 5722DG1 IBM HTTP Server for i5/OS
- 5722JC1 IBM Toolbox for Java
Installez les PTF suivantes (voyez l'APAR II14375 pour actualiser les N°)
- V5R40
- SF99540 (hyper) niveau 7107
- SF99054 (database), niveau 10
- SF99114 (http), niveau 9
- SF99291 (java), niveau 9
- plus les PTFS individuelles suivantes
- SI31494
- SI31447
Cette dernière installe le nouveau serveur d'application (intégré à la V6) et implique un redémarrage de l'instance *ADMIN du serveur HTTP- V6R10
- SF99610 (hyper), niveau 8064
- SF99601 (database), niveau 2
- SF99562 (java), niveau 1
- pas de PTF individuelles sur l'OS
- V7R10
- le dernier niveau sur DG1 est toujours recommandé
- Installez le produit et les options choisies
- option 1 (active report)
- option 2 (OLAP)
- option 3, si vous avez acheté le Workbench developeur
- option 4, pour facturer par groupe d'utilisateurs (version 1.11, minimum)
- 5733QU3 pour faire de la distribution de rapports
- Puis les PTF associées au produit
- SI31020 en V1R1M1
- SI31072 si vous avez Workbench Developeur
- les GROUP PTF suivants, dédiés à DB2 Web QUERY V1R1M1
- SF99615 si vous êtes en V5R40
- SF99616 si vous êtes en V6R10
- SF99617 si vous êtes en V7
- les GROUP PTF suivants, dédiés à DB2 Web QUERY V1R1M2
- SF99635 si vous êtes en V5R40
- SF99636 si vous êtes en V6R10
- SF99637 si vous êtes en V7
lancez la commande d'enregistrement du nouveau serveur WEB (une seule fois
!) : CALL QWEBQRY76/REGWEBQRY
(cette étape, obligatoire avec la première version, est devenue inutile en V.1.1.2)
attribuez un mot de passe à QWEBQRYADM (CHGUSRPRF)
lancez le serveur par STRWEBQRY (bibliothèque QWEBQRY76 en V1.1.1 QWEBQRY77 en V1.1.2), mais attention,
le JOB doit être lancé par le profil QWEBQRYADM,
le plus simple
est d'écrire
un CL :
PGM
SBMJOB CMD(QWEBQRY76/STRWEBQRY) JOB(STRWEBQRY) USER(QWEBQRYADM)
ENDPGM
En ayant donné le droit de lecture sur le profil à la personne (QPGMR ?) lançant ce CL.
Cela doit lancer un certain nombre de JOB :
Tout ce petit monde doit utiliser les ports IP suivants : 11331(wqlwi7), 11332 et 11333 (edapgwy) , 11334 (hlisnk), 11335 (jscom3c) qp0zspwp)
le premier (11331) étant le port d'écoute du serveur WEB associé à DB2 Web Query.
vérifiez le par NETSTAT *CNN
Work with IPv4 Connection Status
Système: AS400
Type options, press Enter.
3=Enable debug 4=End 5=Display details 6=Disable debug
8=Display jobs
Remote Remote Local
Opt Address Port Port Idle Time State
* * 10010 031:36:06 Listen
* * 10012 031:36:07 Listen
* * 11331 550:52:32 Listen
* * 11332 550:52:38 Listen
* * 11333 550:59:52 Listen
* * 11334 550:59:09 Listen
* * 11335 551:00:33 Listen
* * 11336 550:52:51 Listen
* * 11338 550:50:21 Listen
Vous pouvez avoir des informations plus détaillées sur le démarrage en regardant le contenu de /QIBM/UserData/webquery/ibi/srv76/wfs/edaprint.log
la version 1.1.2 apporte aussi la commande WRKWEBQRY
Autres commandes (toujours dans QWEBQRY76)
Lancez sous le SHELL (STRQSH)
pour passez en langue Française :
/qibm/proddata/webquery/ibi/srv76/home/bin/tsgult.out NLSCFG /qibm/userdata/webquery/ibi/srv76/wfs FRA
pour revenir en Américain :
/qibm/proddata/webquery/ibi/srv76/home/bin/tsgult.out NLSCFG /qibm/userdata/webquery/ibi/srv76/wfs 37
Avec votre navigateur allez à l'URL suivante : <votre-as400>:11331/webquery_html/wfconsole.htm
Signez vous QWEBQRYADM
Indiquez la page de code cliente : 137 (ou 1252 qui est l'ANSI de windows)
puis indiquez les autres langues possibles (suivant vos utilisateurs) afin de prévoir un changement de langue dynamique (au moins Anglais/Français)
et enfin paramétrez la présentation des données numériques en ajoutant dans les paramètres personnalisés
L'affichage de 3 millions et 25 centimes s'affiche :
CDN = OFF(dft) : 3,000,000.25
CDN = ON : 3.000.000,25
CDN = SPACE : 3 000 000,25
pour terminer vous pouvez édtiter /qibm/userdata/webquery/ibi/srv76/wfs/etc/nlscfg.err (/QIBM/USERDATA/webquery est le répertoire contenant NOTRE paramétrage)
en ajoutant :
CURRENCY = €
DATETIME = EUR (ou un autre format SQL valide)
SI vous devez afficher des données en UNICODE
ATTENTION, le paramétrage Français que nous venons de faire est correct, mais un BUG du produit (JUIN 2008) empèche la génération de PDF en Français..
Pour remédier au problème, installez les PTF SI31981 et SI32539 , ou bien :
1/ Arrêtez WEB QUERY (ENDWEBQRY)
2/ modifiez le profil QWEBQRYADM avec CCSID(1146) : Américain avec caractère €
3/ Modifiez /qibm/userdata/webquery/ibi/srv76/wfs/etc/nlscfg.err pour ne conserver que les deux lignes :
CURRENCY = €
DATETIME = EUR4/ Relancez WEB QUERY par SBMJOB .../... USER(QWEBQRYADM) CCSID(*USRPRF)
Enregistrement de la licence par user CALL QWEBQRY76/WQADDLIC ‘USER'
(WQRLSLIC pour libérer la licence)
pour voir les utilisateurs enregistrés WRKLICINF PRDID(5733QU2)
et passez l'option 8 sur l'option 5050
Gestion des détenteurs de licences AS400 |
Ensuite définition de (des) administrateur(s) :
par accord de droits par ajout d'un profil de groupe ou si l'utilisateur en possède déja un par un groupe supplémentaire MRADMIN
CHGUSRPRF USER SUPGRPPRF(MRADMIN) pour un administrateur
(vous même ?)
et vérifiez que vous pouvez vous connecter en saisissant l'URL
suivante : http://<votre-as400>:11331/webquery/:
Gestion des domaines, des utilisateurs et des droits
Domaine et "Common Domain"
Common Domain étant le domaine créé par défaut.
Qu'est-ce qu'un domaine, un répertoire sur le serveur pour classer les documents. chaque domaine contient :
- un sous répertoire Reports dans lequel vous créerez des sous répertoires pour organiser vos requêtes
(on ne peut pas placer directement les requêtes dans Reports)
- un sous répertoire Other Files pour importer vos images et vos feuilles de style
Chaque domaine possède un nom en clair et un nom interne ou Href. Pour le voir demandez (clic droit) les propriétés
ici, UNTITLED pour Common Domain auquel on associe un profil de groupe MD ou MU, suivi du domaine
- MD pour associer un utilisateur administrateur de ce domaine
( les membres de MDUNTITLED ont le droit de créer des rapports)
- MU pour associer un utilisateur consommateur de ce domaine
( les membres de MUUNTITLED ont le droit de lancer les rapports existant)
Il est conseillé de créer vos domaines avec EXACTEMENT 8 caractères ( renommez les ensuite, si vous le désirez)
sinon, le système va :
- si vous saisissez moins de 8, compléter à 8 avec des caractères aléatoires
- générer un nom aléatoire si vous dépassez 8
Ce nom généré est alors moins pratique a manipuler ensuite
par exemple, si vous avez créé un domaine CMPTAQRY
1/ créez le profil MDCMPTAQRY (sans mot de passe)
2/ CHGUSRPRF .... GRPPRF(MDCMPTAQRY) ou SUPGRPPRF(MDCMPTAQRY)
Ceci n'est pas à faire pour un profil administrateur (MRADMIN) qui est le seul habilité à créer des domaines
Pour que des fichiers base de données soient accessibles, il faut
que les métadonnées aient été générées.
les métadonnées sont la représentation interne au produit de la structure et des caractéristiques des tables utilisables.
Cliquez droit sur un répertoire
IL y a trois adaptateurs d'installés (il est possible d'en acheter d'autre comme celui pemettant d'accèder à MSsql ou Oracle)
- DB2 Cli, c'est en fait l'accès SQL à la base de données, offrant aujourd'hui les meilleures performances
il est possible de se connecter à une autre base que la base locale (via DRDA)
Indiquez ensuite le nom DRDA (enregistré par WRKRDBDIRE, ici S270) et le nom de connexion pour DB2 Web Query
![]()
- Connexion Explicite, vous oblige à saisir lors de la configuration profil et mot de passe
- Passthru mot de passe, DB2 Web Query réutilise votre profil/mot de passe de connexion initial
- Sécurisé, DB2 Web Query essai d'utiliser votre profil/mot de passe Windows
DB2 Web Query , sait faire ensuite des jointures entre des tables venant de deux systèmes différents
(synonyme pointant sur une table locale et synonyme pointant sur une table distante). C'est une première !
- DB Héritage permet l'accès, via OPNQRYF, aux fichiers multi-membres.
- Query/400 permet de ré-utiliser vos Query (pas vos requêtes QM)
Cliquez sur un élément et demandez la création de synonyme
Pour DB2/Cli
Choisissez entre
- Tables, vues et autres objets, permettant l'accès aux objets base de données
- Tables (fichiers physiques)
- Vues (logiques créés par SQL mémorisant une requête SQL potentiellement complexe)
- Alias (autre nom pour un fichier, pouvant pointer sur un membre particulier)
- MQT (tables contenant le résultat d'une requête et pouvant être rafraîchie)
- Stored Procédure ou Procédure stockée
- External SQL Scripts ou scripts SQL stockés dans l'IFS
•Commencons par les objets SQL :
Indiquez une bibliothèque et un masque (LIKE SQL) pour constituer la liste des objets à sélectionner
Cochez "Avec clés étrangères" si vous avez mis en place l'intégrité référentielle, voir ci dessousSélectionnez les objets concernés et indiquez un préfixe (ou un suffixe) à attribuer.
Le préfixe semble être la meilleur solution, en effet,
la liste des objets pouvant être manipulés par un rapport est globale et classée par ordre alphabétique
![]()
la notion de préfixe (ici avec un _ ) permet de mieux classer cette liste
Et voilà
Quelques remarques sur cette partie :
1/ N'hésitez pas à créer des vues de façon à préparer la donnée , à la simplifier pour l'utilisateur/concepteur de rapports
Fonction(x) | Retourne ? | Exemple |
DAY(D) DAYOFMONTH(D) |
retourne la partie jour de D (doit être une date ou un écart AAAAMMJJ). |
DAY(DATCDE) |
MONTH(D) | retourne la partie mois de D (idem) |
|
YEAR(D) | Retourne la partie année de D (idem) | YEAR(current date - DATCDE) |
DAYOFYEAR(D) | retourne le n° de jour dans l'année (julien) | DAYOFYEAR(datdep) |
DAYOFWEEK(D) | retourne le N° de jour dans la semaine (1 = Dimanche, 2=Lundi, ...) |
DAYOFWEEK(ENTRELE) |
DAYOFWEEK_ISO(D) | retourne le N° de jour dans la
semaine (1 = Lundi, ...) |
DAYOFWEEK_ISO(ENTRELE) |
DAYNAME(d) | retourne le nom du jour de d (Lundi, Mardi, ...) |
DAYNAME(datcde) |
MONTHNAME(d) | retourne le nom du mois de d (Janvier, Février, ...) |
MONTHNAME(datcde) |
DAYS(D) | retourne le nbr de jours depuis 01/01/0001 | DAYS(datcde)- DAYS(datliv) |
QUARTER(D) | retourne le n° du trimestre | QUARTER(DATEFIN) |
WEEK_ISO(D) | retourne le n° de semaine (la semaine 1 est celle qui possède un JEUDI dans l'année.) |
WHERE |
CURDATE() | retourne la date en cours, comme CURRENT DATE | |
CURTIME() | retourne l'heure en cours, comme CURRENT TIME | |
LAST_DAYS(d) | retourne la date correspondant au dernier jour du mois. |
LAST_DAYS('2006-04-21') = 2006-04-30 |
ADD_MONTHS(d, nbr ) | ajoute un nbr de mois à une
date , si la date est au dernier jour du mois, la date calculée est aussi au dernier jour du mois |
ADD_MONTHS('2006-04-30' , 1) = 2006-05-31 |
NEXT_DAYS(d, 'day' ) | retourne le timestamp de la prochaine date ayant le jour demandé |
NEXT_DAYS('2006-12-31' , 'DIM') |
Exemple de vue (offrant 4 zones, une renommée, une utilisant une fonction date, un comptage)
Les autres sources possibles (scripts SQL, procédures) ainsi que le connecteur Query, représentent le résultat d'une requête.
Vous pouvez alors :
faire un rapport simple, pour afficher ce résultat- faire un rapport complexe (sélection, groupage) afin de réaliser à nouveau une requête sur ce résultat temporaire
•Scripts SQL (fichier stream dans l'IFS utilisant la convention d'appellation système [ le / ] )
![]()
indiquez le répertoire et l'extension du fichier (.SQL par défaut)
![]()
• Procédure cataloguée (appel à un programme avec SET RESULT SETS)
indiquez la bibliothèque où est enregistrée la procédure par CREATE PROCEDURE
![]()
Choisissez là :
Renseignez les paramètres en entrée, s'il le faut.
La procédure doit retourner un jeu de résultat (RESULT SETS) au client.
Si elle en retourne plusieurs, seul le premier est traité.
Autres connecteurs livrés de base :
Dans tous les cas de figure, un synonyme est représenté par deux fichiers (au moins) dans /QIBM/UserData/webquery/ibi/apps/baseapp
Par exemple :
FIELDNAME=ADRESSE, ALIAS=ADRESSE, USAGE=A60, ACTUAL=A60,
MISSING=ON, $ pour une zone ADRESSE
FIELDNAME est le nom utilisé par DB2 Web Query, vous pouvez le modifier (ou utiliser le produit optionnel WorkBench)
ALIAS est le nom de zone dans la base, n'y touchez pas !
Il va sans dire qu'il s'agit de copie d'information à un instant T, si la structure change vous devez régénérer le synonyme (Query particulièrement)
Supprimer ces deux fichiers, supprime le synonyme (attention il y a en 5 en tout pour un Query)
La version 1.1.2 et le niveau de correctif 4 apportent une nouvelle commande pour les synonymes
CRTWQSYN
Paramètres
- FILE nom du fichier ,nom générique (*) ou *ALL
- SCHEMA bibliothèque
- FILETYPE
- *ALL tous les fichiers base de données sont traités
- *TABLE seuls les fichiers physiques sont traités
- *VIEW seules les vues sont traitées
- *ALIAS Alias SQL
- *MQT tables matérialisées
- EXCLSYSFL
- *YES exclure les fichiers catalogues SQL
- *NO ne pas les exclure
- EXCLSRCPF
- *YES exclure les fichiers sources
- *NO ne pas les exclure
- PREFIX ajouter un préfixe au synonyme
- SUFFIX ajouter un suffixe au synonyme
- APPFLR répertoire dans lequel créé les synonymes
- FRNGKEYS
- *NO les synonymes des tables liées par contraintes ne sont pas générés
- *YES les synonymes des tables liées par contraintes sont générés
- QUALIB
- *YES le nom du schéma est mémorisé dans le synonyme
- *NO le nom du schéma n'est pas mémorisé dans le synonyme
- OPTION
- *NONE si le synonyme existe déjà, il n'est pas généré
- *REPLACE si le synonyme existe déjà, une nouvelle version est créée
- *REFRESH, si le synonyme existe déjà il est mis à jour, cela conserve les personnalisation que vous auriez pu faire.
- SHORTALIAS
- *NO le nom longs des colonnes est utilisé
- *YES le nom court est utilisé
(C) Volubis 2008