ORA-12514 TNS: श्रोता वर्तमान में कनेक्ट डिस्क्रिप्टर में मांगी गई सेवा के बारे में नहीं जानते हैं


226

हमारे पास स्थानीय रूप से एक एप्लिकेशन चल रहा है जहां हम निम्नलिखित त्रुटि का सामना कर रहे हैं:

ORA-12514: TNS: श्रोता वर्तमान में कनेक्ट डिस्क्रिप्टर में मांगी गई सेवा के बारे में नहीं जानते हैं

मैंने कनेक्शन का परीक्षण किया है TNSPingजिसका उपयोग सही तरीके से किया गया है और मैंने SQLPlusकनेक्ट करने का प्रयास करने की कोशिश की, जो ऊपर दिए गए उसी त्रुटि के साथ विफल हो गया। मैंने इसके लिए इस सिंटैक्स का उपयोग किया है SQLPlus:

sqlplus username/password@addressname[or host name]

हमने सत्यापित किया है कि:

  • सर्वर पर TNS श्रोता चल रहा है।
  • सर्वर पर ओरेकल ही चल रहा है।

हम इस पर्यावरण के लिए किए गए किसी भी बदलाव के बारे में नहीं जानते हैं। कुछ और हम परीक्षण कर सकते हैं?


2
क्या है TNSPing कमांड (परम के साथ) जो आपने उपयोग किया था?
ग्रेजोगोरज़ डब्ल्यू

जब आप कहते हैं "स्थानीय रूप से चल रहा है" तो आपका मतलब है कि एप्लिकेशन उसी होस्ट पर डेटाबेस से कनेक्ट हो रहा है? इसके अलावा, आपकी sqlnet.ora फ़ाइल की सामग्री क्या है? sqlplus और tnsping के लिए कौन से संस्करण रिपोर्ट किए गए हैं, और क्या आप सुनिश्चित हैं कि वे उसी ORACLE_HOME में हैं?
डेविड एल्ड्रिज

1
डेटाबेस को पुनरारंभ करने का प्रयास करें। चूंकि वे स्टार्टअप पर अपने अस्तित्व के बारे में श्रोता को सूचित करना चाहते थे, इसलिए यह आपकी समस्या को ठीक कर सकता है।
जेन्स शॉडर

1
डेटाबेस को पुनः आरंभ करने की तुलना में ALTER SYSTEM REGISTER कम कठोर है।
डीसीयूकी

जवाबों:


209

मैं इस मुद्दे पर था और ठीक यकीन में बनाने के लिए था अपने डेटाबेस में एक वैध सेवा का नाम है। मान्य सेवा नामों का पता लगाने के लिए, आप oracle में निम्नलिखित क्वेरी का उपयोग कर सकते हैं:tnsnames.oraSERVICE_NAME

select value from v$parameter where name='service_names'

एक बार मैंने इसे अपडेट tnsnames.oraकिया:

TEST =
   (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = *<validhost>*)(PORT = *<validport>*))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = *<servicenamefromDB>*)
    )
)

फिर मैं भागा:

sqlplus user@TEST

सफलता! श्रोता मूल रूप से आपको बता रहे हैं कि आप जो भी सेवा_नाम का उपयोग कर रहे हैं वह डीबी के अनुसार मान्य सेवा नहीं है।

(* मैं Win7 क्लाइंट वर्कस्टेशन से रिमोट डीबी तक sqlplus चला रहा था और DBA को दोष देता हूं;) *)


2
Win7 पर,% ORACLE_HOME% \ NETWORK \ ADMIN \ tnsnames.ora
ब्रैड रिप सिप

198
अगर मैं इसे कनेक्ट करने में सक्षम नहीं हूं तो मुझे डीबी को कैसे क्वेरी करना चाहिए?
इसाबेल मार्ट्ज़

2
क्या आप सीधे DB सर्वर पर ssh कर सकते हैं और वहाँ से sqlplus चला सकते हैं?
ब्रैड रिप्पे

