Bonjour tout le monde,
je voudrai savoir si il existe un moyen sous PL/SQL qui nous permet de connaitre une taille d'un repertoire
sachant que ma BDD est sous Linux
merci d'avance
Bonjour tout le monde,
je voudrai savoir si il existe un moyen sous PL/SQL qui nous permet de connaitre une taille d'un repertoire
sachant que ma BDD est sous Linux
merci d'avance
Quand on est sous SQL*Plus par exemple, on peut lancer une commande Unix ou Windows en faisant
HOST ls
ou
! ls
les mots clés HOST et ! disant à Oracle :exécute une commande du serveur (host) de la base de données.
Est-ce que ces commandes sont prises en compte en PL/SQL? Aucune idée mais ça vaut la peine de creuser cette piste.
As-tu la commande Unix pour avoir la taille du répertoire?
DBA Oracle
Rédacteur du blog : dbaoraclesql.canalblog.com
Concernant les commandes, oui je les ai, moi je voulais exécuter en quelque sorte ces commandes via PL/SQL, en affichant des message sous forme de DBMS_OUTPU.PUT_Line....
merci
Voici une solution proposée par Oracle mais ça implique Java aussi.
http://www.oracle.com/technetwork/da...1-1-129519.pdf
DBA Oracle
Rédacteur du blog : dbaoraclesql.canalblog.com
Autre solution, mais pas forcément plus simple, utiliser DBMS_SCHEDULER.
Je copie/colle ici un test que j'avais fait pour un client en 2015.
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 Lancer un job de type commande Unix DBMS_SCHEDULER permet de lancer une commande Unix en spécifiant EXECUTABLE comme job_type. Exemple : stocker toutes les 10 secondes la valeur de la date système Unix dans le fichier /tmp/date.log. Attention, pour lancer une commande Unix sous Oracle, il faut lancer le shell Unix dans une nouvelle instance et passer la commande en argument avec la procédure DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE : job_name : nom du job auquel passer un argument argument_position : position de l'argument dans le job argument_value : valeur de l'argument Le job à exécuter par Oracle est : /bin/sh -c /bin/date>>/tmp/date.log avec /bin/sh -c : lancement d'une nouvelle instance du bash unix (sans -c, une instance shell doit déjà être lancée; il est plus sur d'utiliser l'option -c) /bin/date>>/tmp/date.log : lancement de la commande unix avec son chemin absolu pour enregistrer la date système Unix dans un fichier Le code PL/SQL est : BEGIN DBMS_SCHEDULER.CREATE_JOB( job_name => 'TEST', job_type => 'EXECUTABLE', repeat_interval => 'FREQ=SECONDLY;INTERVAL=10', job_action => '/bin/sh', number_of_arguments => 2 ); DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE ( job_name => 'TEST', argument_position => 1, argument_value => '-c' ); DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE ( job_name => 'TEST', argument_position => 2, argument_value => '/bin/date>>/tmp/date.log' ); DBMS_SCHEDULER.ENABLE('TEST'); END; /
DBA Oracle
Rédacteur du blog : dbaoraclesql.canalblog.com
Avec DBMS_PREPROCESSOR peut-être :
http://www.oracle-developer.net/display.php?id=513
Email : http://scr.im/waldar
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager