2010-03-18 6 views
5

मैं यह जानना चाहता हूं कि स्कीमा के लिए, और किस तालिका में, किसी भी डेटाबेस डेटाबेस का उपयोग किया जा रहा है या नहीं। क्या किसी भी तरह डेटा डिक्शनरी के माध्यम से यह संभव है?ओरेकल आरडीबीएमएस के लिए पूछताछ में आप किस डेटाबेस लिंक का उपयोग करते हैं, यह कैसे पता लगाते हैं?

क्या यह ओरेकल आरडीबीएमएस के साथ संभव है?

+1

क्या आप डेटा डिक्शनरी को डीबीए उपयोगकर्ता के रूप में एक्सेस करेंगे? सामान्य उपयोगकर्ताओं को आम तौर पर सभी शब्दकोश वस्तुओं तक पहुंच नहीं होती है, इसलिए यह एक महत्वपूर्ण कारक होगा। –

+1

डीबीए उपयोगकर्ता के माध्यम से प्रवेश करना संभव होगा। हालांकि, यदि संभव हो तो मैं इसे सामान्य उपयोगकर्ता के रूप में करना पसंद करता हूं। – JavaRocky

उत्तर

3

यह आपको डेटाबेस पर स्थापित किसी भी डेटाबेस लिंक दिखाएगा:

select * from dba_db_links; 

इसके बाद आप किसी भी प्रश्न या वस्तुओं लिंक संरचना के लिए उनमें से एक पाठ खोज करके डाटाबेस लिंक का उपयोग कर के लिए खोज करने के लिए होता है <tablename>@<dblink name>

+2

यह उल्लेख किया जाना चाहिए कि DBA_DB_LINKS सामान्य उपयोगकर्ताओं के लिए उपलब्ध नहीं होगा जब तक कि O7_DICTIONARY_ACCESSIBILITY = TRUE, और उपयोगकर्ता के पास SELECT_ANY_TABLE है। अन्यथा यह आमतौर पर केवल डीबीए उपयोगकर्ताओं के लिए उपलब्ध होगा। हालांकि, सभी उपयोगकर्ता USER_DB_LINKS तक पहुंच सकते हैं, लेकिन यह केवल तभी पर्याप्त होगा यदि प्रश्न में क्वेरी केवल उपयोगकर्ता की अपनी स्कीमा से dblinks का उपयोग करती है। –

+1

@ चार्ल्स एम: उपयोगकर्ता के विशेषाधिकारों के बारे में अच्छा बिंदु। –

+1

मैं टेक्स्ट खोज नहीं करना पसंद करता हूं। क्या मुझे तालिका संदर्भ बताए जाने के लिए कोई पैकेज उपलब्ध है? मैंने एक नया प्रश्न बनाया है: http://stackoverflow.com/questions/2467735/do-any-parsers-exist-for-the-oracle-dml-table-reference – JavaRocky

1

आपको सबसे पहले एक स्कीमा के सभी एसक्यूएल कोड को संपादित कर सकते हैं: पूर्व:

SELECT DBMS_METADATA.GET_DDL(object_type, object_name, owner) 
    FROM all_OBJECTS 
    WHERE (OWNER = 'your schema name'); 

और उसके बाद परिणाम गपशप खोज db_link का n, जो @dblink_name जैसा दिखता है।

3

मुझे पता है कि डौगमैन द्वारा उत्तर स्वीकार्य और सटीक है। लेकिन यहां कुछ और जानकारी है।

यदि उपयोगकर्ता एक डीबीए उपयोगकर्ता नहीं है, तो उसे DBA_DB_LINKS तक पहुंच नहीं होगी। साथ ही, USER_DB_LINKS वर्तमान उपयोगकर्ता द्वारा बनाए गए डीबी लिंक प्रदर्शित करेगा, ताकि उपयोगकर्ता द्वारा उपयोग किए जाने वाले सभी डीबी लिंक सूचीबद्ध न हों।

उपयोगकर्ता द्वारा एक्सेस किए गए लिंक प्राप्त करने के लिए आप ALL_DB_LINKS का उपयोग कर सकते हैं।

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

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