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

Interfaces de programmation Oracle Discussion :

[OCILIB] Adresse IP du serveur base de données


Sujet :

Interfaces de programmation Oracle

  1. #1
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut [OCILIB] Adresse IP du serveur base de données
    Bonjour,

    j'utilise la bibliothèque OCILIB pour accéder à une base de donnée Oracle.

    C'est une bibliothèque impeccable et très efficace.

    Ci-dessous un exemple de code de connexion à une base de données locale et ça marche parfaitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    OCI_Connection *cn = OCI_CreateConnection("DBV8", "system", "manager", OCI_SESSION_DEFAULT);
    Mais le problème est le suivant :

    Qu'est ce que je dois modifier pour se connecter à une base de données distantes avec un port bien déterminé (1521 ou autre) ?

    Autrement dit, comment spécifier les paramètres : adresse IP du serveur Oracle et aussi le port dans la fonction de connexion.

    Je vous remercie pour votre aide.

    Bien à vous.

  2. #2
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    Salut,

    OCILIB accepte toute les convention de nommage de service Oracle !

    On peut donc utiliser les mêmes chaines de connection que sous sql*plus

    Donc, OCI_CreateConnection() prend comme 1er paramètre le nom du service Oracle qui peut être :

    1 ==> un alias Oracle du tnsname.ora du client Oracle (si client Oracle "classique")

    Exemple d'un tnsname.ora

    ENV_PROD =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.56)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVICE_NAME = ENV_PROD)
    )
    )

    Dans ce cas, il faut fournir "ENV_PROD" à OCI_CreateConnection()

    2 ==> une chaine simplifiée du type [SERVEUR ou IP]:[PORT]/[SERVICE_NAME]

    Toujours à partir de l'exemple précédent , on peut passer à OCI_CreateConnection() :

    "192.168.0.56:1521/ENV_PROD"


    3 ==> une chaine complète de connexion complète comme celle du tnsname.ora

    Toujours à partir de l'exemple précédent , on peut passer à OCI_CreateConnection() la chaine suivante :

    "ENV_PROD =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.56)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVICE_NAME = ENV_PROD)
    )
    )"

    ==> il y aussi d'autres méthodes mais les 1 et 2 sont les plus courantes.

    A noter que si le client Oracle est un InstantClient, il faut utiliser la n°2
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  3. #3
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut
    Bonjour,

    Merci bien pour votre réponse. En fait j'ai essayé le code suivant mais sans résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cn = OCI_CreateConnection("192.168.7.105:1521/DBV8", "test", "test", OCI_SESSION_DEFAULT);
    Sachant que DBV8 est le nom de la base de données.

    Voici le message d'erreur exactement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ORA-06401: NETCMN : désignation de lecteur non valide
    Je vous remercie pour votre aide.

    Bien à vous

  4. #4
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    en lancant SQL*PLUS :

    SQL*Plus: Release 10.2.0.1.0 - Production on Jeu. Mars 6 09:54:53 2008

    Copyright (c) 1982, 2005, Oracle. All rights reserved.

    Entrez le nom utilisateur : test/test@192.168.7.105:1521/DBV8

    Ca fonctionne ? Car chez moi, avec ocilib et sql*plus ca fonctionne.
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  5. #5
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut
    toujours pas :-(

  6. #6
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut
    et même ça marche pas avec SQL*Plus

    est ce qu'il y a une config à faire pour que ça marche ?

  7. #7
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    Donc, si ca marche pas avec sqlplus, le soucis ne viens pas d'OCILIB !

    Bon, quel client Oracle as-tu sur ta machine ?
    quelle est la version du client et du serveur ?
    As tu un tnsname.ora de paramétré ?
    es tu sur un domaine ?
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  8. #8
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut
    Bon, moi j'ai installé sur ma machine un serveur Oracle 8i sous Windows et j'ai pas de client Oracle ni de tnsname.ora

    J'ai seulement configurer une base de données nommée : DBV8

    Merci pour vous.

  9. #9
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    que contient le listener.ora ?
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  10. #10
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut
    voici son contenu :

    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
    22
    23
    24
    25
    26
     
    # LISTENER.ORA Network Configuration File: C:\oracle\ora81\network\admin\listener.ora
    # Generated by Oracle configuration tools.
     
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.105)(PORT = 1521))
          )
        )
      )
     
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = C:\oracle\ora81)
          (PROGRAM = extproc)
        )
        (SID_DESC =
          (GLOBAL_DBNAME = DBV8)
          (ORACLE_HOME = C:\oracle\ora81)
          (SID_NAME = DBV8)
        )
      )

  11. #11
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    le test qui ne marche est effectué sur la même machine que celle ou est la base oracle ?

    Sur la machine ou tourne OCILIB, il faut un client Oracle (classique ou instant client)
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  12. #12
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut
    Oui, le test est dans la même machine où se trouve la base Oracle.

    Mais le client Oracle va servir à quoi exactement ?

    Bien à vous

  13. #13
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    une application cliente a besoin du client pour se connecter à un serveur qu'il soit local ou distant.

    L'installation "serveur" installe la couche OCI et SQL*NET (serveur) mais pas nécessairement les composant client SQL*NET (client) requis par une application cliente.

    Pourquoi tu ne veux pas installer la couche cliente (dont une bonne partie des composants sont déja installé par la couche serveur) ?
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  14. #14
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut
    non, je suis pas contre que j'installe un client Oracle, sauf que je savais pas que c'est indispensable pour se connecter à la base.

    Je vais l'installer tout de suite et je vous ferai signe pour les nouveautés

    Bien à vous

  15. #15
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut
    J'ai découverts que le logiciel client de base est déjà installé avec le serveur Oracle (sous windows).

    Là, qu'est ce que je dois faire comme config pour que je puisse utiliser la chaine de connexion test/test@192.168.7.105:1521/DBV8

    Bien à vous

  16. #16
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    dans ce cas, il doit y avoir un souci de config car sql*pus devrait accepter la connexion du type server:port/service

    Sinon il est possible (dans le même répertoire que le listener.ora) de créer un tnsnames.ora avec le contenu suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    DBV8 =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.105)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = DBV8)
        )
      )
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  17. #17
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut
    le fichier tnsnames.ora existe dans le même répertoire et voici son contenu :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    # TNSNAMES.ORA Network Configuration File: C:\oracle\ora81\NETWORK\ADMIN\tnsnames.ora
    # Generated by Oracle configuration tools.
     
    DBV8 =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = abdelkaoui)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = DBV8)
        )
      )
     
    INST1_HTTP =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = abdelkaoui)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVER = SHARED)
          (SERVICE_NAME = DBV8)
          (PRESENTATION = http://admin)
        )
      )
     
    EXTPROC_CONNECTION_DATA =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = abdelkaoui)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = DBV8)
        )
      )

  18. #18
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut
    autre chose, si je tape : test/test@DBV8

    --> ça marche avec SQL*PLUS

    Bien à vous

  19. #19
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    Puisque la machine dispose d'un tnsnames.ora, pour se connecter à un autre serveur, il faut ajouter un autre alias :

    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
    22
     
    [alias] =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = [serveur])(PORT = [port]))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = [service])
        )
      )
     
    EXEMPLE :
     
    DEV_ENV =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.23)(PORT = 1526))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = DEV_ENV)
        )
      )
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  20. #20
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut
    D'accord, mais je vois dans le fichier tnsnames.ora que l'alias pour la base de données DBV8 existe déjà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    DBV8 =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = abdelkaoui)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = DBV8)
        )
      )
    et malgré ça, je ne peux pas établir la connexion avec cette chaine de connexion : test/test@192.168.7.105:1521/DBV8 je ne peux le faire seulement avec cette chaine : test/test@DBV8

    Je vous remercie pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/08/2010, 09h52
  2. Réponses: 4
    Dernier message: 20/05/2010, 10h31
  3. [AC-2003] Problème perte connection serveur base de données
    Par JPaul94300 dans le forum Modélisation
    Réponses: 0
    Dernier message: 18/03/2009, 15h05
  4. [ Serveur base de données en VB ]
    Par Arkoze dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 02/06/2007, 22h43
  5. Réponses: 23
    Dernier message: 13/03/2007, 11h04

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