2012-03-21 8 views

उत्तर

127

आप इन नीचे दिए गए विचारों को आजमा सकते हैं।

SELECT * FROM USER_SYS_PRIVS; 
SELECT * FROM USER_TAB_PRIVS; 
SELECT * FROM USER_ROLE_PRIVS; 

DBAs और अन्य बिजली उपयोगकर्ताओं विशेषाधिकार ही इन देखे जाने के DBA_ संस्करणों के साथ अन्य उपयोगकर्ताओं के लिए दी गई पा सकते हैं। वे documentation में शामिल हैं।

वे विचार केवल उपयोगकर्ता को प्रदान किए गए विशेषाधिकार दिखाते हैं। ढूँढना सभी भूमिकाओं के माध्यम से परोक्ष रूप से दी गई उन सहित विशेषाधिकार,, की आवश्यकता है और अधिक जटिल पुनरावर्ती SQL कथन:

select * from dba_role_privs connect by prior granted_role = grantee start with grantee = '&USER' order by 1,2,3; 
select * from dba_sys_privs where grantee = '&USER' or grantee in (select granted_role from dba_role_privs connect by prior granted_role = grantee start with grantee = '&USER') order by 1,2,3; 
select * from dba_tab_privs where grantee = '&USER' or grantee in (select granted_role from dba_role_privs connect by prior granted_role = grantee start with grantee = '&USER') order by 1,2,3,4; 
18

विभिन्न कि चारों ओर चल स्क्रिप्ट है कि आप कैसे पागल चाहते हैं पर निर्भर करता है पाने के लिए करना होगा रहे हैं। मैं व्यक्तिगत रूप से पीट फिनिगन के find_all_privs script का उपयोग करता हूं।

यदि आप इसे स्वयं लिखना चाहते हैं, तो क्वेरी बल्कि चुनौतीपूर्ण हो जाती है। उपयोगकर्ताओं को सिस्टम विशेषाधिकार दिए जा सकते हैं जो DBA_SYS_PRIVS में दिखाई दे रहे हैं। उन्हें ऑब्जेक्ट विशेषाधिकार दिए जा सकते हैं जो DBA_TAB_PRIVS में दिखाई दे रहे हैं। और उन्हें DBA_ROLE_PRIVS में दिखाई देने वाली भूमिकाएं दी जा सकती हैं (भूमिकाएं डिफ़ॉल्ट या गैर-डिफ़ॉल्ट हो सकती हैं और पासवर्ड भी आवश्यक हो सकती है, इसलिए सिर्फ इसलिए कि उपयोगकर्ता को भूमिका निभाई गई है, इसका मतलब यह नहीं है कि उपयोगकर्ता विशेषाधिकारों का उपयोग कर सकता है उन्होंने डिफ़ॉल्ट रूप से भूमिका के माध्यम से अधिग्रहण किया)। लेकिन बदले में, उन भूमिकाओं को सिस्टम विशेषाधिकार, ऑब्जेक्ट विशेषाधिकार और अतिरिक्त भूमिकाएं दी जा सकती हैं जिन्हें ROLE_SYS_PRIVS, ROLE_TAB_PRIVS, और ROLE_ROLE_PRIVS पर देखकर देखा जा सकता है। पीट की स्क्रिप्ट उन रिश्तों के माध्यम से चलती है जो उपयोगकर्ता को बहने वाले सभी विशेषाधिकारों को दिखाने के लिए करती हैं।

+0

स्क्रिप्ट भयानक है बस इसे बाहर की जाँच की –

+1

आप UTL_FILE पैकेज के लिए विशेषाधिकार होने चाहिए वरना आपको कोई त्रुटि मिलती है जब पीटे फिनिगन की स्क्रिप्ट चलाने: "पहचानकर्ता 'UTL_FILE' घोषित किया जाना चाहिए"। आप SQL डेवलपर के माध्यम से रोल sysdba के साथ sys के रूप में कनेक्ट कर सकते हैं और फिर यह काम करेगा या स्वयं को इस पैकेज में विशेषाधिकार निष्पादित करेगा: UTL_FILE पर पर अनुदान दें; – Jan

+1

और उनमें से उन लोगों के लिए 'SYS' विशेषाधिकारों के बिना और बस हमारे अपने खाते के विशेषाधिकारों को देखना चाहते हैं, लिपि पूरी तरह से बेकार है। मेरे पास 'UTL_FILE' तक पहुंच नहीं है और न ही 'DBA_SYS_PRIVS' और अन्य' डीबीए' और 'SYS' फ़ील्ड स्क्रिप्ट को देखती हैं। – vapcguy

6

एक अन्य उपयोगी संसाधन:

http://psoug.org/reference/roles.html

  • DBA_SYS_PRIVS
  • DBA_TAB_PRIVS
  • DBA_ROLE_PRIVS
+1

अगर आपके पास 'डीबीए' या' SYS' भूमिकाएं नहीं हैं, और आप बस अपने खाते के विशेषाधिकार ढूंढना चाहते हैं। – vapcguy

2

आप नीचे दिए गए कोड का उपयोग कर सकते सभी उपयोगकर्ताओं से सभी विशेषाधिकारों सूची प्राप्त करने के।

select * from dba_sys_privs 
संबंधित मुद्दे

 संबंधित मुद्दे