Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

दृश्य बनाते समय ORA-00942 त्रुटि उत्पन्न हो रही है

दृश्य बनाते समय किसी समस्या के निदान में पहला कदम select . का प्रयास करना है अपने आप भाग। इस मामले में आपको अभी भी ORA-00942 त्रुटि मिलेगी, लेकिन समस्या अब केवल एक क्वेरी और एक्सेस समस्या है और विशेष रूप से दृश्य के साथ नहीं है।

जब आपको ORA-00942 मिलता है:टेबल या व्यू मौजूद नहीं है , ऐसा इसलिए है क्योंकि या तो:

  1. आपके द्वारा लिखा गया तालिका या दृश्य नाम वास्तव में मौजूद नहीं है।

    • स्पेलिंग चेक करें - हो सकता है कि कोई टाइपो हो।

    • क्या आप उस डेटाबेस से जुड़े हैं जहां यह मौजूद है? शायद आप एक ऐसे परीक्षण सिस्टम पर हैं जिसमें यह नहीं है।

    • क्वेरी dba_objects यह देखने के लिए कि तालिका किसी अन्य स्कीमा में मौजूद है या नहीं। (यदि आपके पास dba_objects, all_objects क्वेरी करने का विशेषाधिकार नहीं है वह सब कुछ सूचीबद्ध करता है जिसे देखने की आपके पास अनुमति है, जो कुछ मदद हो सकती है।)

  2. यह वास्तव में मौजूद है, लेकिन यह किसी अन्य स्कीमा में है।
    उस स्थिति में, दो संभावित समस्याएं हो सकती हैं:

    • आपको इसे पूछने की अनुमति नहीं है। तालिका के स्वामी को grant read on xyz की आवश्यकता है (xyz . के लिए वास्तविक तालिका नाम को प्रतिस्थापित करें ) या तो

      • आप

      • public (यदि आप चाहते हैं कि हर कोई डेटा देख सके, हमेशा सलाह नहीं दी जाती)

      • a भूमिका जो आपके पास है (लेकिन संग्रहित PL/SQL या दृश्यों , हालांकि, यह संभव है कि आप अपनी भूमिका के कारण किसी अन्य स्कीमा में तालिका को क्वेरी कर सकते हैं, लेकिन फिर भी इसका उपयोग करने वाली एक दृश्य या प्रक्रिया बनाने में सक्षम नहीं हैं।)

    • आपको स्कीमा निर्दिष्ट करने की आवश्यकता है। मान लें कि आप REGIONS से पूछताछ करना चाहते हैं HR में तालिका लेकिन आप SCOTT . के रूप में जुड़े हुए हैं . यदि आप केवल select * from regions यह SCOTT.REGIONS की तलाश करेगा , जो मौजूद नहीं है। इसे ठीक करने के लिए, निम्न में से कोई एक कार्य करें:

      • hr.regions . का उपयोग करें आपकी क्वेरी में स्पष्ट रूप से।

      • अपने स्कीमा में, create or replace synonym regions for hr.regions;
        अब जब भी आप regions का संदर्भ लें , डेटाबेस स्वचालित रूप से hr.regions . पर पुनर्निर्देशित हो जाएगा ।

      • सार्वजनिक समानार्थी शब्द बनाने की अनुमति के साथ किसी भी स्कीमा में:
        create or replace public synonym regions for hr.regions;
        अब डेटाबेस से जुड़ने वाले प्रत्येक व्यक्ति के पास regions . का कोई भी संदर्भ होगा hr.regions . पर रीडायरेक्ट किया गया , जो हमेशा एक अच्छा विचार नहीं है, लेकिन वैसे भी यह एक विकल्प है।

      • alter session set current_schema = hr;
        अब ऑब्जेक्ट के नामों को हल करने के लिए डिफ़ॉल्ट स्कीमा HR है और वह नहीं जिसे आपने लॉग इन किया था। उन अनुप्रयोगों के लिए जो हमेशा तालिकाओं के स्वामी से भिन्न उपयोगकर्ता के रूप में लॉग इन करते हैं, आप एक लॉगऑन ट्रिगर के बाद तो यह हमेशा सेट होता है। तब वे केवल regions . का उल्लेख कर सकते हैं आदि बिना किसी स्कीमा को निर्दिष्ट किए और बिना किसी समानार्थी शब्द के।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. oracle11g . में पैरामीटरयुक्त दृश्य बनाना

  2. Oracle में लीप सेकंड्स को कैसे हैंडल करें

  3. Oracle डेटाबेस में BLOB की तुलना अन्य BLOB से करें

  4. जावा में कनेक्शन पूलिंग कैसे करें?

  5. क्लॉज द्वारा ऑर्डर के साथ संयोजन में ओरेकल एसक्यूएल स्टेटमेंट में राउनम का उपयोग करना