Jika hak istimewa telah diberikan secara langsung atau ke suatu peran, hibah akan muncul di DBA_TAB_PRIVS
SELECT grantee, privilege
FROM dba_tab_privs
WHERE owner = 'B'
AND table_name = 'MYPACKAGE'
AND privilege = 'EXECUTE'
Jika grantee
peran adalah, maka Anda perlu melihat dba_role_privs
untuk melihat apa pengguna (atau peran) telah diberikan peran itu dan mengikuti rantai jika Anda memiliki peran yang diberikan kepada peran lain. Jika Anda perlu memperhitungkan pengguna yang memiliki hibah karena hibah (sangat berbahaya) ANY
(yaitu EXECUTE ANY PROCEDURE
), itu akan memerlukan kueri terpisah.
Namun, jika Anda ingin menjadi lebih canggih daripada sekadar melakukan query langsung dba_tab_privs
, Anda mungkin lebih baik menggunakan skrip Pete Finnigan seperti who_has_priv.sql
(atau who_has_priv_procedure.sql
). Pete mungkin adalah pakar terkemuka dalam keamanan Oracle, jadi ini jauh lebih mungkin untuk memperhitungkan setiap kasus sudut yang mungkin daripada apa pun yang saya coba gabungkan bersama.