1
एक ही मशीन पर कई क्लाइंट / सर्वर होने या इस्तेमाल होने पर ऐसा नहीं हो सकता है। (tnsping उस निर्देशिका के स्थान का उपयोग करता है, जिसका उपयोग करता है) - मेरे मामले में, श्रोता.ओरा उस निर्देशिका में एक पुराने डेटाबेस उदाहरण से संबंधित जानकारी रखता है जिसे मैंने अनइंस्टॉल कर दिया था - त्वरित और गंदे तरीके से श्रोता की पूरी सामग्री को कॉपी करना था। ओरेकल एक्सप्रेस की मेरी वर्तमान स्थापना, उस अन्य निर्देशिका के लिए जो श्रोता की जाँच करती प्रतीत होती है (मुझे लगता है कि मैंने इसे एक रजिस्ट्री या कुछ और के माध्यम से बदल दिया है, और इसका ORACLE_HOME (?) पर पूर्वता है
hello_earth

8
ORA-00942: तालिका या दृश्य मौजूद नहीं है
टॉमी होल्मन

44

मुझे पता है कि यह एक पुराना सवाल है, लेकिन फिर भी अनुत्तरित है। मुझे अनुसंधान में एक दिन लगा, लेकिन मुझे सबसे सरल समाधान मिला, कम से कम मेरे मामले में (विंडोज 2008 आर 2 पर ओरेकल 11.2) और साझा करना चाहता था।

त्रुटि, यदि सीधे देखा जाए, तो यह दर्शाता है कि श्रोता सेवा नाम को नहीं पहचानता है। लेकिन यह सेवा के नाम कहां रखता है? में%ORACLE_HOME%\NETWORK\ADMIN\listener.ora

"SID_LIST" सिर्फ इतना है कि, SIDs और सेवा नामों की एक सूची प्रारूप में जोड़ी जाती है जिसे आप कॉपी या देख सकते हैं।

मैंने समस्या सेवा नाम जोड़ा, फिर विंडोज "सर्विसेज" कंट्रोल पैनल में, मैंने ओरेकल श्रोता सेवा पर "पुनरारंभ" किया। अब सब ठीक है।


उदाहरण के लिए, आपकी श्रोता .ora फ़ाइल शुरू में दिख सकती है:

# listener.ora Network Configuration File: C:\app\oracle_user\product\12.1.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\app\oracle_user\product\12.1.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\oracle_user\product\12.1.0\dbhome_1\bin\oraclr12.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

... और इसे सेवा नाम पहचानने के लिए orcl, आप इसे इसमें बदल सकते हैं:

# listener.ora Network Configuration File: C:\app\oracle_user\product\12.1.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\app\oracle_user\product\12.1.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\oracle_user\product\12.1.0\dbhome_1\bin\oraclr12.dll")
    )
    (SID_DESC = 
        (GLOBAL_DBNAME = orcl)
        (ORACLE_HOME = C:\app\oracle_user\product\12.1.0\dbhome_1)
        (SID_NAME = orcl)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

3
listener.oraनाम कैसे संग्रहीत करता है, इस सिंटैक्स के साथ इस उत्तर को अपडेट करने की आवश्यकता है । मेरे पास listener.oraफाइल भी नहीं है । मैं SQL डेवलपर चलाने वाले क्लाइंट वर्कस्टेशन पर भी हूं और त्रुटि मिलने पर सिर्फ एक डेटाबेस लिंक बनाने की कोशिश कर रहा हूं। मैं पुनः आरंभ करने के लिए एक Oracle श्रोता सेवा नहीं है।
vapcguy

vapcguy, आपको डेटाबेस सर्वर पर होना चाहिए। ऐसा लगता है कि आप क्लाइंट पर हैं
यूसुफ अर्गेनियो

नेट प्रबंधक को शामिल करने वाले सिपाही के निर्देशों का पालन करने के बाद, मैंने देखा कि मेरे श्रोताओं.ोरा फ़ाइल को एक नई SID_LI प्रविष्टि को अद्यतन करने के लिए अद्यतन किया गया था। मैंने इस उत्तर को वाक्य रचना के पहले और बाद के उदाहरण को शामिल करने के लिए संपादित किया है, पाठकों के लाभ के लिए जो नेट मैनेजर का उपयोग नहीं कर सकते हैं, जो भी कारण हो।
केविन

12

मैं Windows Server 2008 R2 और Oracle 11g पर यह समस्या थी

नेट मैनेजर> श्रोता> चुनिंदा डेटाबेस सेवाओं पर जाएं कंघी का निर्माण करें> "ग्लोबल डेटाबेस का नाम" "SID" के समान होना चाहिए और "Oracle होम निर्देशिका" सही होना चाहिए।

यदि आपके पास डेटाबेस सेवाओं के लिए कोई प्रविष्टि नहीं है, तो एक बनाएं और सही वैश्विक डेटाबेस, sidऔर ऑरेकल होम सेट करें ।


12

मेरी परिस्थितियों में त्रुटि इस तथ्य के कारण थी कि श्रोता के पास डीबी की सेवा पंजीकृत नहीं थी। मैंने सेवाओं को पंजीकृत करके इसे हल किया। उदाहरण:

मेरा वर्णनकर्ता tnsnames.ora:

LOCALDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = LOCALDB)
    )
  )

