LINUX ORACLE CRONTAB

Bonjour,

J'ai un serveur Oracle sous Linux, j'ai fais un script de sauvegarde de base.Le script fonctionne sans problème.Mon soucis est quand je j'essaye de la mettre en crontab:

Voilà mon script:


#!/bin/sh
log='/home/oracle/log/'
suffixe=$(date +%y%m%d)

cd /home/oracle/sauvegarde_oracle
exp login/mdp file=save.dmp full=y compress=n
echo sauvegarde $suffixe >> $log/log_oarcle.txt
mv save.dmp /home/oracle/test/



Donc mon soucis c'est que quand je l'execute en crontab il me met EXP commande not found..Pourtant je l'utilise avec le user ORACLE ayant droit..

Je conprend pas, si quelqu'un à une idée, d'avance merci.
Configuration: DEBIAN-ORACLE 9

7 réponses

  1. Contributeur
    Salut,

    Si tu essayes avec "/usr/bin/expr" au lieu de "expr" tout court, est-ce que c'est mieux ?

    Fait de même avec "date" (qui doit être sous "/bin/date") et "mv" ("/bin/mv").

    Vérifie les chemins complets avec la commande "which" ou "whereis", si tu n'es pas sûr.

    Dal
    1. Merci pour te réponse, j'ai un autre message maintenant, je pense qu'il n'arrive pas à exporter..C'est un casse tête...Voilà le message:

      Sortie de la commande /home/oracle/save_oracle.sh ..

      Message 206 not found; No message file for product=RDBMS, facility=EXP: Release 9.2.0.7.0 - Production on Thu Oct 26 12:45:48 2006

      Copyright (c) 1982, 2002, Oracl

      Invalid format of Export utility name

      Verify that ORACLE_HOME is properly set

      Export terminated unsuccessfully

      EXP-00000: Message 0 not found; No message file for product=RDBMS, facility=EXPmv: cannot stat `save.dmp': No such file or directory

      MErci..
      1. Contributeur
        Re,

        Verify that ORACLE_HOME is properly set

        Cette variable d'environnement ne doit pas être initialisée dans l'environnement dans lequel cron tourne.

        fais

        echo $ORACLE_HOME

        pour savoir ce qu'elle est sensée contenir

        Tu peux ensuite fixer cette valeur dans ta crontab, avant les entrées de la crontab elles-mêmes.

        ORACLE_HOME = /le/resultat/

        Dal
        1. Merci,

          Donc l'environement dans lequel tourne cron doit etre root je supose??
          Toutes les variables liées à Oracle sont defini pour l'utilisateur oracle..J'ai rajouté dans le fichier /etc/crontab la variable ORACLE_HOME, mais j'ai toujours le même message d'erreur..

          Merci pour tes reponses,
          Seb.
          1. Merci,

            Donc l'environement dans lequel tourne cron doit etre root je supose??
            Toutes les variables liées à Oracle sont defini pour l'utilisateur oracle..J'ai rajouté dans le fichier /etc/crontab la variable ORACLE_HOME, mais j'ai toujours le même message d'erreur..

            Merci pour tes reponses,
            Seb.
            1. Je me suis trompé j'ai un autre message d'erreur:

              Sortie de la commande save_oracle.sh ..

              Export: Release 9.2.0.7.0 - Production on Thu Oct 26 17:01:23 2006

              Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

              EXP-00056: ORACLE error 7217 encountered
              ORA-07217: sltln: environment variable cannot be evaluated.
              Username:
              EXP-00030: Unexpected End-Of-File encountered while reading input
              EXP-00000: Export terminated unsuccessfully
              mv: cannot stat `save.dmp': No such file or directory
              1. Contributeur
                Re :)

                Donc l'environement dans lequel tourne cron doit etre root je supose??
                Toutes les variables liées à Oracle sont defini pour l'utilisateur oracle..J'ai rajouté dans le fichier /etc/crontab la variable ORACLE_HOME, mais j'ai toujours le même message d'erreur..


                Remet /etc/crontab en état.

                Puisque ton script est sensé être lancé par un user "oracle", tu devrais utiliser la crontab de ce user. Il sera alors lancé avec les droits de ce user.

                su - oracle
                crontab -e


                Celà te place dans la crontab de ce user avec l'éditeur texte par défaut (vi sauf cas particulier).

                Outre ton entrée de crontab lançant ton script, tu y rajoutes les variables d'environnement préalables qui sont nécessaires à ton script pour fonctionner.

                Après avoir sauvegardé et quitté l'éditeur, la commande crontab va mettre à jour immédiatement l'entrée sans qu'il soit nécessaire d'arrêter et redémarrer le démon. Tu devrais avoir un message te le confirmant :

                crontab: installing new crontab

                Sinon, sur ceci :

                sltln: environment variable cannot be evaluated

                Visiblement, tu as d'autres variables qui te manquent.

                Sous ton user "oracle" tape :

                env

                Et voit un peu de quoi tu peux avoir besoin.

                Dal