Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour 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 31/03/2011, 15h28   #1
Membre du Club
 
Inscription : février 2004
Messages : 116
Détails du profil
Informations personnelles :
Localisation : France, Maine et Loire (Pays de la Loire)

Informations forums :
Inscription : février 2004
Messages : 116
Points : 56
Points : 56
Par défaut [9i] Alter system kill session dans une procédure stockée

Bonjour à tous

Je souhaite faire un alter system kill session dans une procédure stockée.

si je me connecte avec un user DBA et que je fais un alter system kill session sous SQL+ à la main, là pas de souci le kill se fait bien.

Lorsque je souhaite utiliser une procédure stockée avec un execute immediate alter system kill session, il me dit que je n'ai pas les droit. Le lance exec de la procédure avec le user créateur en DBA.

Le code de ma procédure :

Code :
1
2
3
4
5
 
CREATE OR REPLACE PROCEDURE OPS$PROJET.p_kill_user (wsid IN number, wserial IN number) IS
BEGIN    
   EXECUTE IMMEDIATE 'alter system kill session '''||wsid||','||wserial||''' IMMEDIATE';
END p_kill_user;
voici l'erreur :

Code :
1
2
3
4
ERROR at line 1:
ORA-01031: insufficient privileges
ORA-06512: at "OPS$PROJET.P_KILL_USER", line 32
ORA-06512: at line 1
Merci d'avance pour le coup de main
gaultier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 18h33   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
En PL/SQL les privilèges doivent être accordé directement et non pas via un rôle
Regardez
Code :
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
Connecté à :
Oracle DATABASE 11g Enterprise Edition Release 11.2.0.1.0 - Production
WITH the Partitioning, OLAP, DATA Mining AND Real Application Testing options
 
mni@DIANA> CREATE user test IDENTIFIED BY test
  2  DEFAULT tablespace USERS
  3  TEMPORARY tablespace TEMP
  4  /
 
Utilisateur créé.
 
mni@DIANA> GRANT dba TO test
  2  /
 
Autorisation de privilèges (GRANT) acceptée.
 
mni@DIANA> connect test/test
Connecté.
test@DIANA> ALTER system FLUSH shared_pool;
 
Système modifié.
 
test@DIANA> CREATE OR REPLACE PROCEDURE p_flush (wsid IN number, wserial IN number) IS
  2  BEGIN
  3     EXECUTE IMMEDIATE 'alter system flush shared_pool';
  4  END;
  5  /
 
Procédure créée.
 
test@DIANA> SHOW err
Pas d'erreur. (')
test@DIANA> exec p_flush(0,0);
BEGIN p_flush(0,0); END;
 
*
ERREUR à la ligne 1 :
ORA-01031: privilèges insuffisants
ORA-06512: à "TEST.P_FLUSH", ligne 3
ORA-06512: à ligne 1
 
 
test@DIANA> connect mni/mni
Connecté.
mni@DIANA> GRANT ALTER system TO test;
 
Autorisation de privilèges (GRANT) acceptée.
 
mni@DIANA> connect test/test
Connecté.
 
test@DIANA> exec p_flush(0,0);
 
Procédure PL/SQL terminée avec succès.
 
test@DIANA>
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/04/2011, 16h39   #3
Membre du Club
 
Inscription : février 2004
Messages : 116
Détails du profil
Informations personnelles :
Localisation : France, Maine et Loire (Pays de la Loire)

Informations forums :
Inscription : février 2004
Messages : 116
Points : 56
Points : 56
Bonjour

Merci pour cette info.

Je ne savais pas. Je teste la semaine prochaine et je vous donne un retour.
gaultier 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 03h55.


 
 
 
 
Partenaires

Hébergement Web