Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/01/2007, 11h54   #1
Invité de passage
 
Inscription : janvier 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 5
Points : 0
Points : 0
Par défaut Lancé un .ksh à partir de la base? possible?

Bonjour,
J'ai une problématique :
je voudrai lancé un fichier .ksh, qui se trouve sur un serveur distant, à partir de la base Oracle. Est-ce qu'il y a un moyen?


merci d'avance
awissam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2007, 14h44   #2
Membre du Club
 
Homme
Intégrateur
Inscription : novembre 2004
Messages : 114
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Intégrateur
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : novembre 2004
Messages : 114
Points : 47
Points : 47
Bonjour,

Rapidement, une solution possible est la suivante :

1. Creer une librairie en C
Le source minimaliste ci-dessous :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int CommandSystem(char *); 
 
int CommandSystem( char * p_cmd) 
{ 
  num = system(p_cmd);
  RETURN num;
}
L'extrait du makefile :
Code :
1
2
3
4
5
6
 
OracleShell:	./OracleShell.c
	-@echo "Generation de la cible <OracleShell.so>..."
	-@cc -v -Aa -O -g -c ./OracleShell.c -o ./OracleShell.o
	-@ld -r -o OracleShell.so OracleShell.o
	-@echo "Fin generation <OracleShell.so>"
2. Declarer un objet librairie avec une fonction

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
CREATE OR REPLACE LIBRARY LIB_SHELL AS '${APPLI_LIB}/OracleShell.so';
/
CREATE OR REPLACE FUNCTION CommandSystem (p_Command IN CHAR) RETURN PLS_INTEGER
AS EXTERNAL
     NAME "CommandSystem"
     LIBRARY LIB_SHELL
     LANGUAGE C
     PARAMETERS ( p_Command STRING);
/
-- Ne pas oublier les grant qui vont bien
GRANT EXECUTE  ...
3. Mettre à jour le fichier listener.ora de l'instance
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
CALLOUT_<INSTANCE> =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
      )
    )
  )
SID_LIST_CALLOUT_<INSTANCE> =
   (SID_LIST =
     (SID_DESC =
       (SID_NAME = <INSTANCE>)
       (ORACLE_HOME = /u00/app/oracle/product/9.2.0)
       (PROGRAM = extproc32)
       (ENVS="EXTPROC_DLLS=ONLY:bla/bla/bla/OracleShell.so")
     )
   )
4. demarrer le listener CALLOUT_<INSTANCE>

5. Sous SQL-PLUS, on peut réaliser le test suivant :
Code :
1
2
 
exec CommandSystem("touch test");
6. Cette commande sera exécutée par le compte propriétaire du process du listener... Donc attention aux droits ... En 1er lieu, celui d'accès à la librairie "OracleShell.so"
cquilgars est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h17.


 
 
 
 
Partenaires

Hébergement Web