2013-03-16 10 views
8

मेरे पास 3 टेबल तालिका 1, तालिका 2, तालिका 3 है। मैं उपयोगकर्ता को उपयोगकर्ता, उपयोगकर्ता 1 को उदाहरण के लिए (उदाहरण के लिए चयन) देना चाहता हूं।एकाधिक टेबल ऑरैकल पर अनुदान चयन

मुझे पता है कि मैं के साथ प्रदान कर सकते हैं: केवल 1 क्वेरी का उपयोग करने के लिए user1

grant select on table1 to user1; 
grant select on table2 to user1; 
grant select on table3 to user1; 

मैं अनुदान कर सकते हैं 3 टेबल?

धन्यवाद

+0

[एक स्टेटमेंट के साथ कई विशेषताओं और तालिकाओं पर ओरेकल एसक्यूएल प्राइवेज प्रमाणीकरण का संभावित डुप्लिकेट] (http://stackoverflow.com/questions/13106087/oracle-sql-privelege- प्राधिकरण-on-multiple-attributes-and-tables -with-one-st) –

उत्तर

13

सं documentation shows रूप में, आप एक बार में केवल एक वस्तु को पहुंच प्रदान कर सकते हैं।

5

मेरे सुझाव का उपयोग करके किसी भी उपयोगकर्ता के उस भूमिका के माध्यम से का उपयोग कर

grant select on <table_name> to <role_name>; 

तो विशेषाधिकार के उस समूह को असाइन

create role <role_name>; 

का उपयोग कर फिर उस भूमिका के लिए विशेषाधिकार असाइन ओरेकल में भूमिका बनाने के है ...

grant <role_name> to <user_name>...; 
6

आप इसे गतिशील क्वेरी के साथ कर सकते हैं, बस निम्न स्क्रिप्ट को pl-sql या sqlpl में चलाएं हम:

select 'grant select on user_name_owner.'||table_name|| 'to user_name1 ;' from dba_tables t where t.owner='user_name_owner' 

और फिर परिणाम निष्पादित करें।

+0

क्या आपको परिणाम निष्पादित करने के लिए परिणाम कॉपी/पेस्ट करना है? –

0

यह मेरा Oracle डाटाबेस पर मेरे लिए काम किया:

SELECT 'GRANT SELECT, insert, update, delete ON mySchema.' || TABLE_NAME || ' to myUser;' 
FROM  user_tables 
where table_name like 'myTblPrefix%' 

इसके बाद, परिणामों की प्रतिलिपि, उन्हें अपने संपादक में पेस्ट करना, फिर उन्हें एक स्क्रिप्ट की तरह चलाते हैं।

यदि आप अतिरिक्त प्रतिलिपि/पेस्ट चरणों को नहीं चाहते हैं तो आप जेनरेट एसक्यूएल चलाने के लिए एक स्क्रिप्ट भी लिख सकते हैं और "तत्काल निष्पादित करें" का उपयोग कर सकते हैं।

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