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

Applications et environnements graphiques Discussion :

Crontab et sqlplus


Sujet :

Applications et environnements graphiques

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 72
    Points
    72
    Par défaut Crontab et sqlplus
    Bonjour,

    j'essaie de programmer le lancement d'un batch une fois par semaine, avec cron.

    Voici une partie du contenu du ksh :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #Recuperation de la liste des schemas e la base
    sqlplus -s "${user}/${pwd}@${BASE} as sysdba" << EOF >/dev/null
    set heading off;
    set pagesize 1000;
    set feedback off;
    set trimspool on;
    spool users.txt;
    select username from all_users order by username asc;
     
    spool off;
     
    EOF
    Lorsque j'exécute ce script, pas de problème.

    Voici la ligne que j'ai mis en faisant crontab -e :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    21 15 * * * [ -f /user/.profile ] && . /dossier/repertoire/script.ksh
    Le batch est bien lancé, mais sqlplus retourne un code 1. Ce qui n'est pas le cas lorsque je lance manuellement le script.

    J'ai bien compris que Cron ne chargeait pas l'environnement de l'utilisateur, j'ai donc rajouter le [ -f /user/.profile ] dans la ligne de programmation.

    Mais sans plus de résultat.

    Pouvez-vous m'expliquer pourquoi sqlplus retourne 1 ?

    Merci.

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    l'environnent crontab n'est pas un environnement shell tout simplement ...
    c'est à ton script de charger tout ce qu'il faut comme variables d'environnement...

    notamment ton .profile

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 72
    Points
    72
    Par défaut
    Le problème c'est que justement, même en chargeant le .profile dans mon ksh, ca ne fonctionne pas ; j'ai toujours un code retour égal à 1.

  4. #4
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    le fichier de spool est bien alimenté ? ça pourrait être un problème de droit à ce niveau par exemple qui coince.

    poses un set -x/+x autour de ta procédure sqlplus pour "voir" ce qui coince.
    parce que là c'est clairement pas un problème de crontab mais de "script ouvert depuis la crontab".

    puisqu'il se déclenche.


    ou encore c'est cette merde là :
    . /dossier/repertoire/script.ksh
    au lieu de
    /chemin/reel/dossier/repertoire/script.ksh qui pose problème peut être.

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 72
    Points
    72
    Par défaut
    Alors, dans le ksh, j'ai ajouté les lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PATH=${PATH}:/oracle/product/10.2/bin:/usr/bin/
    . /user/.profile_commun
    ORACLE_HOME=/oracle/product/10.2
    export ORACLE_HOME
    J'ai modifié le crontab pour avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    44 17 * * * /sauvegarde/script.ksh > cronlog.txt
    Et en activant le debug, j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    + trap err_report $LINENO "recupListeSchema" ERR sqlplus -s 
    + user/pwd@BASE as sysdba 0< /tmp/sh1421340.1 1> /dev/null 
    + err_report 3 recupListeSchema

  6. #6
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 72
    Points
    72
    Par défaut
    Bon, au final, je l'ai fait par élimination.

    Puis dans mon ksh, j'ai fait un export de toutes les variables existantes. En faisant comme ça, ça fonctionne.

    Après, j'ai retiré les variables au fur et à mesure. Au final, il me reste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    export LANG="en_US"
    export LD_LIBRARY_PATH="/oracle/product/10.2/lib"
    export NLSPATH="/usr/lib/nls/msg/%L/%N:/usr/lib/nls/msg/%L/%N.cat"
    export NLS_LANG="french_France.WE8ISO8859P15"
    export ORACLE_BASE="/oracle"
    export ORACLE_HOME="/oracle/product/10.2"
    export PATH="/oracle/product/10.2/bin:/usr/ccs/bin:/usr/bin:/usr/ucb:/etc:/usr/java5/jre/bin:/usr/java5/bin:.:/etc:/usr/openwin/bin:/usr/local/bin"
    export SHELL="/usr/bin/ksh"
    export TNS_ADMIN="/oracle/network/admin"
    Il y en a peut-être encore qui sont inutiles, je verrais dans le détail plus tard.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme avec script bash SQLplus et Crontab
    Par E LABOUREAU dans le forum Sql*Plus
    Réponses: 5
    Dernier message: 17/06/2013, 15h01
  2. Réponses: 0
    Dernier message: 19/07/2010, 14h32
  3. [Crontab] Executable sqlplus introuvable
    Par Rithy666 dans le forum Linux
    Réponses: 5
    Dernier message: 20/05/2010, 22h53
  4. Appel d'un script sqlplus depuis crontab
    Par crazykangourou dans le forum Outils
    Réponses: 4
    Dernier message: 19/02/2008, 10h55
  5. pb de connexion sqlplus (ORA-12560)
    Par stephbibi dans le forum Oracle
    Réponses: 7
    Dernier message: 21/10/2004, 21h02

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