1
問題:我正在研究一個將生成所有Oracle用戶列表的查詢。我希望在查詢中確定它們是否具有CONNECT
和APPUSER
的特定授予權限並將它們顯示在一個表中。檢查Oracle用戶的特定權限
我曾嘗試:我使用一個表,DBA_ROLE_PRIVS
。此表顯示了我需要的所有信息,但未能正確查詢。我可以告訴誰擁有權限的所有用戶Connect
有:
SELECT GRANTEE as "User Name", granted_role as "Connect"
FROM DBA_ROLE_PRIVS
WHERE GRANTED_ROLE='CONNECT';
我也可以顯示誰有權APPUSER
用戶,只需通過更換APPUSER
CONNECT
。
我的問題是在一個查詢中顯示兩個權限。我嘗試過使用不同的JOIN
s。但是,使用這似乎需要兩個表或更多。我研究過一個「自我加入」,但不知道如何使用兩個WHERE
子句。我已經試過的東西,如:
SELECT grantee as "User Name", t1.granted_role as "Connect", t2.granted_role as "APPUSER"
FROM t1.DBA_ROLE_PRIVS join t2.DBA_ROLE_PRIVS on t1.GRANTEE = t2.GRANTEE
WHERE t1.GRANTED_ROLE='CONNECT' and t2.GRANTED_ROLE='APP_USER';
我想我最終的查詢顯示是這樣的:
User Name Connect App User
---------- ---------- ----------
Bob CONNECT APPUSER
Sue APPUSER
Nick CONNECT APPUSER
Rob CONNECT
這確實結合了我的兩個查詢,我感謝你。但是,它仍然會列出兩次「Bob」和「Nick」,並且只有兩列。我真的想找到一種有三排的方式。首先是用戶名,如果他們擁有'連接'權限,則持續用戶擁有'應用用戶'權限。 –
根據您的需要更新了答案。我已經寫在記事本檢查任何語法錯字,它應該工作 – Panther
我已經更新了你的答案,我正確地產生答案的東西。它似乎只顯示擁有'CONNECT'和'APPUSER'權限的用戶。它不會僅向用戶顯示一項權利。謝謝@Panther –