Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Membre habitué
    Inscrit en
    mai 2010
    Messages
    280
    Détails du profil
    Informations forums :
    Inscription : mai 2010
    Messages : 280
    Points : 121
    Points
    121

    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 :
    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

  2. #2
    Membre habitué
    Inscrit en
    mai 2010
    Messages
    280
    Détails du profil
    Informations forums :
    Inscription : mai 2010
    Messages : 280
    Points : 121
    Points
    121

    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 :
    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 :
    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 ...

  3. #3
    Membre chevronné Avatar de jkofr
    Homme Profil pro Jacques Kostic
    Senior Consultant DBA (Trivadis SA)
    Inscrit en
    octobre 2006
    Messages
    484
    Détails du profil
    Informations personnelles :
    Nom : Homme Jacques Kostic
    Âge : 45
    Localisation : Suisse

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

    Informations forums :
    Inscription : octobre 2006
    Messages : 484
    Points : 686
    Points
    686

    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é
    Inscrit en
    mai 2010
    Messages
    280
    Détails du profil
    Informations forums :
    Inscription : mai 2010
    Messages : 280
    Points : 121
    Points
    121

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •