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 :

Exécuter un script SQL sur un serveur oracle depuis crontab


Sujet :

Sql*Plus Oracle

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 280
    Points : 149
    Points
    149
    Par défaut Exécuter un script SQL sur un serveur oracle depuis crontab
    Bonjour,

    Je voudrais automatiser l'exécution d'un script sql sur un serveur Oracle sous linux.

    J'ai pensé à faire un crontab, mon problème c'est que je ne sais pas comment écrire une commande capable de lancer le script sachant que j'ai a ma disposition que sqlplus.

    J'ai pensé à faire un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlplus user/passwd < monscript.sql
    ça marche ça ?

    J'ai regardé un peu le man sqlplus (fort succinct au passage...) mais je n'y est trouvé aucune option permettant l'exécution d'un script depuis la ligne de commande.

    Merci pour votre aide
    "Bien qu'on ait du coeur à l'ouvrage,
    L'Art est long et le Temps est court." - CB

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 280
    Points : 149
    Points
    149
    Par défaut
    Je viens d'essayer ...

    La commande sqlplus user/passwd < script.sql

    fonctionne parfaitement dans le shell donc ça doit fonctionner dans cron.

    J'ai vu aussi que Oracle proposer la mise en place de taches planifié avec DBMS_JOB mais j'ai pas tout compris à l'article.
    dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    PROCEDURE submit    ( job       OUT BINARY_INTEGER,
                         what      IN  VARCHAR2,
                         next_date IN  DATE DEFAULT sysdate,
                         interval  IN  VARCHAR2 DEFAULT 'null',
                         no_parse  IN  BOOLEAN DEFAULT FALSE,
    	 				 instance  IN  BINARY_INTEGER DEFAULT any_instance,
    					 force     IN  BOOLEAN DEFAULT FALSE );
    Que faut-il mettre pour what une procédure cataloguée, ou un script sql ?

    De plus j'ai essayé d'en faire une sur le serveur :

    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
    SQL> declare jobno number;
      2  begin
      3  dbms_job.submit(jobno,'Script/testFunc.sql;',trunc(sysdate)+1+9/24,' trunc(sysdate) +1 + 9/24 ' );
      4  commit;
      5  end;
      6  /
    declare jobno number;
    *
    ERREUR a la ligne 1 :
    ORA-06550: Ligne 1, colonne 99 :
    PLS-00103: Symbole "/" rencontre a la place d'un des symboles suivants :
    := . ( @ % ;
    ORA-06512: a "SYS.DBMS_JOB", ligne 82
    ORA-06512: a "SYS.DBMS_JOB", ligne 139
    ORA-06512: a ligne 3

    Apparemment ça marche pas ...
    "Bien qu'on ait du coeur à l'ouvrage,
    L'Art est long et le Temps est court." - CB

  3. #3
    Membre éclairé Avatar de jkofr
    Homme Profil pro
    Senior Consultant DBA (Trivadis SA)
    Inscrit en
    Octobre 2006
    Messages
    484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Suisse

    Informations professionnelles :
    Activité : Senior Consultant DBA (Trivadis SA)
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 484
    Points : 724
    Points
    724
    Par défaut
    Hello,

    Quelle est ta version d'oracle?

    Si tu es en 10g ou 11g tu devrais plutôt utiliser DBMS_SCHEDULER

    Avec dbms_job.submit, seul les packages et ou procédures penvent être exécutés.

    jko
    OCM 11g, RAC and Performance & Tuning Expert 11g
    RMAN Backup & Recovery, Data Guard and Grid Control

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 280
    Points : 149
    Points
    149
    Par défaut
    Bonjour et merci pour la réponse,

    Citation Envoyé par jkofr Voir le message
    Hello,

    Quelle est ta version d'oracle?
    C'est la 11g

    Citation Envoyé par jkofr Voir le message
    Si tu es en 10g ou 11g tu devrais plutôt utiliser DBMS_SCHEDULER

    Avec dbms_job.submit, seul les packages et ou procédures penvent être exécutés.
    Oui en effet ça m'intéresse pas trop de créer un package ou une procédure car le script consiste en une succession de commandes sql basic (en fait un transfert de données entre deux tables).
    Je ne connaissais pas DBMS_SHEDULER je vais me renseigner.
    "Bien qu'on ait du coeur à l'ouvrage,
    L'Art est long et le Temps est court." - CB

Discussions similaires

  1. Exécuter un script python sur le serveur
    Par lesanglier dans le forum Général Python
    Réponses: 2
    Dernier message: 19/12/2013, 09h05
  2. Exécuter un script local sur un serveur
    Par xgopox dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 05/10/2011, 14h55
  3. Réponses: 0
    Dernier message: 23/11/2009, 17h05
  4. Script Bash pour exécuter requete SQL sur une base Oracle
    Par Flipmode dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 28/11/2008, 17h18
  5. Réponses: 0
    Dernier message: 27/11/2007, 14h37

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