6
我需要找出哪些模式已被授予對Oracle 10g數據庫(在這種情況下,一個包)中的某個對象的執行權限。我做這件事最簡單的方法是什麼?是否有內置函數來提供這些信息?如何檢查哪個模式已授予Oracle對象的EXECUTE權限?
我需要找出哪些模式已被授予對Oracle 10g數據庫(在這種情況下,一個包)中的某個對象的執行權限。我做這件事最簡單的方法是什麼?是否有內置函數來提供這些信息?如何檢查哪個模式已授予Oracle對象的EXECUTE權限?
SELECT grantee
FROM all_tab_privs
WHERE table_name = '<your object name>'
AND privilege = 'EXECUTE'
AND grantor = '<object owner>';
是的,我知道它說「table_name」,但它也適用於可執行對象。表DBA_TAB_PRIVS也適用。您需要適當的權限(例如,DBA角色,SELECT ANY TALBE)才能從這些視圖中進行選擇並查看所有數據。
迴應馬丁的評論......以上是最簡單的方法來做你所要求的,我知道的。如果你想將其限制在包,試試這個:
SELECT * FROM all_tab_privs JOIN all_objects ON (table_name = object_name)
WHERE table_name = '<your object name>'
AND object_type = 'PACKAGE'
AND privilege = 'EXECUTE'
AND grantor = '<object owner>';
我要麼更多的東西一般情況下,或包裝特殊情況後居然... – MPritchard 2009-08-10 15:09:23
所有被原諒!良好的舊oracle和它的系統表的無廢話命名:) – MPritchard 2009-08-10 15:14:10
lol,all_tab_privs是這個表的一個可怕的名字 – Reimius 2013-11-05 21:35:21