इसलिए, मैं सेवा को listener.oraमैन्युअल रूप से पंजीकृत करने के लिए आगे बढ़ता हूं :

SID_LIST_LISTENER =
    (SID_DESC =
      (GLOBAL_DBNAME = LOCALDB)
      (ORACLE_HOME = C:\Oracle\product\11.2.0\dbhome_1)
      (SID_NAME = LOCALDB)
    )

अंत में, श्रोता को कमांड द्वारा पुनः आरंभ करें:

> lsnrctl stop
> lsnrctl start

किया हुआ!


8

OracleServiceXXX को सर्विसेज से शुरू करके। Windows में मेरे लिए काम किया।


विंडोज़ में, यदि आप Oracle रिलीज़ 12.x का उपयोग कर रहे हैं, तो सुनिश्चित करें कि OracleServiceORCL सेवा चल रही है। यदि यह सेवा शुरू नहीं हुई है, तो आपको भी वही त्रुटि कोड प्राप्त होगा।
सड़क हॉक

5

यह वास्तव में ब्रैड रिप्पे के उत्तर के लिए एक टिप्पणी होनी चाहिए , लेकिन अफसोस, पर्याप्त प्रतिनिधि नहीं। उस जवाब से मुझे वहां 90% रास्ते मिल गए। मेरे मामले में, डेटाबेस की स्थापना और विन्यास ने डेटाबेस के लिए tnsnames.ora फ़ाइल में प्रविष्टियाँ डाल दीं जो मैं चला रहा था। सबसे पहले, मैं पर्यावरण चर (विंडोज) सेट करके डेटाबेस से कनेक्ट करने में सक्षम था:

set ORACLE_SID=mydatabase
set ORACLE_HOME=C:\Oracle\product\11.2.0\dbhome_1

और फिर का उपयोग कर कनेक्ट

sqlplus / as sysdba

अगला, ब्रैड रिप्पे के उत्तर से कमान चलाना:

select value from v$parameter where name='service_names';

दिखाया कि नाम बिल्कुल मेल नहीं खाते। मूल रूप से Oracle के डेटाबेस कॉन्फ़िगरेशन सहायक का उपयोग करके बनाई गई प्रविष्टियाँ:

MYDATABASE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = mylaptop.mydomain.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = mydatabase.mydomain.com)
    )
  ) 

क्वेरी से सेवा का नाम केवल के mydatabaseबजाय था mydatabase.mydomain.com। मैंने tnsnames.ora फ़ाइल को बिना डोमेन नाम के सिर्फ आधार नाम में संपादित किया ताकि वे इस तरह दिखें:

MYDATABASE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = mylaptop.mydomain.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = mydatabase)
    )
  ) 

मैंने TNS श्रोता सेवा को पुनः आरंभ किया (मैं अक्सर सेवा नियंत्रण पैनल के बजाय एक प्रशासक कमांड विंडो [या विंडोज पॉवर्सशेल] का उपयोग करता हूं lsnrctl stopऔर करता हूं lsnrctl start, लेकिन दोनों काम करते हैं।) उसके बाद, मैं कनेक्ट करने में सक्षम था।


4

मुझे भी यही समस्या थी। मेरे लिए, सिर्फ लेखन

sqlplus myusername/mypassword@localhost

चाल चली, ऐसा करने से यह डिफ़ॉल्ट सेवा नाम से जुड़ता है, मुझे लगता है।


