IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

Table AS400 sur oracle


Sujet :

Oracle

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Table AS400 sur oracle
    Bonjour

    j'utilise toad pour gerer ma base de donnée sous oracle. J'aimerai pouvoir me connecter sur une table AS400 pour avoir la possibilités d'avoir toutes les données attaquables par cet outils. J'ai paramétré une source de donnée odbc avec les donnees de l'as400 que j'ai appelé ficlgtr mais je n'arrive pas à faire le lien sur oracle et donc à la voir sur toad.

    Desolé de paraitre si nul mais merci de votre aide

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075

  3. #3
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 566
    Points
    19 566
    Billets dans le blog
    25
    Par défaut
    Utilisez-vous la Gateway Oracle pour AS400 ou tentez-vous une connexion directement de Toad à l'AS400 via ODBC ?

    Il ne me semble pas que cela fonctionne si aisément via Toad... ce n'est pas Access

  4. #4
    Expert Oracle confirmé

    Homme Profil pro
    Consultant Big Data
    Inscrit en
    Mars 2003
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant Big Data
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2003
    Messages : 448
    Points : 926
    Points
    926
    Par défaut
    Bonjour,

    J'ai justement une base de données 10gR2 sous Windows qui se connecte via DB Link à une base distante DB2, via l'ODBC.

    Je viens de migrer cette base de données :
    - en 11gR2 (11.2.0.2.0)
    - avec l'option RAC One Node et ASM
    - sur de nouveaux serveurs IBM tournant sous Red Hat Enterprise Linux v5.6

    Tout d'abord, pour votre information, jusqu'en 10g, la connexion par ODBC s'appelait HS (Heterogeneous Services), et depuis la 11g, a été renommée en Database Gateway for ODBC.

    Cela ne change pas grand chose, sauf que le Listener appellera un exécutable qui s'appelle HSODBC jusqu'en 10g, et DG4ODBC (Database Gateway For ODBC) en 11g.


    J'ai paramétré une source de donnée odbc avec les donnees de l'as400
    Je pars du même postulat que vous, à savoir que sur mon serveur Linux, j'ai créé un Datasource (que j'appelle DB2) qui pointe sur mon AS400 en utilisant le bon driver (dans mon cas "iSeries ODBC Driver For Linux").

    J'ai d'ailleurs testé ce Datasource via l'utilitaire isql.

    Votre but est donc de vous connecter depuis Toad sur votre base Oracle, et de là requêter sur DB2 via un DB Link que j'appelerai DB2, avec une requête du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from <ma_table>@DB2 ;

    Pour se faire, il y a 4 étapes à suivre :
    1) créer un Database Link sur votre base Oracle
    2) ajouter une entrée dans votre TNSNAMES.ORA
    3) ajouter un service gérant l'appel au composant HS au niveau du LISTENER.ORA
    4) créer un fichier de configuration qui permettra à l'exécutable HS de trouver votre Datasource et de se connecter à votre base DB2.

    1) Sur votre base Oracle, il faut créer le DB Link (public ou non) DB2, utilisant la chaîne de connexion DB2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE DATABASE LINK DB2 CONNECT TO <ID> IDENTIFIED BY <password> USING 'DB2' ;

    2) Il faut maintenant définir cette chaîne de connexion DB2 dans le fichier TNSNAMES.ORA de votre serveur Oracle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DB2 =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = <serveur_Oracle>)(PORT = <port_du_listener>))
        )
        (CONNECT_DATA =
          (SID = DB2)
        )
        (HS = OK)
      )
    A vous de renseigner le HOST avec le nom ou l'adresse IP de votre serveur Oracle, et le PORT avec le port d'écoute du Listener (souvent 1521 ou 1560).

    Noter ici HS=OK qui indique que notre base va se connecter via Heterogeneous Services. J'ai aussi indiqué DB2 comme SID, c'est-à-dire comme service que l'on va demander au Listener.

    Il faut donc maintenant configurer le Listener pour qu'il gère un service DB2.


    3) Modifier maintenant votre fichier LISTENER.ORA (toujours sur votre serveur Oracle), en rajoutant la section suivante (je suppose que votre Listener s'appelle LISTENER) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (PROGRAM = dg4odbc ou hsodbc)
          (SID_NAME = DB2)
          (ORACLE_HOME = <votre_ORACLE_HOME>)
        )
      )
    Comme je vous l'avais dit, si vous êtes en 11g, PROGRAM doit valoir dg4odbc.
    Sinon il doit valoir hsodbc.

    Vous trouverez ce programme sous le répertoire BIN de votre $Oracle_Home.
    A noter que sous Windows, même si les programmes portent une extension .exe à la fin, il ne faut pas spécifier ce .exe dans le LISTENER.ORA

    Et pour finir, j'ai spécifié DB2 comme SID_NAME. Cela veut dire qu'il va falloir créer un fichier qui s'appelera forcément initDB2.ora et qu'il faudra stocker sous $Oracle_Home/hs/admin

    Ce fichier est en fait le fichier de configuration de l'exécutable HS qui permet d'appeler le Datasource.


    4) Création du fichier initDB2.ora sous $ORACLE_HOME/hs/admin :

    Voici un exemple sous Windows avec une base 10gR2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    # This is a sample agent init file that contains the HS parameters that are
    # needed for an ODBC Agent. 
     
    #
    # HS init parameters
    #
    HS_FDS_CONNECT_INFO = DB2
    HS_FDS_TRACE_LEVEL = OFF
    C'est simple, et la variable HS_FDS_CONNECT_INFO indique le nom de la source de données (ici DB2).


    Voici le même fichier de configuration sous Linux avec ma base 11gR2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    # This is a sample agent init file that contains the HS parameters that are
    # needed for the Database Gateway for ODBC
     
    #
    # HS init parameters
    #
    HS_FDS_CONNECT_INFO = DB2
    HS_FDS_TRACE_LEVEL = OFF
    HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so
     
    #
    # ODBC specific environment variables
    #
    set ODBCINI=/etc/odbc.ini
     
     
    #
    # Environment variables required for the non-Oracle system
    #
    #set <envvar>=<value>
    Il y a 2 choses en plus :
    1) HS_FDS_SHAREABLE_NAME qui spécifie le chemin et le nom de la librairie pour ODBC. Attention, en 11gR2, l'exécutable DG4ODBC est en 64 bits, et réclame donc un Driver Manager 64 bits (d'ou le chemin lib64) ainsi que le driver iSeries installé en 64 bits.

    2) la variable ODBCINI qui spécifie le chemin et le nom du fichier des Datasources.

    Moi j'ai choisi de faire un Datasource système, c'est-à-dire visible par tous les users Unix. Du coup, il est forcément sous /etc et s'appelle ODBC.INI sous Linux.


    Voilà, bon courage. Moi j'ai mis la semaine pour comprendre le fonctionnement de Database Gateway, installer le bon driver iSeries, configurer tous les fichiers et faire marcher le bousin.



    Maintenant, j'ai à mon tour une question : ma configuration marche très bien sur 2 serveurs, où j'ai mis le nom du serveur dans chaque TNSNAMES.ORA.

    Mais en fait, ces 2 serveurs sont en cluster avec OGI (Oracle Grid Infrastructure), et ma base est en RAC One Node.

    Comme je le disais, mon DB Link fonctionne bien, même si je m'amuse à déplacer mon instance d'un noeud à un autre au sein de mon cluster, avec la commande RELOCATE.

    Maintenant, je souhaite indiquer dans les fichiers TNSNAMES.ORA non plus le nom de chaque noeud, mais le nom de mon cluster, pour faire plus propre, et pour passer par le serveur DNS.

    Et là, mon DB Link ne marche plus. J'ai l'erreur Oracle suivante :

    ORA-28545: erreur détectée par Net8 lors de la connexion à un agent
    Unable to retrieve text of NETWORK/NCR message 65535
    ORA-02063: précédant 2 lines de MAUD.AXACSA
    Et l'Alert.log m'iindique :

    HS: Unable to establish RPC connection to HS Agent...
    HS: ... Agent SID = (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=racd-scan)(PORT=1560)))(CONNECT_DATA=(SID=DB2))), NCR error = 65535 Unable to retrieve text of NETWORK/NCR message 65535
    HS: Unable to establish RPC connection to HS Agent...

    Selon vous, cette configuration peut-elle fonctionner ?

    J'ai du mal à comprendre pourquoi cela ne fonctionne pas. Dans le 1er cas, en spécifiant le nom du noeud, je sais que je contacte directement le SCAN Listener de mon noeud.

    Maintenant, en indiquant le nom de mon cluster, je vais passer par notre DNS qui va effectuer la résolution de nom, et fournir une des 3 adresses IP de nos SCAN Listener avec un algorithme de type Round-Robin.

    Et après, que se passe t-il ?

Discussions similaires

  1. [AC-2003] Problème migration table Access sur Oracle
    Par rebeke dans le forum VBA Access
    Réponses: 0
    Dernier message: 14/03/2012, 11h24
  2. Table DB2 sur AS400 vs SQL server
    Par annstger dans le forum DB2
    Réponses: 1
    Dernier message: 25/01/2012, 15h23
  3. script linux pour créer une table sur Oracle
    Par ledawa dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 19/08/2008, 11h29
  4. Récupérer une table de DB2 sur Oracle
    Par Sarah34 dans le forum Migration
    Réponses: 1
    Dernier message: 10/01/2008, 14h00
  5. Réponses: 17
    Dernier message: 15/05/2006, 12h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo