ONYX - 9.0 - Utilisation

Accès aux bases de données

De MappingDoc
Révision datée du 2 mai 2019 à 13:25 par Izarai (discussion | contributions) (Généralités)

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 Servet : 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 :

  1. map_036 -mode :1 -database:<nom base ou bibliothèque>

Exemples :

  1. map_036 -mode:1 -database:mapout
  2. map_036 -mode:1 -database:QGPL

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


Configuration spécifique

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.



Cliquez sur Ajouter

Sélectionner le driver désiré.






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

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é.



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 Aavec 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


TTester 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:mapout "-cmd:select * from QGPL.TABLE1"


ORACLE sous Linux

COonfiguration

[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

Si vous avez des problèmes :

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"

Creation 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;"

Execution de la procedure : "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 » de Mapping Processing Server [MAPREPORT_SERVERTYPE] mysqlstatic

Sous Windows :

Ajouter le fichier libmysql.dll en version 32 bits dans le dossier « Applications » de Mapping Processing 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;