1
इस त्रुटि के कारण हमारे कनेक्शन स्ट्रिंग के साथ एक समान समस्या थी। हम कनेक्शन स्ट्रिंग के साथ Oracle के JDBC पतले ड्राइवर का उपयोग कर कनेक्ट कर रहे थे jdbc:oracle:thin:@//localhost:1521/orcl:। इस त्रुटि को समाप्त करने के लिए सही कनेक्शन स्ट्रिंग थी jdbc:oracle:thin:@localhost:1521:।
dan

यह निर्भर करता है कि क्या यह काम करेगा - मुझे लगता है कि कनेक्ट करने का यह तरीका, अन्य लोगों द्वारा कही गई बातों को देखते हुए, पूरी तरह से श्रोता को दरकिनार करते हुए, SID के बजाय कंप्यूटर होस्ट नाम का उपयोग करना है - कनेक्ट करने के इस तरीके से तृतीय-पक्ष क्लाइंट में समस्याएँ उत्पन्न होती हैं, - मुझे लगता है यह केवल तभी काम करता है जब EZCONNECT को sqlnet.ora में निर्दिष्ट किया जाता है: NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT)
hello_earth

3

मेरे लिए जो काम किया गया था वह वास्तव में सरल था, मुझे बस "विंडोज सर्विसेज" में सेवा शुरू करने की आवश्यकता थी (cmd ट्रॉमप्ट में services.msc)। मेरा सेवा नाम है: OracleServiceXXXXX।


मेरे मामले में, हालांकि स्टार्टअप प्रकार स्वचालित पर सेट है, यह तब शुरू नहीं होता है जब मशीन बूट होती है। मैन्युअल रूप से "OracleServiceXE" सेवा शुरू करने के बाद, यह DB और APEX (Oracle Application Express) वेबपेज से जुड़ने के लिए Oracle डाटाबेस 11g एक्सप्रेस के लिए काम करता है।
इवान चौ

2

डेटाबेस देखने के लिए जाँच करें। सर्वर पर लॉग ऑन करें, अपने डेटाबेस SID के लिए ORACLE_SID पर्यावरण चर सेट करें, और स्थानीय कनेक्शन के रूप में SQL * प्लस चलाएं।


यह वास्तव में मेरी समस्या थी। हमारे डेटाबेस को एक वीएम पर होस्ट किया गया है जो डीपी का उपयोग करने वाले दूसरे प्रोग्राम का उपयोग करने का प्रयास करते समय नीचे था। इस धागे को देखने के बाद मुझे एहसास हुआ कि शायद वह नीचे था।
Sh4d0wsPlyr

2

यह त्रुटि तब हो सकती है जब कोई एप्लिकेशन हर डेटाबेस इंटरैक्शन के लिए एक नया कनेक्शन बनाता है या कनेक्शन ठीक से बंद नहीं होते हैं। इस पर नज़र रखने और पुष्टि करने के लिए नि: शुल्क उपकरण में से एक Oracle Sql डेवलपर है (हालांकि यह एकमात्र उपकरण नहीं है जिसका उपयोग आप डीबी सत्रों की निगरानी के लिए कर सकते हैं)।

आप oracle site Sql Developer से टूल डाउनलोड कर सकते हैं

यहां आपको सत्रों की निगरानी करने का एक स्क्रीनशॉट दिया गया है। (यदि आप ORA-12514 त्रुटि को देखते समय अपने एप्लिकेशन उपयोगकर्ता के लिए कई सत्रों को देखते हैं तो यह एक अच्छा संकेत है कि आपको कनेक्शन पूल समस्या हो सकती है)।

यहां छवि विवरण दर्ज करें


2

मैंने इस समस्या को अपने मशीन / आईपी / मेजबानों की फाइल में अपडेट करते हुए अपने लिनक्स एनवायरमेंट में हल किया।

आप अपना नेटवर्क IP (इनसेट एंड) सत्यापित कर सकते हैं:

$ifconfig

देखें कि क्या आपका IP / etc / मेजबान फ़ाइल के साथ मेल खाता है:

$cat /etc/hosts

अपनी / etc / मेजबान फ़ाइल संपादित करें, यदि nedded:

$sudo gedit /etc/hosts

