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

Langage Perl Discussion :

Connection à une base de donnée oracle


Sujet :

Langage Perl

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 426
    Par défaut Connection à une base de donnée oracle
    Bonjour,

    Je voudrais me connecter à une base de données Oracle distante, j'ai écrit ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $dbp = DBI->connect('dbi:Oracle:host=10.0.0.97;db=mydb;sid=ORCL;port=1521',  'tss', 'tss', { RaiseError => 1, AutoCommit => 0 });
    voila la trace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DBI connect('host=10.0.0.97;db=tss;sid=ORCL;port=1521','tss',...) failed: ERROR OCINlsEnvironmentVariableGet(OCI_NLS_CHARSET_ID) Check ORACLE_HOME and NLS settings etc. at C:/Documents and Settings/morsi/workspace/perlProject/database.pl line 5
    MERCI de m'aider

  2. #2
    Membre chevronné Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Par défaut
    Bonjour,

    Je ne suis pas un pro dans la connexion à une base de données mais je dirais que le message d'erreur t'indique que les variables d'environnement ORACLE_HOME et NLS sont manquantes.

    En regardant la page du module Oracle (http://search.cpan.org/~pythian/DBD-...1.23/Oracle.pm) j'ai trouvé des infos (ainsi que sur certains autres sites.

    Voici une solution qui n'est peut être pas bonne ou la meilleure mais sait-on jamais en ajoutant cela dans un bloc BEGIN:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    BEGIN {
    $ENV{'NLS_LANG'} = 'american';
    $ENV{'ORACLE_HOME'} = 'path_to_oracle';
    }
    Le ORACLE_HOME est le répertoire où trouver oracle et apparemment le NLS est la langue. Donc en mettant tes informations peut être que cela marchera. Tu peux aussi configurer ces variables d'environnement directement sur ton système.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 426
    Par défaut
    Merci, mais, ma base de données Oracle n'est pas installé dans mon localhost, comment faire dans ce cas concernant ORACLE_HOME

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    La variable ORACLE_HOME n'indique pas où est installée la base de données, elle indique où sont installés les fichiers nécessaires pour se connecter, ce qu'on appelle couramment le "client oracle".

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 426
    Par défaut
    quel sont en perl les fichiers nécessaires pour se connecter à la base de données Oracle pour y mettre ORACLE_HOME?

    Merci

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Le client Oracle est indépendant de Perl, il se télécharge sur le site d'Oracle comme par exemple ici pour le client léger (Instant Client):
    http://www.oracle.com/technology/sof...ent/index.html
    Mais si le poste peut déjà se connecter à Oracle indépendamment de Perl, par exemple avec SQL*Plus, c'est que le client Oracle est déjà installé.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 426
    Par défaut
    oui, le poste peut se connecter à Oracle via isqlplus , mais c'est un accès à distance, c'est à dire que le client Oracle est installé sur une autre machine serveur, dans ce cas, comment procéder pour définir l'ORACLE_HOME?

    Merci

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    le client Oracle est installé sur une autre machine serveur
    A ma connaissance l'utilisation du module Perl DBD::Oracle n'est pas possible dans ce cas de figure. Il faut installer un client Oracle sur la machine qui fait tourner le Perl.

  9. #9
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Par défaut
    Bonjour,

    Je ne suis pas un pro dans la connexion à une base de données.
    Mais avec ce bout de code je pense qu'il marche .


    #!/usr/bin/perl


    $oracle_server = "10.0.0.97";
    $oracle_sid = "tss";
    $oracle_port = "1521";
    $oracle_user = "tss";
    $oracle_password = "tss";

    use DBI;
    use DBD::Oracle;

    my $dbh =
    DBI->connect(
    "dbi:Oracle:host=$oracle_server;port=$oracle_port;sid=$oracle_sid",
    $oracle_user, $oracle_password )
    or die "Impossible de se connecter à la base Oracle : " . DBI->errstr;

    print "connect : $dbh\n";

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 426
    Par défaut
    Merci, mais, j'ai encore le même problème

  11. #11
    Membre chevronné Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Par défaut
    Je ne sais pas si cela peut fonctionner de la sorte : mais si tu montes sur ta machine locale le répertoire distant où se trouve oracle et que tu définisse ton ORACLE_HOME sur ce répertoire ??

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 426
    Par défaut
    Merci Beniou pour la réponse, c'est déja tenté sans succés, mon collègue au travail aouissaouinizar2 à réussie de se connecter via son pc sans même définir les variables NLS_LANG ORACLE_HOME , je compte savoir pourquoi

Discussions similaires

  1. Comment se connecter à une base de données oracle avec Talend?
    Par shark84 dans le forum Développement de jobs
    Réponses: 8
    Dernier message: 16/09/2011, 11h13
  2. se connecter à une base de donnée oracle
    Par mounim_taoufik dans le forum Windows Forms
    Réponses: 2
    Dernier message: 30/12/2009, 21h50
  3. Réponses: 3
    Dernier message: 24/04/2008, 10h13
  4. Réponses: 6
    Dernier message: 08/11/2006, 15h05
  5. Réponses: 4
    Dernier message: 22/12/2005, 12h21

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