2008-09-26 9 views
27

का चयन करते समय अपर्याप्त विशेषाधिकार जब मैं एक दृश्य निष्पादित करने का प्रयास करता हूं जिसमें विभिन्न स्कीमा से तालिकाओं को शामिल किया जाता है तो ओआरए -001031 अपर्याप्त विशेषाधिकार फेंक दिया जाता है। इन तालिकाओं में स्कीमा के लिए निष्पादन अनुमति है जहां दृश्य बनाया गया था। अगर मैं दृश्य के एसक्यूएल स्टेटमेंट को निष्पादित करता हूं तो यह काम करता है। मैं क्या खो रहा हूँ?ओआरए -01031:

उत्तर

19

तालिका के स्वामी के रूप में आपको उस उपयोगकर्ता को अंतर्निहित तालिकाओं पर चयन पहुंच प्रदान करने की आवश्यकता है, जिसे आप SELECT कथन चला रहे हैं।

grant SELECT on TABLE_NAME to READ_USERNAME; 
1

दृश्य एक संग्रहीत प्रक्रिया के माध्यम से एक्सेस किया जाता है, पर अमल अनुदान दृश्य को देखने के लिए अपर्याप्त है। आपको स्पष्ट रूप से चयन करना होगा।

35

अंत में मुझे यह काम करने के लिए मिला। स्टीव का जवाब सही है लेकिन सभी मामलों के लिए नहीं। यह विफल रहता है जब उस दृश्य को तीसरे स्कीमा से निष्पादित किया जा रहा है। इसके लिए आपको अनुदान विकल्प जोड़ना होगा:

अनुदान विकल्प के साथ [TABLE_NAME] को [READ_USERNAME] पर अनुदान दें;

इस तरह, [READ_USERNAME] भी दृश्य पर विशेषाधिकार का चयन एक और स्कीमा के

+0

में व्यवसाय करने विशेषाधिकार अनुदान क्या होगा यदि। मुझे यह काम नहीं मिल रहा है हालांकि उपयोगकर्ता को बनाए गए और अंतर्निहित तालिकाओं को देखने के लिए डीबीए द्वारा विशेषाधिकार दिया जाता है। – kinkajou

+1

धन्यवाद, यह अभी भी लोगों की मदद कर रहा है :) – Ilaria

2

प्र प्रदान कर सकते हैं जब "अनुदान विकल्प के साथ" की आवश्यकता है?

ए। जब ​​आपके पास तीसरी स्कीमा से निष्पादित दृश्य होता है।

उदाहरण: स्कीमा DSDSW एक दृश्य VIEW_NAME

a) that view selects from a table in another schema (FDR.balance) 
b) a third shema X_WORK tries to select from that view 

विशिष्ट अनुदान कहा जाता है: अनुदान dsdw.view_name dsdw_select_role करने पर चयन करें; fd को dsdw_select_role अनुदान दें;

लेकिन: fdr dsdw.view_name से गिनती (*) का चयन करें; लाइन 1 पर त्रुटि: ORA-01031: अपर्याप्त विशेषाधिकार

मुद्दा अनुदान:

grant select on fdr.balance to dsdw with grant option; 

अब एफडीआर: चयन गिनती (*) dsdw.view_name से; 5 पंक्तियां

4

मुझे एक रिकैप करने दें।

जब आप विभिन्न मालिकों के ऑब्जेक्ट वाले दृश्य को बनाते हैं, तो उन अन्य मालिकों को दृश्य के मालिक को "अनुदान विकल्प" देना होता है। तो, दृश्य स्वामी अन्य उपयोगकर्ताओं या स्कीमा के लिए प्रदान कर सकते हैं ....

उदाहरण: User_a mine_a नामक एक मेज के मालिक User_b एक मेज yours_b

कहा जाता है के मालिक कहते हैं user_b चाहता है है mine_a की एक में शामिल होने और के साथ एक दृश्य बनाने के लिए yours_b

दृश्य ठीक से काम करने के लिए, user_a "अनुदान mine_a पर चयन अनुदान विकल्प के साथ user_b करने के लिए"

फिर user_b के उस दृश्य पर चयन प्रदान कर सकते हैं देने के लिए है सब लोग।

1

यदि दृश्य संग्रहीत प्रक्रिया के माध्यम से उपयोग किया जाता है, तो निष्पादन अनुदान दृश्य तक पहुंचने के लिए अपर्याप्त है।आपको स्पष्ट रूप से चयन करना होगा।

बस यह

सभी को जनता को अनुदान दें;

0

एक दृश्य का उपयोग करने के लिए, उपयोगकर्ता के पास उचित विशेषाधिकार होना चाहिए लेकिन केवल दृश्य के लिए ही नहीं, इसकी अंतर्निहित वस्तुएं हैं। हालांकि, यदि दृश्य की अंतर्निहित वस्तुओं के लिए एक्सेस विशेषाधिकार हटा दिए जाते हैं, तो उपयोगकर्ता के पास अब तक पहुंच नहीं है। यह व्यवहार तब होता है क्योंकि उपयोगकर्ता द्वारा दृश्य क्वेरी के दौरान उपयोग किया जाने वाला सुरक्षा डोमेन दृश्य के निश्चित है। यदि अंतर्निहित वस्तुओं पर विशेषाधिकार दृश्य के निश्चित से निरस्त हो जाते हैं, तो दृश्य अमान्य हो जाता है, और कोई भी दृश्य का उपयोग नहीं कर सकता है। इसलिए, यदि किसी उपयोगकर्ता को दृश्य तक पहुंच प्रदान की गई है, तो उपयोगकर्ता दृश्य के अंतर्निहित वस्तुओं से निश्चित अधिकारों को निरस्त कर दिया गया है, तो उपयोगकर्ता दृश्य का उपयोग करने में सक्षम नहीं हो सकता है।

ओरेकल प्रलेखन http://docs.oracle.com/cd/B28359_01/network.111/b28531/authorization.htm#DBSEG98017

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