2010-01-28 11 views
9

Jakie zapytanie można uruchomić, aby sprawdzić, czy użytkownik ma skłonność do wykonania procedury składowanej.Zapytanie oracle, aby znaleźć priveleges w procedurze przechowywanej

powiedzmy użytkownik UserA i przechowywane nazwa procedura jest my_stored_proc

Chcę wiedzieć, czy UserA ma prawo wykonania my_stored_proc

UserA nie jest właścicielem storedproc. Jakiś inny właściciel udziela mu pozwolenia.

Odpowiedz

10

Do rozliczenia dotacji za pośrednictwem roli:

select grantee, table_name, privilege 
    from dba_tab_privs 
    where 
     table_name = 'my_stored_proc' 
     and 
     owner = 'ownerOfObject' 
     and 
     (grantee = 'userA' 
     or 
     grantee in 
      (select granted_role 
     from dba_role_privs 
     where grantee = 'userA' 
      ) 
     ) 
3

można spróbować

select ap.* 
from All_Procedures ap 
where ap.owner = 'UserA' 

To tylko mówi, czy UserA jest właścicielem. Przypuszczam, że UserA może nadal mieć pozwolenie, nawet jeśli nie jest właścicielem. Nie wiem, jak to sprawdzić.

EDIT: Inne stoły do ​​sprawdzenia są

USER_SYS_PRIVS 
USER_TAB_PRIVS 
USER_ROLE_PRIVS 
ROLE_SYS_PRIVS 
ROLE_TAB_PRIVS

ja rzadko pytani są, więc nie jestem dokładnie pewien, jak znaleźć to, czego szukasz, ale chciałbym zacząć z nich .

+0

tak ów moją sprawę. on nie jest właścicielem. jakiś właściciel udziela mu pozwolenia. – Omnipresent

2

Got to ...

SELECT * FROM DBA_TAB_PRIVS A WHERE GRANTEE = 'UserA' AND GRANTOR = 'someoneelse' and privilege = 'EXECUTE' 
+0

dobrze, chyba że granty są przez rolę – dpbradley

Powiązane problemy