Précédent   Forum du club des développeurs et IT Pro > Bases de données > Oracle > Outils > Sql*Plus
Sql*Plus Forum d'entraide sur Oracle Sql*Plus
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 03/01/2013, 21h32   #1
PyNub
Membre régulier
 
Inscription : mai 2010
Messages : 253
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 253
Points : 95
Points : 95
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
PyNub est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2013, 19h51   #2
PyNub
Membre régulier
 
Inscription : mai 2010
Messages : 253
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 253
Points : 95
Points : 95
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 ...
PyNub est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2013, 20h17   #3
jkofr
Membre éprouvé
 
Avatar de jkofr
 
Homme Jacques Kostic
Senior Consultant DBA (Trivadis SA)
Inscription : octobre 2006
Messages : 369
Détails du profil
Informations personnelles :
Nom : Homme Jacques Kostic
Âge : 44
Localisation : Suisse

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

Informations forums :
Inscription : octobre 2006
Messages : 369
Points : 482
Points : 482
Envoyer un message via MSN à jkofr
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
__________________
OCP 11g, RAC and Performance & Tuning Expert 11g
RMAN Backup & Recovery, Data Guard and Grid Control
jkofr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2013, 20h36   #4
PyNub
Membre régulier
 
Inscription : mai 2010
Messages : 253
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 253
Points : 95
Points : 95
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.
PyNub est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h06.


 
 
 
 
Partenaires

Hébergement Web