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

ORA-12505, TNS को कैसे ठीक करें:श्रोता को वर्तमान में कनेक्ट डिस्क्रिप्टर में दिए गए SID के बारे में पता नहीं है

इस त्रुटि को ठीक से हल करने और उपयुक्त Oracle डेटाबेस से कनेक्ट करने के लिए, हमें Oracle कैसे व्यवहार करता है और इसलिए, सबसे पहले इस समस्या का कारण क्या है, इस पर थोड़ा विस्तार करने की आवश्यकता होगी।

SIDs बनाम SERVICE_NAMES

Oracle जो SID . के रूप में परिभाषित करता है, उसके बीच (मामूली) अंतर को समझना महत्वपूर्ण है SERVICE_NAME . की तुलना में , क्योंकि हम बाद में इस जानकारी का उपयोग उचित कनेक्शन स्ट्रिंग बनाने के लिए करेंगे।

Oracle में, सिस्टम आइडेंटिफ़ायर (या SID .) ) लंबाई में आठ वर्णों तक का एक स्थानीय पहचानकर्ता है जिसका उपयोग किसी विशेष डेटाबेस की पहचान करने और इसे सिस्टम पर अन्य डेटाबेस से अलग करने के लिए किया जाता है।

अक्सर SID उपसर्ग शब्द है या DB_UNIQUE_NAME जो DB_DOMAIN . से पहले आता है . उदाहरण के लिए, SID हमारे bookstore . के डेटाबेस, जैसा कि पूर्ण global database name . में देखा गया है bookstore.company.com . के ।

SERVICE_NAMES दूसरी ओर, उन नामों का प्रतिनिधित्व करते हैं जिनके द्वारा डेटाबेस इंस्टेंस को जोड़ा जा सकता है। एक SERVICE_NAME आमतौर पर SID . के प्रारूप का पालन करेगा डेटाबेस डोमेन के बाद, जैसे:DB_UNIQUE_NAME.DB_DOMAIN

टीएनएस श्रोता

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

इस ब्रोकर एप्लिकेशन को listener . के नाम से जाना जाता है और यह सुनने . का कार्य करता है आने वाले ग्राहक अनुरोधों के लिए। जब कोई अनुरोध प्राप्त होता है, तो listener प्रक्रियाएं और अग्रेषण जो service handler . का उपयोग करके उपयुक्त Oracle डेटाबेस सर्वर पर अनुरोध करते हैं , जो केवल listener . के बीच संबंध के रूप में कार्य करता है और डेटाबेस सर्वर।

TNS नाम और कॉन्फ़िगरेशन

Oracle डेटाबेस से कनेक्ट करते समय, आमतौर पर आपके डेटाबेस सर्वर में tnsnames.ora . होगा , जो एक कॉन्फ़िगरेशन फ़ाइल है जो सर्वर को NET_SERVICE_NAMES . के बारे में सूचित करती है जो वैध डेटाबेस कनेक्शन हैं। डिफ़ॉल्ट रूप से, यह फ़ाइल ORACLE_HOME/network/admin . पर स्थित होती है ।

उदाहरण के लिए, एक NET_SERVICE_NAME tnsnames.ora . में डिस्क्रिप्टर इस तरह प्रारूपित किया जा सकता है:

myDatabaseNetService =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = tcp)(HOST = localhost)(PORT = 1521)(QUEUESIZE = 100))
    (CONNECT_DATA =
      (SERVICE_NAME = bookstore.company.com)
    )
  )

यह एक NET_SERVICE_NAME को परिभाषित करेगा SERVICE_NAME . का उपयोग करके हमने पहले चर्चा की थी (bookstore.company.com ) और localhost . से कनेक्ट करना पोर्ट के माध्यम से 1521

कनेक्शन स्ट्रिंग

Oracle वास्तव में डेटाबेस से कैसे जुड़ता है, इसके बारे में थोड़ा और ज्ञान के साथ, अब हम देख सकते हैं कि कैसे connection strings स्वरूपित हैं।

TNS नाम/NET_SERVICE_NAME के ​​माध्यम से कनेक्ट करें

NET_SERVICE_NAME के माध्यम से कनेक्ट करते समय जैसा कि आपके tnsnames.ora . में बताया गया है config फ़ाइल में, आपको username . का उपयोग करना चाहिए , password , और फिर NET_SERVICE_NAME . संलग्न करें @ . के साथ प्रतीक, जैसे:

username/password@NET_SERVICE_NAME

इस प्रकार, हमारे पिछले NET_SERVICE_NAME . के लिए उपरोक्त विवरणक, वास्तविक NET_SERVICE_NAME हमने परिभाषित किया था myDatabaseNetService , इसलिए हमारी कनेक्शन स्ट्रिंग कुछ इस तरह दिख सकती है:

john/Hunter2@myDatabaseNetService

SERVICE_NAME के ​​माध्यम से कनेक्ट करें

SERVICE_NAME . के माध्यम से कनेक्ट करते समय , आपको host . भी जोड़ना होगा और port , / . के साथ SERVICE_NAME . से पहले का प्रतीक स्वयं:

username/password@host:port/SERVICE_NAME

SID के द्वारा कनेक्ट करें

अंत में, यदि कॉन्फ़िगर किए बिना कनेक्ट हो रहा है NET_SERVICE_NAME या यहां तक ​​कि SERVICE_NAME , आप ऐसा सीधे SID . के माध्यम से कर सकते हैं : . का उपयोग करके / . के बजाय प्रतीक SERVICE_NAME . के साथ प्रतीक कनेक्शन स्ट्रिंग:

username/password@host:port:SID

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Azure SQL प्रबंधित इंस्टेंस प्रदर्शन संबंधी विचार

  2. ScyllaDB रुझान - उपयोगकर्ता रीयल-टाइम बिग डेटा डेटाबेस को कैसे नियोजित करते हैं

  3. बुरी आदतें :चाबियाँ चुनते समय केवल डिस्क स्थान पर ध्यान केंद्रित करना

  4. डेटाबेस इंडेक्स के स्वास्थ्य का विश्लेषण कैसे करें

  5. मूल SQL क्वेरी