अलविदा।


2
यह पुराना है, लेकिन यह आपके आईपी को / etc / host में जोड़ने के लिए बहुत मायने नहीं रखता है। OP, SERVICE_NAME को याद नहीं कर रहा है, अन्य सामान काफी असंबंधित है
ओस्टैप

मैंने अपना IP / etc / host में नहीं जोड़ा है। मैंने इसे सही किया। जैसा कि आप इस विषय में देख सकते हैं, इस प्रश्न को हल करने के लिए कई मान्य (upvote के साथ) उत्तर और किस्में हैं। अगर उस उत्तर ने आपकी मदद नहीं की, तो क्यों अपमान किया? यह उत्तर अभी भी किसी की मदद कर सकता है क्योंकि इसने मेरी मदद की।
सर्जियो एमसी फिगयूरेडो

2

उन लोगों के लिए जो वीएम में ओरेकल को चला सकते हैं (मेरे जैसे) मैंने इस मुद्दे को देखा क्योंकि मेरा वीएम मेमोरी से बाहर चल रहा था, जिससे लगता है कि ओरेकल को शुरू होने / सही ढंग से चलने से रोका गया था। मेरी VM मेमोरी को बढ़ाना और समस्या को फिर से निर्धारित करना।


2

यहां बहुत सारे उत्तर हैं, लेकिन यहां कोड के साथ एक कार्यशील उदाहरण दिया गया है जिसे आप कॉपी और पेस्ट कर सकते हैं और तुरंत परीक्षण कर सकते हैं:

मेरे लिए त्रुटि 12514 को सही SERVICE_NAME निर्दिष्ट करने के बाद हल किया गया था। आपको लगता है कि फ़ाइल में सर्वर पर tnsnames.oraजो 3 पूर्वनिर्धारित सेवा नामों के साथ आता है (उनमें से एक "एक्सई" है)।

  1. मैंने Oracle Express डेटाबेस OracleXE112 स्थापित किया है जो पहले से ही कुछ प्रीइंस्टॉल्ड डेमो टेबल के साथ आता है।
  2. जब आप इंस्टॉलर शुरू करते हैं तो आपसे पासवर्ड मांगा जाता है। मैंने पासवर्ड के रूप में "xxx" दर्ज किया। (उत्पादन में उपयोग नहीं किया गया)
  3. मेरा सर्वर 192.168.1.158 मशीन पर चलता है
  4. सर्वर पर आपको Windows फ़ायरवॉल में TNSLSNR.exe प्रक्रिया के लिए स्पष्ट रूप से एक्सेस की अनुमति देनी चाहिए। यह प्रक्रिया पोर्ट 1521 पर सुनती है।
  5. विकल्प A: C # (.NET2 या .NET4) के लिए आप ODAC11 डाउनलोड कर सकते हैं , जिसमें से आपको अपनी परियोजना में Oracle.DataAccess.dll जोड़ना होगा। इसके अतिरिक्त यह DLL इस पर निर्भर करता है: OROps11w.dll, oci.dll, oraociei11.d.d (130MB!), Msvcr80.dll। ये DLLs EXE रूप में एक ही निर्देशिका में होना चाहिए या आप में DLL पथ उल्लेख करना होगा: HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\ODP.NET\4.112.4.0\DllPath। 64 बिट मशीनों पर इसके अतिरिक्त लिखते हैंHKLM\SOFTWARE\Wow6432Node\Oracle\...
  6. विकल्प B: यदि आपने ODAC12 डाउनलोड किया है, तो आपको Oracle.DataAccess.dll , OROps12w.dll, oci.dll, oraociei12.dll (160MB!), Oraons.dll, msvcx100.dll की आवश्यकता होगी। रजिस्ट्री रास्ता हैHKEY_LOCAL_MACHINE\SOFTWARE\Oracle\ODP.NET\4.121.2.0\DllPath
  7. विकल्प C: यदि आप 100 एमबी से अधिक के विशाल डीएलएल नहीं चाहते हैं तो आपको ODP.NET_Managed12.xxxxxxxx.zip डाउनलोड करना चाहिए जिसमें आप पाते हैं Oracle.ManagedDataAccess.dllकि जो केवल 4 एमबी का है और एक शुद्ध प्रबंधित DLL है जो 32 बिट और 64 बिट प्रक्रियाओं में काम करता है के रूप में अच्छी तरह से और कोई अन्य DLL पर निर्भर करता है और किसी भी रजिस्ट्री प्रविष्टियों की आवश्यकता नहीं है।
  8. निम्नलिखित C # कोड मेरे लिए सर्वर साइड पर किसी भी कॉन्फ़िगरेशन के बिना काम करता है (बस डिफ़ॉल्ट स्थापना):
