ONYX - 9.0 - Utilisation - Accès aux bases de données

Différence entre versions

De MappingDoc
(Configuration de plusieurs instances sous Linux)
(DB2 UDB (DB2 sur Windows))
 
(40 révisions intermédiaires par 4 utilisateurs non affichées)
Ligne 13 : Ligne 13 :
 
===Généralités===
 
===Généralités===
  
La configuration se trouve dans le fichier mapping.conf, et est accessible via l’interface d’administration ONYX Servet : Menu d’administration / Gestion de la configuration / MAPREPORT CONFIG
+
La configuration se trouve dans le fichier mapping.conf, et est accessible via l’interface d’administration ONYX Server : Menu d’administration / Gestion de la configuration / MAPREPORT CONFIG
  
Une fois la configuration effectuée, il est possible de la tester en lançant la commande suivante, permettant d’obtenir la liste des tables de la base de données :
+
Une fois la configuration effectuée, il est possible de la tester via la commande map_036 comme suit :
  
#map_036 -mode :1 -database:<nom base ou bibliothèque>
+
Afficher la liste des tables
 +
#map_036 -mode:1 -database:[nom base ou bibliothèque]
  
 +
Si la liste des tables de la base de données spécifiée au niveau du paramètre <code>-database</code> s'affiche correctement, c'est que la configuration est bonne et prête à être utilisée.
  
 
Exemples :  
 
Exemples :  
  
#map_036 -mode:1 -database:mapout
+
#map_036 -mode:1 -database:reporting
#map_036 -mode:1 -database:QGPL
+
#map_036 -mode:1 -database:QGPL
  
 +
Pour tester l'exécution d'une requête SQL, il suffit d'utiliser le paramètre <code>-mode:7</code> comme suit :
 +
#map_036 -mode:7 -cmd="select * from [database].[table]"
  
 +
Exemple :
 +
#map_036 -mode:7 -cmd="select * from reporting.customers"
  
 
===Configuration de plusieurs instances sous Linux===
 
===Configuration de plusieurs instances sous Linux===
Pour utiliser une autre instance d'oracle, il faut faire :
+
Pour utiliser une autre instance d'Oracle, il faut faire :
 
  export MAPREPORT_SERVERADDRESS=nom_de_l_autre_instance
 
  export MAPREPORT_SERVERADDRESS=nom_de_l_autre_instance
 
  export MAPREPORT_SERVERUSER=nom_du_user_oracle
 
  export MAPREPORT_SERVERUSER=nom_du_user_oracle
Ligne 40 : Ligne 46 :
  
 
         <nowiki>[MAPREPORT_SERVERTYPE] oracle
 
         <nowiki>[MAPREPORT_SERVERTYPE] oracle
[MAPREPORT_SERVERADDRESS] nom_de_l_instance_ORCL_par_exemple
+
  [MAPREPORT_SERVERADDRESS] nom_de_l_instance_ORCL_par_exemple
[MAPREPORT_SERVERUSER] nom_du_user_oracle
+
  [MAPREPORT_SERVERUSER] nom_du_user_oracle
[MAPREPORT_SERVERPASSWORD] pwd_du_user_oracle</nowiki>
+
  [MAPREPORT_SERVERPASSWORD] pwd_du_user_oracle</nowiki>
  
 
Puis faire <code>export MAPPING_PATH=/etc/mapping/mapping.conf_bis  </code> puis lancer le maprunrpt
 
Puis faire <code>export MAPPING_PATH=/etc/mapping/mapping.conf_bis  </code> puis lancer le maprunrpt
  
==Configurations spécifiques==
+
==Les différents types de configuration==
  
  
Ligne 52 : Ligne 58 :
  
  
==== Configuration d'une source de données ODBC====
+
====Configuration d'une source de données ODBC====
  
 
Sous Windows, allez dans le panneau de configuration
 
Sous Windows, allez dans le panneau de configuration
Ligne 59 : Ligne 65 :
 
La nouvelle source de données doit être créée dans l’onglet « Sources de données système », afin qu’elle soit utilisable en ligne de commande, mais également par tous les processus Mapping lancés en service.
 
La nouvelle source de données doit être créée dans l’onglet « Sources de données système », afin qu’elle soit utilisable en ligne de commande, mais également par tous les processus Mapping lancés en service.
  
+
[[Fichier:OX S odbc-windows.png|centré|sans_cadre|420x420px]]
 
 
  
 
Cliquez sur Ajouter
 
Cliquez sur Ajouter
Ligne 66 : Ligne 71 :
 
Sélectionner le driver désiré.
 
Sélectionner le driver désiré.
  
 +
 +
=====Exemple de configuration ODBC pour une liaison IBM I (AS400) :=====
  
 +
