Installation de l'Oracle Transparent Gateway 10g pour DRDA

Fabien Celaia

- Titre : Installation de l'Oracle Transparent Gateway 10g pour DRDA

- Auteur : Fabien Celaia

- Parution : 17 juin 2006

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2013 Fabien Celaia. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Installation du logiciel

- III. Configuration

- III-A. Passerelle

- III-B. Réseau

- III-C. AS400

- III-D. Initialisation Oracle

- IV. Test

I - Introduction

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 particulier (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.
Contrairement aux OTG citées ci-dessus, elle se place en sous-système sur la partie OS400.
Elle est envisageable dans trois cas de figure.

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

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

III - 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 sur lequel s'installe la passerelle

MONAS400.Mondomaine.ch

Nom réseau de l'AS400

DRDA

Login sur l'AS400, et bibliothèque associée

DRDAPWD

Mot de passe sur l'AS400

III-A - Passerelle

Dans le répertoire %ORACLE_HOME%\tg4drda\admin, créez un fichier initMONAS400.ora contenant les informations suivantes :

#####################

# Paramètres HS

#####################

FDS_CLASS=TG4DRDA_DB2MVS

HS_COMMIT_POIMT_STRENGTH=255

HS_NLS_DATE_FORMAT=YYYY-MM-DD

HS_LANGUAGE=AMERICAN_AMERICA.WE8ISOISO8859P15

HS_RPC_FETCH_REBLOCKING=off

HS_RPC_FETCH_SIZE=32768

HS_RPC_FETCH_ROWS=20

#####################

# Paramètres DRDA

#####################

DRDA_CONNECT_PARM=MONAS400.Mondomaine.ch:446

DRDA_REMOTE_DB_NAME=MONAS400

DRDA_PACKAGE_COLLID=DRDA

DRDA_PACKAGE_NAME=G2DRSQL

DRDA_PACKAGE_CONSTOCKEN=A92617CB3FE54701

DRDA_READ_ONLY=FALSE

DRDA_RECOVERY_USERID=DRDA

DRDA_RECOVERY_PASSWORD=DRDAPWD

DRDA_ISOLATION_LEVEL=CS

Assurez-vous bien que le port DRDA est le 446 (par défaut) et qu'il est ouvert pour votre machine si un pare-feu est présent.

III-B - Réseau

Toutes les modifications suivantes sont à faire dans votre répertoire %ORACLE_HOME

%\network\admin

Ajoutez une entrée pour la passerelle dans votre fichier tnsnames.ora :

MONAS400 = (DESCRIPTION=

(ADDRESS=

(PROTOCOL=TCP)

(HOST=MaMachine)

(PORT = 1521))

(CONNECT_DATA=(SID=MonAS400))

(HS=)

)

Ajoutez dans la SID_LIST de votre fichier listener.ora la ligne suivante, puis redémarrez ledit listener :

(SID_DESC= (SID_NAME=MONAS400)(ORACLE_HOME = C:\oracle\O10R2) (PROGRAM = g4drsrv)

III-C - AS400

Créez l'utilisateur en vous connectant en tant que SYSADM (ou faites-le faire par votre administrateur AS400)

CRTUSRPRF USRPRF(DRDA) PASSWORD(******) INLMNU(*SIGNOFF) TEXT('Utilisateur OTG')

Créez deux bibliothèques

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.

III-D - Initialisation Oracle

Connectez-vous en tant que system à votre base Oracle et exécutez les deux 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), la 2e génère les packages nécessaires dans la bibliothèque DRDA de l'AS400.

Dans le cas où, 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 ;

IV - 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é !