Oracle.DataAccess.Client का उपयोग करना;
या
Oracle.ManagedDataAccess.Client का उपयोग करना;

....

स्ट्रिंग oradb = "डेटा स्रोत = (विवरण ="
    + "(ADDRESS_LIST = (ADDRESS = = PROTOCOL = TCP) (HOST = 192.168.1.158) (पोर्ट = 1521))"
    + "(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE))";
    + "उपयोगकर्ता आईडी = प्रणाली; पासवर्ड = xxx;"

उपयोग करना (OracleConnection con = new OracleConnection (oradb)) 
{
    conn.Open ();
    का उपयोग कर (OracleCommand cmd = new OracleCommand ())
    {
        cmd.Connection = कॉन;
        cmd.CommandText = "DBA_DATA_FILES से TABLESPACE_NAME का चयन करें";

        (OracleDataReader dr = cmd.ExecuteReader ()) का उपयोग कर
        {
            जबकि (dr.Read) ()
            {
                listBox.Items.Add (डॉ [ "TABLESPACE_NAME"]);
            }
        }
    }
}

यदि SERVICE_NAME=XEगलत है तो आपको 12514 त्रुटि मिलती SERVICE_NAMEहै। वैकल्पिक है। आप इसे दूर भी छोड़ सकते हैं।


बहुत बहुत धन्यवाद, आपके समाधान से मुझे चाल मिली, मेरे मामले में, यह एंटी-वायरस था जो प्रोग्राम को अवरुद्ध कर रहा था, इसलिए ओरेकल डीबी से एक कनेक्शन प्राप्त करने में सक्षम नहीं था।
रोबोट_लीन

2

मैंने भी इसी समस्या का सामना किया था और इसे खोदने के लिए 3 दिन बिताए थे।

यह आपकी गलत TNS सेवा प्रविष्टि के कारण होता है।

पहले जांचें कि आप sql> sqlplus sys@orastand as sysdba( orastandएक स्टैंडबाय डेटाबेस) का उपयोग करके प्राथमिक डेटाबेस से स्टैंडबाय डेटाबेस से कनेक्ट करने में सक्षम हैं या नहीं ।

अगर आप कनेक्ट नहीं कर पा रहे हैं तो यह सर्विस की समस्या है। प्राथमिक अंत में TNS फ़ाइल में सेवा नाम की प्रविष्टि को ठीक करें।

उसी तरह से स्टैंडबाय डेटाबेस की जाँच करें। यदि आवश्यक हो तो यहां भी बदलाव करें।

सुनिश्चित करें कि log_archive_dest_2पैरामीटर में सही सेवा का नाम है।


1

मुझे वही त्रुटि मिली क्योंकि निर्दिष्ट दूरस्थ SID गलत थी:

 > sqlplus $DATASOURCE_USERNAME/$DATASOURCE_PASSWORD@$DB_SERVER_URL/$REMOTE_SID 

मैंने सिस्टम डेटाबेस को समझा:

global_name से * का चयन करें;

और मेरा रिमोट SID ("XE") मिला।

तब मैं बिना किसी समस्या के जुड़ सकता था।


0

मेरे मामले में डेटाबेस डिस्क स्थान से बाहर चला गया था। जिसके कारण इसका कोई जवाब नहीं आया। एक बार जब मैंने उस मुद्दे को साफ कर दिया तो सब कुछ फिर से काम कर गया।


मैं यह कैसे पता लगा सकता हूं?
कोडस्लेव

0

मेरे लिए यह इंस्टॉलेशन का उपयोग करके डायनामिक आईपैड का उपयोग करने के कारण हुआ। मैंने ओरेकल को एक स्थिर आईपैड का उपयोग करके पुनः स्थापित किया और तब सब कुछ ठीक था


