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 :

Plantage SQLPlus sous Unix


Sujet :

Sql*Plus Oracle

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Plantage SQLPlus sous Unix
    Bonjour à tous,
    Je suis un newbie en base de donnée et j'ai donc un grand besoin de votre aide
    Je travaille sur un script ksh sous Unix AIX qui range des données dans une base Oracle (Version 10.2.0.5). Le script créé un fichier .sql contenant ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    set echo on
    set serveroutput on
    spool /log/trlegd/asp/Verif_Version.lst
     BEGIN
      UPDATE R_PAR SET DTVALEUR=SYSDATE
         WHERE NOM='VERSION' AND NVALEUR=20060406 ;
      END;
    spool off
    exit
    Il lance ce fichier avec SQL+ et là c'est le drame !
    Tout plante. La commande utilisée pour lancer est de cette forme :
    sqlplus login/pass@domain @fichier.sql

    Le fichier existe et contient bien le code donné plus haut.
    Je perds totalement la main (même pas moyen de faire un ctrl+c).
    Pourriez-vous m'indiquer si une de ces lignes serait susceptible de générer ce plantage plutôt gênant ?

    De temps en temps mon script repart (en s'ennervant un peu sur le clavier ) et il se termine avec un erreur : error 45 initializing SQL*Plus Internal error. Je ne sais pas si ça a un rapport avec le plantage de SQL+ ou pas, car dans mon script je fais appel à des commande SQL+ plusieurs fois.

    Je vous remercie d'avance pour votre aide !

  2. #2
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2012
    Messages : 1
    Points : 4
    Points
    4
    Par défaut Suggestion
    Bonjour,

    tu pourrais par exemple tester en ajoutant le symbole / après le end.

    Mieux vaut tard que jamais

  3. #3
    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,

    Ghalia21 a raison, il faut un / à la fin du bloc PL/SQL délimité par BEGIN et END, afin que SQL*Plus quitte le mode d'édition PL/SQL, et exécute ce bloc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    set echo on
    set serveroutput on
    spool /log/trlegd/asp/Verif_Version.lst
     BEGIN
      UPDATE R_PAR SET DTVALEUR=SYSDATE
         WHERE NOM='VERSION' AND NVALEUR=20060406 ;
      END;
      /
    spool off
    exit
    Et puis j'ajouterais qu'avec un COMMIT, ce serait mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    set echo on
    set serveroutput on
    spool /log/trlegd/asp/Verif_Version.lst
     BEGIN
      UPDATE R_PAR SET DTVALEUR=SYSDATE
         WHERE NOM='VERSION' AND NVALEUR=20060406 ;
      COMMIT ;
      END;
      /
    spool off
    exit
    Et puis pour finir, comme il s'agit d'un simple Update, pas besoin d'utiliser un bloc PL/SQL pour cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    set echo on
    set serveroutput on
    spool /log/trlegd/asp/Verif_Version.lst
     
    UPDATE R_PAR SET DTVALEUR=SYSDATE WHERE NOM='VERSION' AND NVALEUR=20060406 ;
    COMMIT ;
     
    spool off
    exit

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/04/2011, 11h19
  2. [Kylix] Kylix sous UNIX
    Par gRRosminet dans le forum EDI
    Réponses: 3
    Dernier message: 09/11/2004, 17h07
  3. Montage sur Debian de AFPS sous UNIX
    Par Harbaingan dans le forum Administration système
    Réponses: 2
    Dernier message: 14/01/2004, 22h03
  4. Chargement dynamique de DLL sous Unix
    Par Willou dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 18/12/2002, 18h25

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