Q
Oracle權限
2
A
回答
2
我認爲這應該讓你幾乎所需。 ALL_TAB_PRIVS可用於數據庫中的所有用戶,並列出執行SELECT的用戶擁有權限的所有對象,權限是什麼以及授予誰的權限。我已將它加入到另一個視圖ROLE_TAB_PRIVS中,以查找授予用戶特權的角色(如果有的話)。如果用戶通過角色和直接授權獲得了權限,則列出這兩個權限。
SELECT atp.grantor, atp.privilege,
CASE WHEN NVL(rtp.role,'NULL') <> atp.grantee THEN atp.grantee
ELSE atp.grantee||' (ROLE)'
END grantee, atp.table_name
FROM all_tab_privs atp LEFT JOIN role_tab_privs rtp
ON (atp.table_name = rtp.table_name AND
atp.table_schema = rtp.owner)
WHERE grantor <> 'SYS' /* Optional - filter out SYS owned objects */
UNION ALL
SELECT owner, 'SELECT' /* Assume SELECT */, NULL, view_name||' (VIEW)'
FROM all_views
WHERE owner <> 'SYS' /* Optional - filter out SYS owned views */
ORDER BY 1,3;
編輯:
ALL_TAB_PRIVS是有點用詞不當,因爲它包括PL/SQL可執行對象以及。
編輯2:
看來,這留下了意見。您可以將all_views結果與上述查詢結合起來,以提供您有權訪問的所有視圖,但我現在還不確定如何向您提供授予視圖的確切權限。
一句警告:包括您有權訪問的所有SYS對象會給您一個相當龐大的列表。您可能希望過濾掉屬於SYS的對象,如我在此處所示。
0
這應該讓你想要你想要的,但只適用於該用戶。
select username
, 'ROL' type
, granted_role pv
from user_role_privs
union
select username
, 'PRV' type
, privilege pv
from user_sys_privs
union
select grantee as username
, 'OBJ' type,
regexp_replace(max(decode(privilege,'WRITE','WRITE,'))||
max(decode(privilege,'READ','READ,'))||
max(decode(privilege,'EXECUTE','EXECUTE')),'WRITE,READ,EXECUTE','ALL')||
regexp_replace(max(decode(privilege,'SELECT','SELECT'))||
max(decode(privilege,'DELETE',',DELETE'))||
max(decode(privilege,'UPDATE',',UPDATE'))||
max(decode(privilege,'INSERT',',INSERT')),'SELECT,DELETE,UPDATE,INSERT','ALL')||
' ON '||object_type||' "'||a.owner||'"."'||table_name||'"' pv
from user_tab_privs a
, all_objects b
where a.table_name = b.object_name
and a.owner=b.owner
group by a.owner
, table_name
, object_type
, grantee
union
select grantee AS username
, 'COL' type,
privilege||' ('||column_name||') ON "'||owner||'"."'||table_name||'"' pv
from user_col_privs
where grantee=:usercheck
order by 1
, type
, pv;
相關問題
- 1. oracle表權限
- 2. SSIS打破Oracle權限
- 3. Oracle觸發器權限
- 4. Oracle創建過程權限?
- 5. Oracle - 授予用戶權限
- 6. Oracle alter table權限不足
- 7. Oracle自動授予權限
- 8. Oracle權限授予SQl Plus
- 9. 在oracle中撤銷權限
- 10. ORACLE PL/SQL - GRANT/REVOKE權限
- 11. Oracle授予執行權限
- 12. Oracle分配表權限
- 13. 授予Oracle授予權限
- 14. ORACLE表上的權限
- 15. Oracle 10g權限被吊銷
- 16. 如何授予在Oracle中授予權限的權限
- 17. 檢查Oracle用戶的特定權限
- 18. 外部表的ORACLE目錄權限
- 19. Oracle視圖 - 基表需要的權限?
- 20. oracle 10g中的權限不足
- 21. Oracle 9i統計作業的權限
- 22. 選擇並更新授予權限oracle
- 23. Oracle PL/SQL調試權限影響
- 24. 檢查Oracle中目錄的權限
- 25. 針對CRUD操作的Oracle權限
- 26. 缺少權限Peren,Oracle語法錯誤
- 27. 如何查詢Oracle目錄的權限?
- 28. Oracle對DBA_ROLES的選擇權限
- 29. 添加FK限制(Oracle)時權限不足
- 30. 權限有限
這似乎沒有顯示我已通過角色授予訪問權限的對象,只顯示了我被授予訪問權限的角色。 – DCookie 2011-05-13 18:18:31
嘗試運行查詢並使用角色名稱作爲:usercheck。這是我使用dba *表的一個腳本的修改。對於有限的用戶,您受限於您可以看到的內容,如dba _ * _ privs tables/views。 – 2011-05-13 21:40:06