Il est parfois nécessaire de récupérer des données hétérogènes depuis une instance Oracle. Pour ce faire, Oracle (Software) propose le produit Oracle Transparent Gateway (OTG).
Celui-ci permet d'émuler une table Oracle lorsque celle-ci est en fait une table distante hétérogène.
Il existe pour diverses passerelles de ce type:
Oracle Transparent Gateway pour Sybase Adaptive Server Enterprise
Oracle Transparent Gateway pour Microsoft SQL Server
Oracle Transparent Gateway pour Teradata
Oracle procedural Gateway pour APPC
Oracle Transparent Gateway pour DRDA (TCP et SNA)
Oracle Procedural Gateway pour WebSphere MQ
Oracle Procedural Gateway pour VisualWorkbench for WebSphere MQ
Elles réagissent toutes selon le même principe.
Nous allons ici détailler l'installation et la configuration de Oracle Transparent Gateway pour DRDA via TCP, car elle a l'avantage de coupler les problèmes liés à un système d'exploitation particuliers (l'OS400) et ceux de Net8 (pour l'accès via TCP-IP).
Cas particulier de l'I5-OS
Dans le cas tout à fait particulier de l'AS400, à noter qu'une autre gateway Oracle existe.
Contraitement aux OTG citées ci-dessus, elle se place en sous-système sur la partie OS400.
Elle est envisageable dans 3 cas de figures.
Lorsque les instances Oracle devant s'y connecter sont très nombreuses et que les instances AS400 sont peu nombreuses
Lorsque de la puissance est disponible sur l'AS400 et pas sur les instances Oracle
Lorsque les administrateurs AS400 sont plus brillants que les DBA... on peut rêver...
Installation du logiciel
Il n'est pas obligatoire d'installer la passerelle sur le même Oracle_Home que celui de l'instance Oracle qui va l'utiliser. Néanmoins, pour de raisons de configuration du listener, nous y gagnerons en simplification.
Suivons donc l'installation ci-dessous.
Configuration
Déterminez les noms que vous allez utiliser
Nom de cet exemple
Vos paramètres
Description
ORCL
Instance base Oracle
C:\Oracle\O10R2 %ORACLE_HOME%
Oracle Home
MaMachine
Nom du host surlequel s'installe la passerelle
MONAS400.Mondomaine.ch
Nom réseau de l'AS400
DRDA
Login sur l'AS400, et librairie associée
DRDAPWD
Mot de passe sur l'AS400
Passerelle
Dans le répertoire %ORACLE_HOME%\tg4drda\admin, créez un fichier initMONAS400.ora contenant les informations suivantes:
CRTLIB LIB(DRDA) TYPE(*PROD) TEXT('Librairie pour OTG')
CRTLIB LIB(OTGDB2) TYPE(*PROD) TEXT('Librairie pour métamodèle OTG')
Créez la table de commit à 2 phases via STRSQL
CREATE TABLE DRDA/ORACLE2PC
(LTRANID VARCHAR(22),
GTRANID VARCHAR(128) FOR BIT DATA,
STATE VARCHAR(16),
ADVICE VARCHAR(8),
TRANCMT VARCHAR(254),
FAILTIME DATE,
DBUSER VARCHAR(18),
OSTERM VARCHAR(254),
OSPID VARCHAR(254),
OSPROGID VARCHAR(254))
Jouez aussi le script %ORACLE_HOME%\tg4drda\install\as400\g4ddvw52.sql (pour la V5R2 ou V5R3) si vous souhaitez bénéficier de métadonnées, mais ceci est optionnel.
Initialisation Oracle
Connectez-vous en tant que system à votre base Oracle et exécutez les 2 commandes suivantes:
SQL> CREATE PUBLIC DATABASE LINK MONAS400 CONNECT TO DRDA IDENTIFIED BY ****** USING 'MONAS400' ;
SQL> exec GTW$_BIND_PKG@MONAS400 ;
La première commande crée le lien (nommé MONAS400), le 2ème génère les packages nécessaires dans la librairie DRDA de l'AS400.
Dans le cas ou, contrairement à notre exemple, le database link n'est pas similaire au host, veiller à avoir un GLOBAL_NAMES=FALSE, via la commande
SQL> ALTER SYSTEM|SESSION SET GLOBAL_NAMES=FALSE ;
Test
Toujours connecté à votre base de données, exécutez l'ordre suivant.
SQL> SELECT count(*) FROM qsys2.systables@MONAS400 ;
Si cet ordre vous retourne un nombre plutôt qu'une erreur... c'est gagné !