Oracle sid और database का नाम चेक करना


115

मैं SID और वर्तमान डेटाबेस नाम की जांच करना चाहता हूं।

मैं oracle SID की जाँच के लिए निम्नलिखित क्वेरी का उपयोग कर रहा हूँ

select instance from v$thread;

लेकिन तालिका या दृश्य मौजूद नहीं है त्रुटि आ रही है।

मैं वर्तमान डेटाबेस नाम की जाँच के लिए निम्नलिखित क्वेरी का उपयोग कर रहा हूं

select name from v$database;

लेकिन तालिका या दृश्य मौजूद नहीं है त्रुटि आ रही है।

उपरोक्त दो समस्याओं के लिए कोई विचार?

जवाबों:


148

मुझे लगता है SELECT user FROM dual;कि आपको वर्तमान उपयोगकर्ता देना चाहिए

और SELECT sys_context('userenv','instance_name') FROM dual;उदाहरण का नाम

मुझे विश्वास है कि आप एसआईडी प्राप्त कर सकते हैं SELECT sys_context('USERENV', 'SID') FROM DUAL;


1
त्वरित प्रतिक्रिया के लिए धन्यवाद। एक ही उदाहरण और ओरेकल एक ही बात?
अदनान

2
@ अदनान की जरूरत नहीं है क्योंकि एक ही मशीन पर चलने वाले डीबी के कई उदाहरण हैं, उन्हें SID द्वारा पहचाना जाता है
V4Vendetta

@adnan क्या आपको आवश्यक मान मिले?
V4Vendetta

8
select sys_context('userenv','db_name') from dual;डेटाबेस के नाम और साइड के लिए मैंने पहले ही उत्तर में जोड़ दिया है। आशा है कि यह आपको वह देता है जो आप चाहते हैं
V4Vendetta


57

यदि, मेरी तरह, आपका लक्ष्य डेटाबेस होस्ट और SID प्राप्त करने के लिए Oracle JDBC url, के रूप में है

jdbc:oracle:thin:@<server_host>:1521:<instance_name>

निम्नलिखित आदेश मदद करेंगे:

Oracle क्वेरी कमांड SID (या उदाहरण का नाम) की जांच करने के लिए:

select sys_context('userenv','instance_name') from dual; 

डेटाबेस नाम (या सर्वर होस्ट) की जाँच करने के लिए Oracle क्वेरी कमांड:

select sys_context('userenv', 'server_host') from dual;

Att। सर्जियो मार्सेलो


उत्तम। यह वही है जो मैं जानना चाहता था, लेकिन वाक्यांश को नहीं जानता था।
Addison

मैं भी। धन्यवाद सर्जियो!
horseatingweeds

48

पूर्णता के लिए, आप ORA_DATABASE_NAME का उपयोग कर सकते हैं।

यह ध्यान देने योग्य हो सकता है कि सभी विधियाँ आपको समान आउटपुट नहीं देती हैं:

SQL> select sys_context('userenv','db_name') from dual;

SYS_CONTEXT('USERENV','DB_NAME')
--------------------------------------------------------------------------------
orcl

SQL> select ora_database_name from dual;

ORA_DATABASE_NAME
--------------------------------------------------------------------------------
ORCL.XYZ.COM

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
ORCL.XYZ.COM

उपरोक्त प्रश्नों के लिए किसी विशेष अनुमति की आवश्यकता नहीं है। केवल CONNECT विशेषाधिकार के साथ एक नया उपयोगकर्ता बनाकर सत्यापित किया गया।
bdeem

22

V $ दृश्य मुख्य रूप से सिस्टम मेट्रिक्स के गतिशील विचार हैं। उनका उपयोग प्रदर्शन ट्यूनिंग, सत्र निगरानी आदि के लिए किया जाता है। इसलिए डीबीए उपयोगकर्ताओं के लिए डिफ़ॉल्ट रूप से पहुंच सीमित है, यही कारण है कि आप प्राप्त कर रहे हैं ORA-00942

डेटाबेस नाम खोजने का सबसे आसान तरीका है:

select * from global_name;

यह दृश्य PUBLIC को दिया गया है, इसलिए कोई भी इसे क्वेरी कर सकता है।


Oracle SID के बारे में क्या? क्या स्काउट खाते से इसकी जांच करने की कोई विधि है?
अदनान

1
यह सेवा का नाम है, SID का नहीं।
jpmc26

5

sqlplusकमांड प्रॉम्प्ट पर टाइप करें

SQL> select * from global_name;

तो u कमांड प्रॉम्प्ट पर परिणाम दिखाई देगा

SQL ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM

यहां पहले एक "ओआरसीएल" डेटाबेस का नाम है, हो सकता है कि आपका सिस्टम "एक्सई" हो और अन्य जो ओरेकल डाउनलोडिंग समय पर दिया गया था।


धन्यवाद, आपने मेरा दिन बना दिया।
मुहम्मद आशिकुज़्ज़मान

2

जैसा कि ऊपर बताया गया है,

select global_name from global_name;

जाने का रास्ता है।

आप v $ डेटाबेस / v $ इंस्टेंस / v $ थ्रेड को क्वेरी नहीं कर सकते क्योंकि आपके उपयोगकर्ता के पास आवश्यक अनुमतियां नहीं हैं। आप उन्हें (डीबीए खाते के माध्यम से) अनुदान दे सकते हैं:

grant select on v$database to <username here>;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.