0

वीएम को बहाल करना मेरे लिए काम कर गया



0

tnslsnr ऊपर है, लेकिन डेटाबेस नीचे है।

ओरेकल नौसिखिया के लिए यह स्पष्ट नहीं है कि कनेक्शन स्वीकार किए जाने के दौरान डेटाबेस नीचे हो सकता है।

मुझे उस तरह से मैन्युअल रूप से डेटाबेस शुरू करना था

su - oracle
export ORACLE_SID=XE
sqlplus sys as sysdba

और फिर sql कंसोल में

startup

मेरे मामले में मैं स्टार्टअप में विफल रहा, लेकिन एक और त्रुटि संदेश मिला और एक समस्या का स्रोत मिला - मुझे होस्ट नाम बदलना पड़ा और फिर डेटाबेस ऑटो स्टार्टअप फिर से कार्यात्मक था।


0

मैंने इस समस्या को हल करने के लिए वर्कअराउंड के नीचे लागू किया है।

  1. मैंने कमांड प्रॉम्प्ट का उपयोग करके ORACLE_HOME सेट किया है (राइट क्लिक cmd.exe और Run as System एडमिनिस्ट्रेटर)।

  2. कमांड के नीचे उपयोग किया जाता है

    set oracle_home="path to the oracle home"

  3. सभी कार्यक्रमों पर जाएं -> Oracle -ora home1 -> कॉन्फ़िगरेशन माइग्रेशन टूल -> नेट मैनेजर -> श्रोता

  4. ड्रॉपडाउन से डेटाबेस सेवाओं का चयन करें। ग्लोबल डेटाबेस का नाम और SID दोनों एक ही हैं (ORCL मेरे मामले में)। Oracle होम निर्देशिका सेट करें।

ओरेकल नेट मैनेजर ओरेकल प्रलेखन से खिड़की उदाहरण: ओरेकल नेट मैनेजर उदाहरण

  1. फ़ाइल पर क्लिक करें और नेटवर्क कॉन्फ़िगरेशन को सहेजें।

0

समस्या यह थी कि मेरे कनेक्शन स्ट्रिंग यूआरएल में SID के बजाय डेटाबेस का नाम था। ओरेकल डेटाबेस कनेक्शन के साथ डेटाबेस का नाम बदलना SID ने इस समस्या को हल किया।

अपने oracle SID को जानने के लिए आप tnsnames.oraफ़ाइल ब्राउज़ कर सकते हैं।

XE वास्तविक SID था, तो यह है कि मेरा tomcat कनेक्शन स्ट्रिंग अब कैसा दिखता है:

    <Resource
       name="jdbc/my_db_conn"
       auth="Container"
       type="javax.sql.DataSource"
       driverClassName="oracle.jdbc.driver.OracleDriver"
       url="jdbc:oracle:thin:@//127.0.0.1:1521/XE"
       username="test_user"
       password="test" />

मेरा सर्वर संस्करण "Oracle 11.2 एक्सप्रेस" था, लेकिन समाधान अन्य संस्करणों पर भी काम करना चाहिए।


0

मेरे मामले में, tnsnames.ora फ़ाइल में SERVICE_NAME के ​​चारों ओर के राउंड ब्रैकेट गायब थे ।

<DBNAME> =
  (DESCRIPTION =
    (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL=TCP)(HOST = nupark-cnvr-ora )(PORT=1521))
    )
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = <DBNAME> ***CLOSING ROUND BRACKET WAS MISSING HERE***
    )
  )

LISTENER_<DBNAME> =

  (ADDRESS = (PROTOCOL = TCP)(HOST = nupark-cnvr-ora)(PORT = 1521))

0

कनेक्शन के लिए जो लोग स्प्रिंग-बूट और जेडडीबी का उपयोग कर रहे हैं, उनके लिए। Application.properties में jdbcUrl लिखते समय आपको सावधान रहना होगा

डेटाबेस कनेक्शन में SID के साथ - source.datasource.jdbcUrl = jdbc:oracle:thin:@[HOST][:PORT]:SID

Db कनेक्शन में सेवा नाम के साथ globe.datasource.jdbcUrl = jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE

यह मेरे लिए काम :)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.