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