मैं ओरेकल एसक्यूएल में एक स्कीमा में सभी तालिकाओं को कैसे सूचीबद्ध करूं?
मैं ओरेकल एसक्यूएल में एक स्कीमा में सभी तालिकाओं को कैसे सूचीबद्ध करूं?
जवाबों:
किसी अन्य स्कीमा में सभी तालिकाओं को देखने के लिए, आपके पास निम्न सिस्टम विशेषाधिकारों में से एक या अधिक होना चाहिए:
SELECT ANY DICTIONARY
(SELECT | INSERT | UPDATE | DELETE) ANY TABLE
या बड़ा-हथौड़ा, डीबीए की भूमिका।
उनमें से किसी के साथ, आप चुन सकते हैं:
SELECT DISTINCT OWNER, OBJECT_NAME
FROM DBA_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
उन सिस्टम विशेषाधिकारों के बिना, आप केवल उन तालिकाओं को देख सकते हैं जिन्हें आपको किसी स्तर तक पहुंच प्रदान की गई है, चाहे सीधे या किसी भूमिका के माध्यम से।
SELECT DISTINCT OWNER, OBJECT_NAME
FROM ALL_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
अंत में, आप हमेशा अपनी खुद की तालिकाओं के लिए डेटा शब्दकोश को क्वेरी कर सकते हैं, क्योंकि आपके टेबल पर आपके अधिकारों को रद्द नहीं किया जा सकता है (10 ग्राम के रूप में):
SELECT DISTINCT OBJECT_NAME
FROM USER_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
DISTINCT
क्वेरी में कोई आवश्यकता नहीं है । owner, object_name
में अद्वितीय हैALL_OBJECTS
owner, object_name
dba_objects में किसी भी तरह से अद्वितीय नहीं है; पैकेज निकाय और पैकेज दोनों उस दृश्य में दिखाई देते हैं, और टेबल्स और इंडेक्स विभिन्न नामस्थानों में होते हैं।
SELECT table_name from all_tables where owner = 'YOURSCHEMA';
आप क्वेरी कर सकते हैं USER_TABLES
select TABLE_NAME from user_tables
यह कोशिश करो, बदलें? अपने स्कीमा नाम के साथ
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA =?
AND TABLE_TYPE = 'BASE TABLE'
यदि आप JDBC (Java) के साथ Oracle एक्सेस कर रहे हैं, तो आप DatabaseMetadata क्लास का उपयोग कर सकते हैं । यदि आप ADO.NET के साथ Oracle एक्सेस कर रहे हैं, तो आप एक समान दृष्टिकोण का उपयोग कर सकते हैं।
यदि आप Oracle को ODBC के साथ एक्सेस कर रहे हैं, तो आप SQLTables फ़ंक्शन का उपयोग कर सकते हैं ।
अन्यथा, यदि आपको SQLPlus या इसी तरह के Oracle क्लाइंट में जानकारी की आवश्यकता है, तो पहले से बताए गए प्रश्नों में से एक करेगा। उदाहरण के लिए:
select TABLE_NAME from user_tables
select * from cat;
यह user_catalog के आपके स्कीमा कैट पर्याय में सभी तालिकाओं को दिखाएगा
यदि आप स्वामी का नाम जानते हैं तो आप सीधे दूसरी क्वेरी चला सकते हैं।
- यदि आप वहां मौजूद सभी मालिकों का चयन कर सकते हैं:
SELECT DISTINCT(owner) from SYS.ALL_TABLES;
-तब आप उस मालिक के अधीन तालिकाओं को देख सकते हैं:
SELECT table_name, owner from all_tables where owner like ('%XYZ%');
डीबी स्कीमा के बारे में कुछ जानकारी दिखाने के लिए मेरी सरल उपयोगिता को देखें। यह आधारित है: Oracle डेटा डिक्शनरी का उपयोग करके एक इंजीनियरिंग मॉडल को उल्टा करना
यदि आपको तालिका का आकार प्राप्त करने की आवश्यकता है, तो यह आसान होगा:
select SEGMENT_NAME, PARTITION_NAME, BYTES from user_segments where SEGMENT_TYPE='TABLE' order by 1
OWNER
स्कीमा के तहत सभी तालिकाओं के लिए तालिका और पंक्तियों के काउंटर का नाम :
SELECT table_name, num_rows counter from DBA_TABLES WHERE owner = 'OWNER'
%_OBJECTS
बजाय इसके उपयोग के अलावा%_TABLES
।