Si ce n'est pas déjà fait, il faut télécharger et installer le driver ODBC '''"IBM i Access ODBC Driver"''' à partir du site IBM ACS (IBM i Access Client Solutions). Le driver est présent dans le package des applications pour Windows "ACS Windows App Pkg English (64bit)".
  
 +
Lien du site valable en mai 2020 : https://www.ibm.com/support/pages/ibm-i-access-client-solutions
 +
:- Downloads for IBM i Access Client Solutions
 +
:- Se connecter et/ou créer un compte si nécessaire
 +
:- Accepter la licence
 +
:- Télécharger le package "ACS Windows App Pkg English (64bit)"
  
 +
Une fois le téléchargement du package effectué, l'installation se fait en lançant "Image64a\Setup.exe".
  
 
+
Ensuite, ajouter un nouveau connecteur ODBC basé sur le driver "IBM i Access ODBC Driver".
 
 
 
 
 
 
 
=====Exemple de configuration ODBC pour une liaison IBM I (AS400) :=====
 
 
 
 
   
 
   
 +
[[Fichier:OX S ODBC-Iseries.png|centré|sans_cadre|700x700px]]
 +
<u>Nom de source de données</u> : Nom libre permettant d’identifier la configuration ODBC
  
Nom de source de données : Nom libre permettant d’identifier la configuration ODBC
+
<u>Système</u> : Adresse IP ou nom DNS du serveur IBM i
 
 
Système : Adresse IP ou nom DNS du serveur IBM i
 
  
 
Le profile utilisateur de connexion n’est pas à définir à ce niveau. Il sera renseigné directement dans la configuration Mapping (mapping.conf)
 
Le profile utilisateur de connexion n’est pas à définir à ce niveau. Il sera renseigné directement dans la configuration Mapping (mapping.conf)
Ligne 87 : Ligne 95 :
 
Attention : dans l’onglet « Serveur », il faut spécifier une bibliothèque par défaut. Cette dernière doit être existante sur le système spécifié.
 
Attention : dans l’onglet « Serveur », il faut spécifier une bibliothèque par défaut. Cette dernière doit être existante sur le système spécifié.
  
+
[[Fichier:OX S ODBC-iseries1.png|centré|sans_cadre|644x644px]]
  
  
 
En cas de problématique liée à des PF avec un CCSID à 65535, il peut être nécessaire d’activer la conversion Ad hoc :
 
En cas de problématique liée à des PF avec un CCSID à 65535, il peut être nécessaire d’activer la conversion Ad hoc :
  
+
====Configuration de MAPPING avec un lien ODBC====
 
 
 
 
 
 
====Configuration de MAPPING Aavec un lien ODBC====
 
  
 
Exemple de mapping.conf, section MAPREPORT CONFIG :
 
Exemple de mapping.conf, section MAPREPORT CONFIG :
  
[MAPREPORT_SERVERTYPE] odbc
+
[MAPREPORT_SERVERTYPE] odbc
[MAPREPORT_SERVERADDRESS] nom_de_l_instance_(AS400 par_exemple)
+
[MAPREPORT_SERVERADDRESS] nom_de_l_instance_(AS400 par_exemple)
[MAPREPORT_SERVERUSER] profile utilisateur pouvant se connecter à la base de données
+
[MAPREPORT_SERVERUSER] profile utilisateur pouvant se connecter à la base de données
[MAPREPORT_SERVERPASSWORD] mot de passe de l’utilisateur
+
[MAPREPORT_SERVERPASSWORD] mot de passe de l’utilisateur
 
 
  
  
=====TTester la configuration en ligne de commande=====
+
=====Tester la configuration en ligne de commande=====
  
 
Lister les tables de la base d’une base de données : #map_036 -mode:1
 
Lister les tables de la base d’une base de données : #map_036 -mode:1
Ligne 118 : Ligne 121 :
  
 
Exemple : #map_036 -mode:5 -database:QGPL -table:TABLE1
 
Exemple : #map_036 -mode:5 -database:QGPL -table:TABLE1
 +
  
 
Exécuter une requête : #map_036 -mode:5
 
Exécuter une requête : #map_036 -mode:5
  
Exemple : #map_036 -mode:5 -database:mapout "-cmd:select * from QGPL.TABLE1"
+
Exemple : #map_036 -mode:5 -database:QGPL "-cmd:select * from TABLE1"
 
 
 
 
  
 
===ORACLE sous Linux===
 
===ORACLE sous Linux===
  
  
====COonfiguration====
+
====Configuration====
 
+
[MAPREPORT_SERVERTYPE]   oracle
[MAPREPORT_SERVERTYPE] oracle
+
[MAPREPORT_SERVERADDRESS] nom_de_l_instance_ORCL_par_exemple
[MAPREPORT_SERVERADDRESS] nom_de_l_instance_ORCL_par_exemple
+
[MAPREPORT_SERVERUSER]   nom_du_user_oracle
[MAPREPORT_SERVERUSER] nom_du_user_oracle
+
[MAPREPORT_SERVERPASSWORD]   pwd_du_user_oracle
[MAPREPORT_SERVERPASSWORD] pwd_du_user_oracle
+
[ORACLE_HOME]   /u01/app/oracle/product/9.0.1
[ORACLE_HOME] /u01/app/oracle/product/9.0.1
 
  
 
Il faut créer dans de dossier « bin » de Mapping (par défaut /apps/mapping/bin), un lien sur libclntsh.sl qui se nomme liboracle.sl
 
Il faut créer dans de dossier « bin » de Mapping (par défaut /apps/mapping/bin), un lien sur libclntsh.sl qui se nomme liboracle.sl
Ligne 143 : Ligne 144 :
 
#ln -s /u01/app/oracle/product/9.0.1/lib32/libclntsh.sl.9.0 liboracle.sl
 
#ln -s /u01/app/oracle/product/9.0.1/lib32/libclntsh.sl.9.0 liboracle.sl
  
 
 
====Message d'erreur====
 
====Message d'erreur====
  
Si vous avez un problème pour la bibliothèque, contrôler [LIB_PATH] /apps/mapping/bin
+
Si vous avez un problème pour la bibliothèque, contrôler <code>[LIB_PATH] /apps/mapping/bin </code>
  
Si le message suivant apparaît "Error OCILogon - Error while trying to retrieve text for error ORA-12154", il faut définir la variable d'environnement ORACLE_HOME :  
+
Si le message suivant apparaît "Error OCILogon - Error while trying to retrieve text for error ORA-12154", il faut définir la variable d'environnement <CODE>ORACLE_HOME</code> :  
  
 
dans le .profile de l'utilisateur lançant le report (mapadmin ou nobodyma) :
 
dans le .profile de l'utilisateur lançant le report (mapadmin ou nobodyma) :
export ORACLE_HOME=/u01/app/oracle/product/9.0.1
+
export ORACLE_HOME=/u01/app/oracle/product/9.0.1
  
 
ou dans la configuration de mapping.conf ajouter
 
ou dans la configuration de mapping.conf ajouter
[ORACLE_HOME] 01/app/oracle/product/9.0.1
+
[ORACLE_HOME] 01/app/oracle/product/9.0.1
  
Si vous avez des problèmes de caractères, vérifier que la variable d’environnement NLS_LANG est correctement définie : NLS_LANG=french_france.WE8ISO8859P15
+
Si vous avez des problèmes de caractères, vérifier que la variable d’environnement <code>NLS_LANG</code> est correctement définie : <code>NLS_LANG=french_france.WE8ISO8859P15</code>
  
  
 
====Informations utiles sur ORACLE====
 
====Informations utiles sur ORACLE====
 
 
Si vous avez des problèmes :
+
En cas de souci:
 +
 
 +
Le profil administrateur d'oracle est souvent : '''oracle'''
  
Le profil administrateur d'oracle est souvent : oracle
+
Il faut contrôler les variables d’environnement d’Oracle par la commande "set | grep ORACLE"
 +
 
 +
La réponse doit être
 +
ORACLE_BASE=/u01/app/oracle
 +
ORACLE_DOC=/u01/app/oracle/product/9.0.1/doc
 +
ORACLE_HOME=/u01/app/oracle/product/9.0.1
 +
ORACLE_SID=orcl
  
Il faut contrôler les variables d’environnement d’Oracle par la commande "set | grep ORACLE"
 
La réponse doit être
 
ORACLE_BASE=/u01/app/oracle
 
ORACLE_DOC=/u01/app/oracle/product/9.0.1/doc
 
ORACLE_HOME=/u01/app/oracle/product/9.0.1
 
ORACLE_SID=orcl
 
 
 
Le démarrage d'Oracle se fait de la manière suivante (sous le profil oracle, doit être sous SQLPLUS )
 
Le démarrage d'Oracle se fait de la manière suivante (sous le profil oracle, doit être sous SQLPLUS )
sqplplus /nolog
+
sqplplus /nolog
connect SYS/change_on_install as SYSDBA
+
connect SYS/change_on_install as SYSDBA
startup
+
startup
exit
+
exit
 
 
 
Le démarrage du listener d'Oracle se fait par " lsnrctl start" sous oracle (Ne doit pas être sous SQLPLUS), ce qui permet la connexion depuis une machine différente.
 
Le démarrage du listener d'Oracle se fait par " lsnrctl start" sous oracle (Ne doit pas être sous SQLPLUS), ce qui permet la connexion depuis une machine différente.
 
 
Test de connexion sous un utilisateur autre que oracle :
 
  
"sqlplus user:pwd" se connecte en local
+
<u>Test de connexion sous un utilisateur autre que oracle</u> :
 +
 
 +
"sqlplus user:pwd" se connecte en local
  
 
Pour tester la connexion par le listner (méthode de connexion utilisée par MapReport) :
 
Pour tester la connexion par le listner (méthode de connexion utilisée par MapReport) :
  
"sqlplus user:pwd@INSTANCE"
+
"sqlplus user:pwd@INSTANCE"
 +
 
  
Creation d'un utilisateur :
+
<u>Création d'un utilisateur</u> :
 +
"create user map_user IDENTIFIED BY map_user_pwd;"
 +
"grant connect,resource to map_user;"
  
"create user map_user IDENTIFIED BY map_user_pwd;"
 
"grant connect,resource to map_user;"
 
  
Donner l'autorisation d'utiliser une table d'un autre utilisateur :
+
<u>Donner l'autorisation d'utiliser une table d'un autre utilisateur</u> :
 +
"grant SELECT on autre_user.table_autre_user to map_user;"
  
"grant SELECT on autre_user.table_autre_user to map_user;"
 
 
 
Donne les tables accessibles du user connecté : "select TABLE_NAME from user_tables;"
+
<u>Donne les tables accessibles du user connecté</u> :"select TABLE_NAME from user_tables;"
 
 
Voir les erreurs : "show errors;"
+
 
+
<u>Voir les erreurs</u> : "show errors;"
Execution de la procedure : "EXEC MAPROCEDURE;"
+
 
 
 
Auto-connexion sans user/login : sqlplus alexis/alexis@ORCL
+
<u>Exécution de la procédure</u> :"EXEC MAPROCEDURE;"
 
 
Liste des procédures disponibles : "SELECT OBJECT_NAME FROM USER_PROCEDURES;"
 
  
Suppression d'une procédure : "DROP PROCEDURE MAPROCEDURE;"
 
 
 
Création de la procédure :
+
<u>Auto-connexion sans user/login</u> : sqlplus alexis/alexis@ORCL
  
CREATE OR REPLACE PROCEDURE MAPROCEDURE AS
 
BEGIN
 
INSERT INTO MATABLE (MYFLOAT) VALUES(1.23);
 
END;
 
  
RUN MAPROCEDURE;
+
<u>Liste des procédures disponibles</u> : "SELECT OBJECT_NAME FROM USER_PROCEDURES;"
  
  
CREATE OR REPLACE PROCEDURE MAPROCEDUREINOUT (valeurin IN NUMBER, valeurout OUT NUMBER) AS
+
<u>Suppression d'une procédure</u> : "DROP PROCEDURE MAPROCEDURE;"
BEGIN
+
valeurout := 2 * valeurin;
+
END;
+
<u>Création de la procédure</u> :
 +
CREATE OR REPLACE PROCEDURE MAPROCEDURE AS
 +
BEGIN
 +
INSERT INTO MATABLE (MYFLOAT) VALUES(1.23);
 +
END;
 +
RUN MAPROCEDURE;
 +
CREATE OR REPLACE PROCEDURE MAPROCEDUREINOUT (valeurin IN NUMBER, valeurout OUT NUMBER) AS
 +
BEGIN
 +
valeurout := 2 * valeurin;
 +
END;
 +
RUN MAPROCEDUREINOUT;
  
RUN MAPROCEDUREINOUT;
 
  
Création de la procédure select :
+
<u>Création de la procédure select</u> :
+
CREATE OR REPLACE PROCEDURE MAPROCEDURESELECT (p_cursor in out types.cursorType) AS
CREATE OR REPLACE PROCEDURE MAPROCEDURESELECT (p_cursor in out types.cursorType) AS
+
BEGIN
BEGIN
+
open p_cursor for SELECT * FROM MATABLE;
open p_cursor for SELECT * FROM MATABLE;
+
END; .
END;
+
RUN MAPROCEDURESELECT;
.
 
RUN MAPROCEDURESELECT;
 
 
Exécution d’une procédure retournant une valeur :
 
variable c refcursor
 
exec MAPROCEDURESELECT ( :c )
 
print c
 
 
 
variable c NUMBER
+
exec MAPROCEDURINOUT ( 2 , :c )
+
<u>Exécution d’une procédure retournant une valeur</u> :
print c
+
variable c refcursor
 +
exec MAPROCEDURESELECT ( :c )
 +
print c
 +
variable c NUMBER
 +
exec MAPROCEDURINOUT ( 2 , :c )
 +
print c
  
 
 
Utilisation des procédures dans MapReport
+
<u>Utilisation des procédures dans MapReport</u>
 
 
*Cas d'une procédure qui renvoie une table, à mettre dans une table de type SQL dans REPORT, avec pour description d'utilisation.
 
*Cas d'une procédure qui renvoie une table, à mettre dans une table de type SQL dans REPORT, avec pour description d'utilisation.
SQL "BEGIN myprocedure(:mycursor); END;"  
+
SQL "BEGIN myprocedure(:mycursor); END;"  
  
 
!! Attention le mot clé :mycursor est réservé.
 
!! Attention le mot clé :mycursor est réservé.
 
  
 
*Cas d'une procédure qui renvoie une valeur :
 
*Cas d'une procédure qui renvoie une valeur :
 
+
DB.MAVALEUR = SQL "BEGIN myfunc(12); END;"   
DB.MAVALEUR = SQL "BEGIN myfunc(12); END;"   
 
 
 
 
*Cas d'une procédure qui renvoie plusieurs valeurs :
 
*Cas d'une procédure qui renvoie plusieurs valeurs :
 
+
PARAM ( $DB.RESULTAT , $DB.RESULTAT2 ) SQL "BEGIN MAPROCEDUREINOUT" ( $TRIE.ID , ":param1 , :param2 ) ; END;"
PARAM ( $DB.RESULTAT , $DB.RESULTAT2 ) SQL "BEGIN MAPROCEDUREINOUT" ( $TRIE.ID , ":param1 , :param2 ) ; END;"
 
 
 
 
 
  
 
===MYSQL===
 
===MYSQL===
  
  
====Procédure d'installation de MYSQL sous LINUX====
+
====Procédure d'installation de MYSQL sous LINUX====
 
 
Sous root,
 
Sous root,
 +
 
Télécharger la version de MySQL pour votre plateforme
 
Télécharger la version de MySQL pour votre plateforme
 
+
#groupadd mysql
#groupadd mysql
+
#useradd -g mysql mysql
#useradd -g mysql mysql
+
#cd /usr/local
#cd /usr/local
+
#gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
#gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
+
#ln -s full-path-to-mysql-VERSION-OS mysql
#ln -s full-path-to-mysql-VERSION-OS mysql
+
#cd mysql
#cd mysql
+
#scripts/mysql_install_db
#scripts/mysql_install_db
+
#chown -R root  .
#chown -R root  .
+
#chown -R mysql data
#chown -R mysql data
+
#chgrp -R mysql .
#chgrp -R mysql .
+
#bin/safe_mysqld --user=mysql &
#bin/safe_mysqld --user=mysql &
 
  
 
Demander à votre administrateur d'ajouter dans les scripts de démarrage de votre machine "bin/safe_mysqld --user=mysql &"
 
Demander à votre administrateur d'ajouter dans les scripts de démarrage de votre machine "bin/safe_mysqld --user=mysql &"
Ligne 288 : Ligne 284 :
 
====Configuration====
 
====Configuration====
  
Sous Linux :
+
<u>Sous Linux</u> :
  
Ajouter le fichier libstaticmysql.so en version 32 bits dans le dossier « bin » de Mapping Processing Server
+
Ajouter le fichier libstaticmysql.so en version 32 bits dans le dossier « bin » d'ONYX Server <code>[MAPREPORT_SERVERTYPE] mysqlstatic</code>
[MAPREPORT_SERVERTYPE] mysqlstatic
 
  
Sous Windows :
+
<u>Sous Windows</u> :
  
Ajouter le fichier libmysql.dll en version 32 bits dans le dossier « Applications » de Mapping Processing Server
+
Ajouter le fichier libmysql.dll en version 32 bits dans le dossier « Applications » de Mapping ONYX Server <code>[MAPREPORT_SERVERTYPE] mysql </code>
[MAPREPORT_SERVERTYPE] mysql
 
  
 
Indépendamment de la plateforme :
 
Indépendamment de la plateforme :
  
[MAPREPORT_SERVERADDRESS] 127.0.0.1
+
[MAPREPORT_SERVERADDRESS] 127.0.0.1
[MAPREPORT_SERVERPORT] 3306  
+
[MAPREPORT_SERVERPORT] 3306  
[MAPREPORT_SERVERUSER] root
+
[MAPREPORT_SERVERUSER] root
[MAPREPORT_SERVERPASSWORD] ********
+
[MAPREPORT_SERVERPASSWORD] ********
 +
 
 +
 
 +
====Informations utiles sur MYSQL====
 +
 
 +
<u>Démarrage du serveur MySQL</u> :
 +
cd /usr/local/mysql
 +
bin/safe_mysqld --user=mysql &
 +
 
 +
 
 +
<u>Arrêt du Serveur</u> :
 +
cd /usr/local/mysql/bin
 +
./mysqladmin shutdown
 +
 
 +
 
 +
<u>Lancement d'une session utilisateur</u> :
 +
cd /usr/local/mysql/bin
 +
./mysql
 +
 
  
 +
<u>Pour lister les databases</u> :
 +
show databases;
  
  
====Informations utiles sur MYSQL====
+
<u>Pour utiliser une base</u> :
 +
use MADATABASE;
 +
 
 +
 
 +
<u>Pour lister les tables</u> :
 +
 
 +
show tables;
  
Démarrage du serveur MySQL :
 
cd /usr/local/mysql
 
bin/safe_mysqld --user=mysql &
 
  
Arrêt du Serveur :
+
<u>Pour voir les informations sur une table</u> :
cd /usr/local/mysql/bin
+
describe tables;
./mysqladmin shutdown
 
  
Lancement d'une session utilisateur
 
cd /usr/local/mysql/bin
 
./mysql
 
  
Pour lister les databases :
+
===DB2 UDB (DB2 sur Windows)===
 +
Il est possible de connecter un serveur Mapping à une base de données DB2 UDB via une configuration ODBC.
  
show databases;
+
Pour cela, se référer au chapître sur la configuration ODBC.
  
Pour utiliser une base :
+
Particularités : en cas d'invocation d'un service Mapping par WebService SOAP via Apache, il faut ajouter une ligne dans le fichier httpd.conf (apache), dans le bloc <VirtualHost> correspondant au serveur Mapping, afin d'exporter la variable d'environnement %SystemDrive% :
  
use MADATABASE;
+
SetEnv SystemDrive "C:"
  
Pour lister les tables :
+
''Remplacer éventuellement C: par la lettre de lecteur correspond au système.
  
show tables;
 
  
Pour voir les informations sur une table :
+
Exemple de bloc dans le fichier httpd.conf avec cette nouvelle ligne :  
  
describe tables;
+
ServerName mapping-server
 +
Listen 8002
 +
<VirtualHost *:8002>
 +
        '''SetEnv SystemDrive "C:"'''
 +
        DocumentRoot "C:\Mapping\MappingServer\MapHTTPServer"
 +
        ScriptAlias /cgi-bin/ "C:\Mapping\MappingServer\MapHTTPServer\cgi-bin\"
 +
        <Directory "C:\Mapping\MappingServer\MapHTTPServer">
 +
              AuthType Basic
 +
              AuthName "Identification"
 +
              AuthBasicProvider file
 +
              AuthUserFile "C:\Mapping\MappingServer\MapHTTPServer\.htpasswd"
 +
              AuthGroupFile "C:\Mapping\MappingServer\MapHTTPServer\.htgroup"
 +
              Require valid-user
 +
              Options None
 +
        </Directory>
 +
</VirtualHost>

Version actuelle datée du 24 juillet 2020 à 15:12

Introduction

Cette documentation décrit les différentes configurations Mapping possibles permettant d’accéder à des bases de données.

Une fois la configuration effectuée au niveau de la configuration générale de Mapping, il est possible de faire des requêtes à partir de M-Connect, M-Designer, ou encore du Workflow.

Certaines bases de données sont accessibles nativement depuis Mapping, c’est le cas d’Oracle sous Unix et MySQL. Pour les autres bases de données, il est nécessaire de passer par une configuration ODBC.


Configuration générale

Généralités

La configuration se trouve dans le fichier mapping.conf, et est accessible via l’interface d’administration ONYX Server : Menu d’administration / Gestion de la configuration / MAPREPORT CONFIG

Une fois la configuration effectuée, il est possible de la tester via la commande map_036 comme suit :

Afficher la liste des tables

#map_036 -mode:1 -database:[nom base ou bibliothèque]

Si la liste des tables de la base de données spécifiée au niveau du paramètre -database s'affiche correctement, c'est que la configuration est bonne et prête à être utilisée.

Exemples :

#map_036 -mode:1 -database:reporting
#map_036 -mode:1 -database:QGPL

Pour tester l'exécution d'une requête SQL, il suffit d'utiliser le paramètre -mode:7 comme suit :

#map_036 -mode:7 -cmd="select * from [database].[table]"

Exemple :

#map_036 -mode:7 -cmd="select * from reporting.customers"

Configuration de plusieurs instances sous Linux

Pour utiliser une autre instance d'Oracle, il faut faire :

export MAPREPORT_SERVERADDRESS=nom_de_l_autre_instance
export MAPREPORT_SERVERUSER=nom_du_user_oracle
export MAPREPORT_SERVERPASSWORD=pwd_du_user_oracle

puis lancer le maprunrpt.

ou Dupliquer le fichier /etc/mapping/mapping.conf en /etc/mapping/mapping.conf_bis

Modifier dans /etc/mapping/mapping.conf_bis

       [MAPREPORT_SERVERTYPE]		oracle
   	[MAPREPORT_SERVERADDRESS] 	nom_de_l_instance_ORCL_par_exemple
   	[MAPREPORT_SERVERUSER]		nom_du_user_oracle
   	[MAPREPORT_SERVERPASSWORD]	pwd_du_user_oracle

Puis faire export MAPPING_PATH=/etc/mapping/mapping.conf_bis puis lancer le maprunrpt

Les différents types de configuration

Configuration ODBC (Windows)

Configuration d'une source de données ODBC

Sous Windows, allez dans le panneau de configuration Outil d’administration / Sources de données (ODBC)

La nouvelle source de données doit être créée dans l’onglet « Sources de données système », afin qu’elle soit utilisable en ligne de commande, mais également par tous les processus Mapping lancés en service.

OX S odbc-windows.png

Cliquez sur Ajouter

Sélectionner le driver désiré.


Exemple de configuration ODBC pour une liaison IBM I (AS400) :

Si ce n'est pas déjà fait, il faut télécharger et installer le driver ODBC "IBM i Access ODBC Driver" à partir du site IBM ACS (IBM i Access Client Solutions). Le driver est présent dans le package des applications pour Windows "ACS Windows App Pkg English (64bit)".

Lien du site valable en mai 2020 : https://www.ibm.com/support/pages/ibm-i-access-client-solutions

- Downloads for IBM i Access Client Solutions
- Se connecter et/ou créer un compte si nécessaire
- Accepter la licence
- Télécharger le package "ACS Windows App Pkg English (64bit)"

Une fois le téléchargement du package effectué, l'installation se fait en lançant "Image64a\Setup.exe".

Ensuite, ajouter un nouveau connecteur ODBC basé sur le driver "IBM i Access ODBC Driver".

OX S ODBC-Iseries.png

Nom de source de données : Nom libre permettant d’identifier la configuration ODBC

Système : Adresse IP ou nom DNS du serveur IBM i

Le profile utilisateur de connexion n’est pas à définir à ce niveau. Il sera renseigné directement dans la configuration Mapping (mapping.conf)

Attention : dans l’onglet « Serveur », il faut spécifier une bibliothèque par défaut. Cette dernière doit être existante sur le système spécifié.

OX S ODBC-iseries1.png


En cas de problématique liée à des PF avec un CCSID à 65535, il peut être nécessaire d’activer la conversion Ad hoc :

Configuration de MAPPING avec un lien ODBC

Exemple de mapping.conf, section MAPREPORT CONFIG :

[MAPREPORT_SERVERTYPE]		odbc
[MAPREPORT_SERVERADDRESS] 	nom_de_l_instance_(AS400 par_exemple)
[MAPREPORT_SERVERUSER]		profile utilisateur pouvant se connecter à la base de données
[MAPREPORT_SERVERPASSWORD]	mot de passe de l’utilisateur


Tester la configuration en ligne de commande

Lister les tables de la base d’une base de données : #map_036 -mode:1

Exemple : #map_036 -mode:1 -database:QGPL


Lister le contenu d’une table : #map_036 -mode:5

Exemple : #map_036 -mode:5 -database:QGPL -table:TABLE1


Exécuter une requête : #map_036 -mode:5

Exemple : #map_036 -mode:5 -database:QGPL "-cmd:select * from TABLE1"

ORACLE sous Linux

Configuration

[MAPREPORT_SERVERTYPE]	  oracle
[MAPREPORT_SERVERADDRESS]	nom_de_l_instance_ORCL_par_exemple
[MAPREPORT_SERVERUSER]	  nom_du_user_oracle
[MAPREPORT_SERVERPASSWORD]	  pwd_du_user_oracle
[ORACLE_HOME]	   /u01/app/oracle/product/9.0.1

Il faut créer dans de dossier « bin » de Mapping (par défaut /apps/mapping/bin), un lien sur libclntsh.sl qui se nomme liboracle.sl

Attention : lors de la rédaction de cette documents, Mapping étant compilé en 32bits, il faut impérativement utiliser la version 32bits de cette lib

  1. cd /apps/mapping/bin
  2. ln -s /u01/app/oracle/product/9.0.1/lib32/libclntsh.sl.9.0 liboracle.sl

Message d'erreur

Si vous avez un problème pour la bibliothèque, contrôler [LIB_PATH] /apps/mapping/bin

Si le message suivant apparaît "Error OCILogon - Error while trying to retrieve text for error ORA-12154", il faut définir la variable d'environnement ORACLE_HOME :

dans le .profile de l'utilisateur lançant le report (mapadmin ou nobodyma) :

export ORACLE_HOME=/u01/app/oracle/product/9.0.1

ou dans la configuration de mapping.conf ajouter

[ORACLE_HOME]	01/app/oracle/product/9.0.1

Si vous avez des problèmes de caractères, vérifier que la variable d’environnement NLS_LANG est correctement définie : NLS_LANG=french_france.WE8ISO8859P15


Informations utiles sur ORACLE

En cas de souci:

Le profil administrateur d'oracle est souvent : oracle

Il faut contrôler les variables d’environnement d’Oracle par la commande "set | grep ORACLE"

La réponse doit être

ORACLE_BASE=/u01/app/oracle
ORACLE_DOC=/u01/app/oracle/product/9.0.1/doc
ORACLE_HOME=/u01/app/oracle/product/9.0.1
ORACLE_SID=orcl

Le démarrage d'Oracle se fait de la manière suivante (sous le profil oracle, doit être sous SQLPLUS )

sqplplus /nolog
connect SYS/change_on_install as SYSDBA
startup
exit

Le démarrage du listener d'Oracle se fait par " lsnrctl start" sous oracle (Ne doit pas être sous SQLPLUS), ce qui permet la connexion depuis une machine différente.


Test de connexion sous un utilisateur autre que oracle :

"sqlplus user:pwd" se connecte en local

Pour tester la connexion par le listner (méthode de connexion utilisée par MapReport) :

"sqlplus user:pwd@INSTANCE"


Création d'un utilisateur :

"create user map_user IDENTIFIED BY map_user_pwd;"
"grant connect,resource to map_user;"


Donner l'autorisation d'utiliser une table d'un autre utilisateur :

"grant SELECT on autre_user.table_autre_user to map_user;"


Donne les tables accessibles du user connecté :"select TABLE_NAME from user_tables;"


Voir les erreurs : "show errors;"


Exécution de la procédure :"EXEC MAPROCEDURE;"


Auto-connexion sans user/login : sqlplus alexis/alexis@ORCL


Liste des procédures disponibles : "SELECT OBJECT_NAME FROM USER_PROCEDURES;"


Suppression d'une procédure : "DROP PROCEDURE MAPROCEDURE;"


Création de la procédure :

CREATE OR REPLACE PROCEDURE MAPROCEDURE AS
BEGIN
INSERT INTO MATABLE (MYFLOAT) VALUES(1.23);
END;
RUN MAPROCEDURE;
CREATE OR REPLACE PROCEDURE MAPROCEDUREINOUT (valeurin IN NUMBER, valeurout OUT NUMBER) AS
BEGIN
valeurout := 2 * valeurin;
END;
RUN MAPROCEDUREINOUT;


Création de la procédure select :

CREATE OR REPLACE PROCEDURE MAPROCEDURESELECT (p_cursor in out types.cursorType) AS
BEGIN
open p_cursor for SELECT * FROM MATABLE;
END;				.
RUN MAPROCEDURESELECT;


Exécution d’une procédure retournant une valeur :

variable c refcursor 
exec MAPROCEDURESELECT ( :c )
print c	
variable c NUMBER
exec MAPROCEDURINOUT ( 2 , :c )
print c


Utilisation des procédures dans MapReport

  • Cas d'une procédure qui renvoie une table, à mettre dans une table de type SQL dans REPORT, avec pour description d'utilisation.
SQL "BEGIN myprocedure(:mycursor); END;" 

!! Attention le mot clé :mycursor est réservé.

  • Cas d'une procédure qui renvoie une valeur :
DB.MAVALEUR = SQL "BEGIN myfunc(12); END;"  
  • Cas d'une procédure qui renvoie plusieurs valeurs :
PARAM ( $DB.RESULTAT , $DB.RESULTAT2 ) SQL "BEGIN MAPROCEDUREINOUT" ( $TRIE.ID , ":param1 , :param2 ) ; END;"

MYSQL

Procédure d'installation de MYSQL sous LINUX

Sous root,

Télécharger la version de MySQL pour votre plateforme

#groupadd mysql
#useradd -g mysql mysql
#cd /usr/local
#gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
#ln -s full-path-to-mysql-VERSION-OS mysql
#cd mysql
#scripts/mysql_install_db
#chown -R root  .
#chown -R mysql data
#chgrp -R mysql .
#bin/safe_mysqld --user=mysql &

Demander à votre administrateur d'ajouter dans les scripts de démarrage de votre machine "bin/safe_mysqld --user=mysql &"


Configuration

Sous Linux :

Ajouter le fichier libstaticmysql.so en version 32 bits dans le dossier « bin » d'ONYX Server [MAPREPORT_SERVERTYPE] mysqlstatic

Sous Windows :

Ajouter le fichier libmysql.dll en version 32 bits dans le dossier « Applications » de Mapping ONYX Server [MAPREPORT_SERVERTYPE] mysql

Indépendamment de la plateforme :

[MAPREPORT_SERVERADDRESS] 	127.0.0.1
[MAPREPORT_SERVERPORT]		3306 
[MAPREPORT_SERVERUSER]		root
[MAPREPORT_SERVERPASSWORD]	 ********


Informations utiles sur MYSQL

Démarrage du serveur MySQL :

cd /usr/local/mysql
bin/safe_mysqld --user=mysql &


Arrêt du Serveur :

cd /usr/local/mysql/bin
./mysqladmin shutdown


Lancement d'une session utilisateur :

cd /usr/local/mysql/bin
./mysql


Pour lister les databases :

show databases;


Pour utiliser une base :

use MADATABASE;


Pour lister les tables :

show tables;


Pour voir les informations sur une table :

describe tables;


DB2 UDB (DB2 sur Windows)

Il est possible de connecter un serveur Mapping à une base de données DB2 UDB via une configuration ODBC.

Pour cela, se référer au chapître sur la configuration ODBC.

Particularités : en cas d'invocation d'un service Mapping par WebService SOAP via Apache, il faut ajouter une ligne dans le fichier httpd.conf (apache), dans le bloc <VirtualHost> correspondant au serveur Mapping, afin d'exporter la variable d'environnement %SystemDrive% :

SetEnv SystemDrive "C:"

Remplacer éventuellement C: par la lettre de lecteur correspond au système.


Exemple de bloc dans le fichier httpd.conf avec cette nouvelle ligne :

ServerName mapping-server
Listen 8002
<VirtualHost *:8002>
       SetEnv SystemDrive "C:"
       DocumentRoot "C:\Mapping\MappingServer\MapHTTPServer"
       ScriptAlias /cgi-bin/ "C:\Mapping\MappingServer\MapHTTPServer\cgi-bin\"
       <Directory "C:\Mapping\MappingServer\MapHTTPServer">
              AuthType Basic
              AuthName "Identification"
              AuthBasicProvider file
              AuthUserFile "C:\Mapping\MappingServer\MapHTTPServer\.htpasswd"
              AuthGroupFile "C:\Mapping\MappingServer\MapHTTPServer\.htgroup"
              Require valid-user
              Options None
       </Directory>
</VirtualHost>