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

Sql*Plus Oracle Discussion :

Utiliser SQL*Plus dans un script Shell


Sujet :

Sql*Plus Oracle

  1. #1
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut Utiliser SQL*Plus dans un script Shell
    Bonjour,

    J'essaie d'exécuter un vieux script Shell qui utilise SQL*Plus.

    Extrait du script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    sqlplus user/mdp <<EOF
    begin
    remplir_ldif_personnels;
    end;
    /
     
    create or replace table ldif_personnels_tri as 
    select * from ldif_personnels order by nbr,dn;
     
    EOF
    Erreur rencontrée à l'exécution du script :
    SQL*Plus: Release 11.2.0.1.0 Production on Ven. Juin 7 17:39:00 2013

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

    ERROR:
    ORA-01034: ORACLE not available
    ORA-27101: shared memory realm does not exist
    Linux Error: 2: No such file or directory
    ID de processus : 0
    ID de session : 0, Numéro de série : 0


    Entrez le nom utilisateur : Entrez le mot de passe :
    ERROR:
    ORA-01005: aucun mot de passe indiqué ; connexion refusée


    Entrez le nom utilisateur : Entrez le mot de passe :
    ERROR:
    ORA-01005: aucun mot de passe indiqué ; connexion refusée


    SP2-0157: impossible de se CONNECTER à ORACLE après 3 essais, sortie de SQL*Plus
    Pourtant, quand je lance successivement chaque commande du script dans la console Linux, l'ensemble s'exécute correctement.

    Le script date de Oracle 9i et je l'ai adapté à ma config pour certaines parties.

    Qu'est-ce qui coince ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Je dirais à première vue que vous n'avez pas (ou mal) défini la variable d'environnement ORACLE_SID.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Pourtant j'ai bien cette commande avant le morceau qui lance SQL*Plus :
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Oui, mais si cette variable n'est pas exportée, ce n'est pas bon, car elle ne sera pas visible dans l'environnement du processus d'exécution de SQL*Plus.

    Ce qu'il faut, c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export ORACLE_SID=nom_instance
    Et pour vérifier :
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Pomalaix Voir le message
    Ce qu'il faut, c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export ORACLE_SID=nom_instance
    Oui, c'est bien ce que j'ai dans le script.

    Et pour vérifier :
    Par contre, effectivement, j'ai une autre valeur sur ORACLE_SID.

    Pourtant, en exportant ORACLE_SID manuellement (en dehors du script), j'obtiens bien la bonne valeur par env | grep ORACLE !

    EDIT :
    Dans le script original, qui je le rappelle date du temps de Oracle 9i, il y avait des variables d'environnement définies mais qui sont vides ou ont d'autres valeurs dans ma config Oracle 11gr2 et qui ne m'ont pas semblé utile ou que j'ai eu peur de modifier :
    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
    # export ORACLE_TERM=hp
    # export ORACLE_DOC=$HOME/odoc
    #export ORACLE_BASE=/Bases/oracle
    #export ORACLE_HOME=/Bases/oracle/product/11.2.0/dbhome_1
    #export NLS_LANG=FRENCH_FRANCE.WE8ISO8859P1
    # export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
    # export ORACLE_HELP=$ORACLE_HOME/help/admin/resource
    #export PS1='ORACLE:$HOST:${PWD}'
    # export ORACLE_BASE=/Bases/oracle
    # export DEF_INSTALL=TRUE
    # export ORA_CSM_MODE=line
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib
    # export OBK_HOME=$ORACLE_HOME/obackup
    # export ORA_NLS32=$ORACLE_HOME/ocommon/nls/admin/data
    # export ORACLE_DOC=$ORACLE_BASE/odoc
    # export ORACLE_PATH=.:$ORACLE_HOME/bin:$ORACLE_HOME/obackup/bin:/usr/bin:/usr/ccs/bin
    # export TMPDIR=/var/tmp
    # export EDITOR=emacs
    export ORACLE_SID=formgfc
    # export JAVA_HOME=/Bases/opt/j2sdk1.4.2_06
    export JAVA_HOME=/Bases/oracle/product/11.2.0/dbhome_1/jdk
    # PATH=$PATH:$ORACLE_HOME/bin:.:/usr/local/bin:/Bases/home/oracle/bin
    # export PATH
    ORACLE_TERM, ORACLE_DOC, ORA_NLS33, ORACLE_HELP, DEF_INSTALL, ORA_CSM_MODE, LD_LIBRARY_PATH, OBK_HOME, ORA_NLS32, TMPDIR, EDITOR sont vides
    ORACLE_BASE est déjà défini ainsi.
    ORACLE_HOME, NLS_LANG, PS1 ont une autre valeur.

    EDIT 2 :
    J'ai ajouté des echos dans le script et les variables exportées ont bien la bonne valeur à l'intérieur du script.
    Apparemment, ce n'est pas ça qui pose problème.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    J'avance mais ce n'est pas encore ça...

    J'ai exporté quelques variables de plus dans mon script :
    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
    export ORACLE_BASE=/Bases/oracle
    export ORACLE_HOME=/Bases/oracle/product/11.2.0/dbhome_1
    export NLS_LANG=FRENCH_FRANCE.AL32UTF8 #WE8ISO8859P15
    export ORA_NLS33=/Bases/oracle/product/11.2.0/dbhome_1/nls/data
    export ORACLE_SID=formgfc
    export PS1='\[\033[01;32m\]\u@\h\[\033[01;31m\] [${ORACLE_SID}]\[\033[01;36m\] \w \$\[\033[00m\]'
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib
    export JAVA_HOME=/Bases/oracle/product/11.2.0/dbhome_1/jdk
    sqlplus "user/mdp" <<EOF
    begin
    remplir_ldif_personnels;
    end;
    /
     
    create table ldif_personnels_tri as
    select * from ldif_personnels order by nbr,dn;
     
    EOF
    Et je suis maintenant confronté à cette erreur :
    Error 6 initializing SQL*Plus
    SP2-0667: Message file sp1<lang>.msb not found
    SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
    Quand je passe toutes les commandes du script une à une, ça fonctionne !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Bonjour,
    J'ai été confronté au même type de probleme de SQL plus qui refusait de tourner.
    Juste une idée (peut être stupide): je crois les fichiers sp1xx.msb sont specifiques du langage (NLS_LANG).
    Je vois que ce parametre est défini comme france/french.
    Est ce que dans ton $oracle_home/sqlplus/mesg tu as un fichier sp1fr.msb ou similaire?
    Moi dans mon cas je n'avais que la version us...

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/05/2014, 14h49
  2. Réponses: 7
    Dernier message: 18/07/2009, 01h28
  3. Pb utilisation SQL*Plus dans SQL Developer
    Par Spheros dans le forum Sql Developer
    Réponses: 1
    Dernier message: 03/08/2007, 11h37
  4. ORACLE Lancer un script pl-sql dans un script shell
    Par solange44 dans le forum SQL
    Réponses: 5
    Dernier message: 30/07/2007, 12h21
  5. Réponses: 4
    Dernier message: 20/04/2007, 12h05

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