หากสิทธิ์นั้นได้รับโดยตรงหรือเข้ากับบทบาทเงินช่วยเหลือจะปรากฏขึ้น DBA_TAB_PRIVS
SELECT grantee, privilege
FROM dba_tab_privs
WHERE owner = 'B'
AND table_name = 'MYPACKAGE'
AND privilege = 'EXECUTE'
หากgranteeบทบาทนั้นคุณจะต้องดูdba_role_privsเพื่อดูว่าผู้ใช้ (หรือบทบาท) ใดที่ได้รับบทบาทนั้นและปฏิบัติตามสายโซ่หากคุณมีบทบาทที่ได้รับบทบาทอื่น หากคุณต้องการบัญชีสำหรับผู้ใช้ที่มีการให้สิทธิ์เนื่องจาก (อันตรายมาก) ANYทุน (เช่นEXECUTE ANY PROCEDURE) นั่นจะต้องใช้แบบสอบถามแยกต่างหาก
หากคุณต้องการที่จะมีความซับซ้อนมากกว่าเพียงแค่ทำแบบสอบถามตรงๆdba_tab_privsคุณอาจจะดีกว่าถ้าใช้สคริปต์ของPete Finniganเช่นwho_has_priv.sql(หรือwho_has_priv_procedure.sql) Pete อาจเป็นผู้เชี่ยวชาญชั้นนำเกี่ยวกับความปลอดภัยของ Oracle ดังนั้นสิ่งเหล่านี้มีแนวโน้มที่จะอธิบายในทุกกรณีที่เป็นไปได้มากกว่าทุกสิ่งที่ฉันจะพยายามทำร่วมกัน